|
22 | 22 | normalize_vector, |
23 | 23 | ) |
24 | 24 | from cecli.helpers.skills import SkillsManager |
25 | | -from cecli.mcp import LocalServer |
| 25 | +from cecli.mcp import LocalServer, McpServerManager |
26 | 26 | from cecli.repo import ANY_GIT_ERROR |
27 | 27 | from cecli.tools.utils.registry import ToolRegistry |
28 | 28 |
|
@@ -197,14 +197,17 @@ async def initialize_mcp_tools(self): |
197 | 197 | local_tools = self.get_local_tool_schemas() |
198 | 198 | if not local_tools: |
199 | 199 | return |
| 200 | + |
200 | 201 | local_server_config = {"name": server_name} |
201 | 202 | local_server = LocalServer(local_server_config) |
202 | | - if not self.mcp_servers: |
203 | | - self.mcp_servers = [] |
204 | | - if not any(isinstance(s, LocalServer) for s in self.mcp_servers): |
205 | | - self.mcp_servers.append(local_server) |
| 203 | + |
| 204 | + if not self.mcp_manager: |
| 205 | + self.mcp_manager = McpServerManager() |
| 206 | + if not self.mcp_manager.get_server(server_name): |
| 207 | + await self.mcp_manager.add_server(local_server) |
206 | 208 | if not self.mcp_tools: |
207 | 209 | self.mcp_tools = [] |
| 210 | + |
208 | 211 | if server_name not in [name for name, _ in self.mcp_tools]: |
209 | 212 | self.mcp_tools.append((local_server.name, local_tools)) |
210 | 213 |
|
@@ -245,9 +248,7 @@ async def _execute_local_tool_calls(self, tool_calls_list): |
245 | 248 | t.get("function", {}).get("name") == norm_tool_name |
246 | 249 | for t in server_tools |
247 | 250 | ): |
248 | | - server = next( |
249 | | - (s for s in self.mcp_servers if s.name == server_name), None |
250 | | - ) |
| 251 | + server = self.mcp_manager.get_server(server_name) |
251 | 252 | if server: |
252 | 253 | for params in parsed_args_list: |
253 | 254 | tasks.append( |
@@ -943,7 +944,7 @@ async def _execute_tool_with_registry(self, norm_tool_name, params): |
943 | 944 | if self.mcp_tools: |
944 | 945 | for server_name, server_tools in self.mcp_tools: |
945 | 946 | if any(t.get("function", {}).get("name") == norm_tool_name for t in server_tools): |
946 | | - server = next((s for s in self.mcp_servers if s.name == server_name), None) |
| 947 | + server = self.mcp_manager.get_server(server_name) |
947 | 948 | if server: |
948 | 949 | return await self._execute_mcp_tool(server, norm_tool_name, params) |
949 | 950 | else: |
|
0 commit comments