diff --git a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py index f95ce632771..db9d30713b5 100644 --- a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py +++ b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py @@ -7134,14 +7134,15 @@ class MCPServerManager: if tool_name in self.tool_name_to_mcp_server_name_mapping: server_name: Final = self.tool_name_to_mcp_server_name_mapping[tool_name] normalised_lookup: Final = normalize_server_name(server_name) - candidate: MCPServer | None = None - if normalised_lookup in prefix_to_server: - candidate = prefix_to_server[normalised_lookup] - else: - for server in registry_servers: - if normalize_server_name(server.name) == normalised_lookup: - candidate = server - break + registry_prefix_hit: Final = prefix_to_server.get(normalised_lookup) + registry_candidate: Final = ( + registry_prefix_hit + if registry_prefix_hit is not None + else next( + (server for server in registry_servers if normalize_server_name(server.name) == normalised_lookup), + None, + ) + ) # The bare-name mapping is keyed off each server's own tool # names, so any server may claim an arbitrary bare-name key. A # name that carries a prefix-qualified wire form of a *different* @@ -7149,16 +7150,14 @@ class MCPServerManager: # branch: an attacker server advertising e.g. "github-delete_repo" # otherwise shadows the prefix-qualified github tool (and bypasses # its per-tool ACL) (R2-23). - if candidate is not None: + if registry_candidate is not None: foreign_prefixes: Final = tuple( known_prefix for known_prefix, mapped_server in prefix_to_server.items() - if mapped_server is not candidate + if mapped_server is not registry_candidate ) - if match_known_server_prefix(tool_name, foreign_prefixes) is not None: - candidate = None - if candidate is not None: - return candidate + if match_known_server_prefix(tool_name, foreign_prefixes) is None: + return registry_candidate # If not found and tool name is prefixed, extract the prefix and # match against any known form.