Skip to content

Commit a745e67

Browse files
committed
feat(mcp): enhance MCPToolManager to support custom config paths and improve config loading
1 parent 2385c59 commit a745e67

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

backend/modules/mcp_tools/client.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,38 @@ def __init__(self, config_path: Optional[str] = None):
2727
# Use config manager to get config path
2828
app_settings = config_manager.app_settings
2929
overrides_root = Path(app_settings.app_config_overrides)
30-
30+
3131
# If relative, resolve from project root
3232
if not overrides_root.is_absolute():
3333
# This file is in backend/modules/mcp_tools/client.py
3434
backend_root = Path(__file__).parent.parent.parent
3535
project_root = backend_root.parent
3636
overrides_root = project_root / overrides_root
37-
37+
3838
candidate = overrides_root / "mcp.json"
3939
if not candidate.exists():
4040
# Legacy fallback
4141
candidate = Path("backend/configfilesadmin/mcp.json")
4242
if not candidate.exists():
4343
candidate = Path("backend/configfiles/mcp.json")
4444
self.config_path = str(candidate)
45+
# Use default config manager when no path specified
46+
mcp_config = config_manager.mcp_config
47+
self.servers_config = {name: server.model_dump() for name, server in mcp_config.servers.items()}
4548
else:
49+
# Load config from the specified path
4650
self.config_path = config_path
47-
mcp_config = config_manager.mcp_config
48-
self.servers_config = {name: server.model_dump() for name, server in mcp_config.servers.items()}
51+
config_file = Path(config_path)
52+
if config_file.exists():
53+
from modules.config.config_manager import MCPConfig
54+
data = json.loads(config_file.read_text())
55+
# Convert flat structure to nested structure for Pydantic
56+
servers_data = {"servers": data}
57+
mcp_config = MCPConfig(**servers_data)
58+
self.servers_config = {name: server.model_dump() for name, server in mcp_config.servers.items()}
59+
else:
60+
logger.warning(f"Custom config path specified but file not found: {config_path}")
61+
self.servers_config = {}
4962
self.clients = {}
5063
self.available_tools = {}
5164
self.available_prompts = {}

0 commit comments

Comments
 (0)