MCP 代理
MCP 协议定义了两类三种传输方式,两类方式是 stdio 和 HTTP,三种分别是 stdio,HTTP SSE(定义在版本 2025-03-26 中) 和 Streamable HTTP(定义在版本 2025-06-18 中)。
不同 MCP 服务器和客户端可以选择支持不同的传输方式。传输方式的选择,一方面取决于所支持的 MCP 协议的版本,一方面取决于服务器和客户端的使用场景,还有一方面只是实现上的考量。
MCP客户端要和服务器交互,需要支持服务器提供的传输方式。在实际的使用中,可能会需要对传输方式进行转换。
比如,文件系统 MCP服务器,因为访问的是本地文件,使用的是 stdio 传输方式。如果把该 MCP 服务器运行在共享的服务器上,并转换为 HTTP 传输方式,就可以让多个 MCP 客户端共同访问共享服务器上的文件。
如果某个 MCP 客户端不支持 HTTP 传输方式,可以转换为 stdio 传输方式,被客户端使用。
已经有不少工具可以完成 MCP 传输方式的转换,包括 mcp-proxy 和 supergateway。
这里以 mcp-proxy
为例。参考 mcp-proxy 的官方文档来安装。
第一个例子是 stdio 转换为 HTTP。把文件系统 MCP 服务器转换为 HTTP。在下面的命令中,使用的是 HTTP SSE,端口是 8080
,两个横线之后的是启动 stdio 服务器的命令。
mcp-proxy --port=8080 -- npx -y @modelcontextprotocol/server-filesystem /tmp
第二个例子是 HTTP SSE 转换为 stdio。下面的命令,用来启动 MCP 服务器。
mcp-proxy http://localhost:9000/sse
通过 MCP 代理,可以转换 MCP 的传输方式,使用起来更加灵活。