fix: fallback to real server when built-ins disabled
This commit is contained in:
parent
6199f28e9e
commit
4b14d45e28
|
|
@ -116,9 +116,30 @@ class MCPBrowser:
|
|||
|
||||
# Determine which server to use
|
||||
server_name = self._server_name or self.config.default_server
|
||||
if not server_name or server_name not in self.config.servers:
|
||||
if not server_name:
|
||||
raise ValueError("No default MCP server configured")
|
||||
|
||||
if server_name not in self.config.servers:
|
||||
raise ValueError(f"Server '{server_name}' not found in configuration")
|
||||
|
||||
# If built-ins are disabled but the selected server is builtin-only,
|
||||
# fall back to the first enabled non-builtin server if available.
|
||||
if (not self._enable_builtin_servers) and server_name == "builtin-only":
|
||||
fallback_name = next(
|
||||
(
|
||||
name for name, cfg in self.config.servers.items()
|
||||
if name != "builtin-only" and cfg.enabled
|
||||
),
|
||||
None
|
||||
)
|
||||
if fallback_name:
|
||||
self.logger.info(
|
||||
"Built-in servers disabled; falling back to '%s' instead of 'builtin-only'",
|
||||
fallback_name,
|
||||
)
|
||||
server_name = fallback_name
|
||||
self._server_name = fallback_name
|
||||
|
||||
server_config = self.config.servers[server_name]
|
||||
if self._transport_override:
|
||||
self._apply_transport_override(server_config)
|
||||
|
|
@ -418,12 +439,16 @@ class MCPBrowser:
|
|||
if self.server:
|
||||
tools_response = await self.server.send_request("tools/list", {})
|
||||
|
||||
if "error" in tools_response:
|
||||
raise RuntimeError(f"Failed to list tools: {tools_response['error']}")
|
||||
# Normalize response structure
|
||||
tools_data = None
|
||||
if isinstance(tools_response, dict):
|
||||
if "tools" in tools_response:
|
||||
tools_data = tools_response["tools"]
|
||||
elif "result" in tools_response and isinstance(tools_response["result"], dict):
|
||||
tools_data = tools_response["result"].get("tools")
|
||||
|
||||
# Update registry with tools
|
||||
if "result" in tools_response and "tools" in tools_response["result"]:
|
||||
self.registry.update_tools(tools_response["result"]["tools"])
|
||||
if tools_data:
|
||||
self.registry.update_tools(tools_data)
|
||||
|
||||
# Also get tools from multi-server if enabled
|
||||
if self.multi_server:
|
||||
|
|
|
|||
Loading…
Reference in New Issue