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
|
# Determine which server to use
|
||||||
server_name = self._server_name or self.config.default_server
|
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")
|
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]
|
server_config = self.config.servers[server_name]
|
||||||
if self._transport_override:
|
if self._transport_override:
|
||||||
self._apply_transport_override(server_config)
|
self._apply_transport_override(server_config)
|
||||||
|
|
@ -418,12 +439,16 @@ class MCPBrowser:
|
||||||
if self.server:
|
if self.server:
|
||||||
tools_response = await self.server.send_request("tools/list", {})
|
tools_response = await self.server.send_request("tools/list", {})
|
||||||
|
|
||||||
if "error" in tools_response:
|
# Normalize response structure
|
||||||
raise RuntimeError(f"Failed to list tools: {tools_response['error']}")
|
tools_data = None
|
||||||
|
if isinstance(tools_response, dict):
|
||||||
# Update registry with tools
|
if "tools" in tools_response:
|
||||||
if "result" in tools_response and "tools" in tools_response["result"]:
|
tools_data = tools_response["tools"]
|
||||||
self.registry.update_tools(tools_response["result"]["tools"])
|
elif "result" in tools_response and isinstance(tools_response["result"], dict):
|
||||||
|
tools_data = tools_response["result"].get("tools")
|
||||||
|
|
||||||
|
if tools_data:
|
||||||
|
self.registry.update_tools(tools_data)
|
||||||
|
|
||||||
# Also get tools from multi-server if enabled
|
# Also get tools from multi-server if enabled
|
||||||
if self.multi_server:
|
if self.multi_server:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue