🎈 perf: 适配 MCP 配置文件带 mcpServers 的情况(Cursor)

🐛 fix: 关闭/删除 MCP 服务器后 Tools 没有清除的问题
This commit is contained in:
Soulter
2025-04-12 17:56:23 +08:00
parent d6239822db
commit b75d24d92c
3 changed files with 33 additions and 2 deletions
@@ -95,6 +95,10 @@ class MCPClient:
mcp_server_config (dict): Configuration for the MCP server. See https://modelcontextprotocol.io/quickstart/server
"""
cfg = mcp_server_config.copy()
print(cfg)
if "mcpServers" in cfg:
key_0 = list(cfg["mcpServers"].keys())[0]
cfg = cfg["mcpServers"][key_0]
cfg.pop("active", None)
server_params = mcp.StdioServerParameters(
**cfg,
@@ -260,6 +264,11 @@ class FuncCall:
if data["name"] in self.mcp_client_event:
self.mcp_client_event[data["name"]].set()
self.mcp_client_event.pop(data["name"], None)
self.func_list = [
f
for f in self.func_list
if not (f.origin == "mcp" and f.mcp_server_name == data["name"])
]
else:
for name in self.mcp_client_dict.keys():
# await self._terminate_mcp_client(name)
@@ -267,6 +276,11 @@ class FuncCall:
if name in self.mcp_client_event:
self.mcp_client_event[name].set()
self.mcp_client_event.pop(name, None)
self.func_list = [
f
for f in self.func_list
if not (f.origin == "mcp")
]
async def _init_mcp_client_task_wrapper(
self, name: str, cfg: dict, event: asyncio.Event