MCP服务器:SSE转stdio
如果你的MCP正在使用SSE(因为你从远程地方下载了它),并且你想将其连接到仅支持stdio的Claude桌面,该怎么办

一段时间前,在MCParty Slack社区(一个专门讨论构建和使用MCP的想法、问题和解决方案的社区)中,有人提出了一个非常好的问题:
我的MCP有URL连接,如何将其连接到Claude桌面?
无论你是从头开始构建自己的MCP服务器,还是找到了一些有用的工具来将现有应用程序转换为MCP服务器(例如fastapi-mcp,请参阅我的指南@miki_45906如何用FastAPI在Python中轻松构建MCP服务器),你现在已经知道你的AI代理需要通过以下两种通信选项之一与你的MCP连接(虽然Anthropic最近更新了协议以使用可流式传输的HTTP,但许多仍然使用SSE,因此我在此基于原始实现进行说明):
- SSE(服务器发送事件)——通过单个HTTP连接向客户端推送数据。这是一种实时的、单向的从服务器到客户端的通信方式。这就是他提到的URL连接。
- stdio(标准输入/输出)——一种本地集成,不特定于Web技术(不绑定任何特定的网络协议),具有更低的延迟。
你一定问过自己——为什么要选择其中一个而不是另一个?
MCP服务器应使用stdio进行本地集成(通常设置和使用起来更简单,并且是Anthropic推荐的方法),而SSE更适合需要多客户端支持和远程访问的分布式系统。
但是这里来了挑战——如果你的MCP正在使用SSE(因为你从远程地方下载了它),并且你想将其连接到仅支持stdio的Claude桌面,该怎么办?
在尝试了其他三种没有效果的可能解决方案之后,我发现了一个真正有效的解决方案:@sparfenyuk
的mcp-proxy——一个开源项目(我❤️开源)。

1、如何使用mcp-proxy
实现出乎意料地简单。以下是逐步指南:
1.1 安装
首先,使用以下命令安装库:
uv tool install mcp-proxy
1.2 配置Claude桌面
打开Claude桌面,然后导航到:
文件 → 设置 → 开发者 → 编辑配置
将打开一个JSON配置文件。输入适当的设置以指定MCP的路径。
如果你使用fastapi-mcp将现有的FastAPI应用程序转换为MCP服务器,则你的SSE URL很可能是[http://127.0.0.1:8000/mcp](http://127.0.0.1:8000/mcp.)
。
{
"mcpServers": {
"my-api-mcp-proxy": {
"command": "mcp-proxy",
"args": ["http://path/to/mcp/sse"]
}
}
}
注意MacOS用户:你可能需要使用mcp-proxy可执行文件的完整路径,可以在终端中运行以下命令找到:which mcp-proxy
。
别忘了保存配置后退出Claude!
1.3 访问你的工具
最后,打开Claude桌面并发现所有你的工具:

请注意,你将需要批准Claude使用该MCP。

2、排错提示
如果配置后看不到你的工具:
- 确认你的MCP服务器正在运行
- 检查配置中的URL是否与SSE端点完全匹配
- 确保mcp-proxy已正确安装
- 查看Claude桌面日志以查找任何连接错误
3、细节说明(额外考虑)
当使用mcp-proxy将SSE转换为stdio(或反之亦然)时,请记住你正在创建不同通信协议之间的桥梁。除了延迟差异外——错误处理方法可能需要调整。此外,请确保考虑以下重要安全注意事项:
- 如果需要,你的MCP服务器实现了适当的认证
- 如果处理敏感数据,通信发生在安全连接上
- 你知道MCP实现中的任何速率限制或超时设置
虽然这些考虑可能会让你感到不安,但请记住这个解决方案的美妙之处在于它的简单性。通过使用mcp-proxy,你已经有效地弥合了SSE和stdio之间的差距,使你的Claude桌面客户端能够无缝地与现有的MCP基础设施通信!
原文链接:Converting an MCP Server from SSE to stdio: A Simple Solution
汇智网翻译整理,转载请标明出处
