This commit is contained in:
devin-ai-integration[bot] 2026-08-27 19:02:13 -05:00 committed by GitHub
commit cff42004d0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 40 additions and 0 deletions

View file

@ -2136,6 +2136,8 @@ class MCPServerManager:
extra_headers=server_config.get("extra_headers", None),
allowed_tools=server_config.get("allowed_tools", None),
disallowed_tools=server_config.get("disallowed_tools", None),
tool_name_to_display_name=server_config.get("tool_name_to_display_name", None),
tool_name_to_description=server_config.get("tool_name_to_description", None),
allowed_params=server_config.get("allowed_params", None),
access_groups=server_config.get("access_groups", None),
static_headers=server_config.get("static_headers", None),

View file

@ -422,6 +422,44 @@ class TestMCPServerManager:
assert server.alias == "friendly_alias"
assert server.server_name == "validserver"
@pytest.mark.asyncio
async def test_load_servers_from_config_preserves_tool_name_overrides(self):
"""Display-name/description overrides declared in config.yaml must survive the yaml load
path, replace the prefixed name in tools/list, and reverse-map for tools/call routing."""
from litellm.proxy._experimental.mcp_server.server import (
_resolve_display_name_to_original,
apply_tool_overrides,
)
from litellm.proxy._experimental.mcp_server.utils import (
add_server_prefix_to_name,
get_server_prefix,
)
manager = MCPServerManager()
await manager.load_servers_from_config(
{
"example_server": {
"url": "https://example.com/mcp",
"transport": MCPTransport.http,
"tool_name_to_display_name": {"example_tool": "renamed_tool"},
"tool_name_to_description": {"example_tool": "overridden description"},
}
}
)
server = next(iter(manager.config_mcp_servers.values()))
assert server.tool_name_to_display_name == {"example_tool": "renamed_tool"}
assert server.tool_name_to_description == {"example_tool": "overridden description"}
prefixed_name = add_server_prefix_to_name("example_tool", get_server_prefix(server))
(overridden,) = apply_tool_overrides(
[MCPTool(name=prefixed_name, description="upstream description", inputSchema={})],
server,
)
assert overridden.name == "renamed_tool"
assert overridden.description == "overridden description"
assert _resolve_display_name_to_original("renamed_tool", [server]) == prefixed_name
def _oauth2_config(self, **overrides):
base = {
"url": "https://example.com/mcp",