From 74bc5dbb7dfc888c9341d3de4398ab2510e05d32 Mon Sep 17 00:00:00 2001 From: Chingfeng Li Date: Wed, 3 Sep 2025 15:41:35 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96SSE=20Client=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=EF=BC=9B=E5=A2=9E=E5=8A=A0SSE=20MCP=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/providers/tools/server_mcp/mcp_client.py | 8 +------- main/xiaozhi-server/mcp_server_settings.json | 6 ++++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/main/xiaozhi-server/core/providers/tools/server_mcp/mcp_client.py b/main/xiaozhi-server/core/providers/tools/server_mcp/mcp_client.py index 8b60ac1b..a30af31f 100644 --- a/main/xiaozhi-server/core/providers/tools/server_mcp/mcp_client.py +++ b/main/xiaozhi-server/core/providers/tools/server_mcp/mcp_client.py @@ -167,14 +167,8 @@ class ServerMCPClient: # 建立SSEClient elif "url" in self.config: - if "API_ACCESS_TOKEN" in self.config: - headers = { - "Authorization": f"Bearer {self.config['API_ACCESS_TOKEN']}" - } - else: - headers = {} sse_r, sse_w = await stack.enter_async_context( - sse_client(self.config["url"], headers=headers) + sse_client(self.config["url"], headers=self.config.get("headers", None), timeout=self.config.get("timeout", 5), sse_read_timeout=self.config.get("sse_read_timeout", 60 * 5)) ) read_stream, write_stream = sse_r, sse_w diff --git a/main/xiaozhi-server/mcp_server_settings.json b/main/xiaozhi-server/mcp_server_settings.json index a1bddf06..70607a2c 100644 --- a/main/xiaozhi-server/mcp_server_settings.json +++ b/main/xiaozhi-server/mcp_server_settings.json @@ -36,6 +36,12 @@ "command": "npx", "args": ["-y", "@simonb97/server-win-cli"], "link": "https://github.com/SimonB97/win-cli-mcp-server" + }, + "sse-mcp-server": { + "url": "http://localhost:8080/sse", + "headers": { + "Authorization": "Bearer YOUR TOKEN" + } } } } From 74f321a0fddd7f3d816e8dfee49dd932836b6551 Mon Sep 17 00:00:00 2001 From: Chingfeng Li Date: Wed, 3 Sep 2025 17:53:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=92=8C=E8=BF=87=E6=9C=9F=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/providers/tools/server_mcp/mcp_client.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/main/xiaozhi-server/core/providers/tools/server_mcp/mcp_client.py b/main/xiaozhi-server/core/providers/tools/server_mcp/mcp_client.py index a30af31f..6dd14195 100644 --- a/main/xiaozhi-server/core/providers/tools/server_mcp/mcp_client.py +++ b/main/xiaozhi-server/core/providers/tools/server_mcp/mcp_client.py @@ -167,8 +167,13 @@ class ServerMCPClient: # 建立SSEClient elif "url" in self.config: + headers = dict(self.config.get("headers", {})) + # TODO 兼容旧版本 + if "API_ACCESS_TOKEN" in self.config: + headers["Authorization"] = f"Bearer {self.config['API_ACCESS_TOKEN']}" + self.logger.bind(tag=TAG).warning(f"你正在使用旧过时的配置 API_ACCESS_TOKEN ,请在.mcp_server_settings.json中将API_ACCESS_TOKEN直接设置在headers中,例如 'Authorization': 'Bearer API_ACCESS_TOKEN'") sse_r, sse_w = await stack.enter_async_context( - sse_client(self.config["url"], headers=self.config.get("headers", None), timeout=self.config.get("timeout", 5), sse_read_timeout=self.config.get("sse_read_timeout", 60 * 5)) + sse_client(self.config["url"], headers=headers, timeout=self.config.get("timeout", 5), sse_read_timeout=self.config.get("sse_read_timeout", 60 * 5)) ) read_stream, write_stream = sse_r, sse_w