fix(mcp): skip prefix lookup when a server has no listed tools

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
yucheng 2026-09-11 02:27:19 +00:00
parent e9c654869f
commit d5b8effa99
2 changed files with 4 additions and 1 deletions

View file

@ -5139,7 +5139,9 @@ class MCPServerManager:
return prefixed_tools
def get_listed_tool(self, server: MCPServer, name: str) -> MCPTool | None:
listed: Final = self._listed_tools_by_server_id.get(server.server_id, {})
listed: Final = self._listed_tools_by_server_id.get(server.server_id)
if not listed:
return None
return listed.get(name) or listed.get(strip_known_server_prefix(name, server))
def _create_prefixed_prompts(

View file

@ -48,6 +48,7 @@ def _bare_manager() -> MOD.MCPServerManager:
reaches the guardrail hooks; they have their own coverage elsewhere.
"""
mgr = MOD.MCPServerManager.__new__(MOD.MCPServerManager)
mgr._listed_tools_by_server_id = {}
mgr.check_allowed_or_banned_tools = lambda name, server: True
mgr.validate_allowed_params = lambda tool_name, arguments, server: None