项目简介
Open MCP 代理(Open MCP Proxy)是一个用于连接使用不同传输协议(如Stdio、SSE)的Model Context Protocol (MCP) 服务器和客户端的工具。它本身不是一个提供资源、工具或Prompt的MCP服务,而是作为现有MCP服务和需要连接它们的客户端之间的桥梁或适配器。它允许您根据需要转换或代理MCP连接的传输方式。
主要功能点
- 本地Stdio服务转网络SSE服务: 运行一个通过标准输入/输出(Stdio)与LLM通信的本地MCP程序,并将其通过指定的网络地址和端口暴露为一个SSE服务,供远程或其他应用通过网络(SSE协议)访问。
- 远程网络SSE服务转本地Stdio服务: 连接到一个远程网络地址上的SSE MCP服务,并在本地的标准输入/输出(Stdio)上暴露其接口。这样,需要使用Stdio协议的LLM客户端(如某些版本的Claude或Cursor)就可以连接到这个本地Stdio接口来使用远程的SSE服务。
- 网络SSE服务代理: 连接到一个远程网络地址上的SSE MCP服务,并在一个新的网络地址和端口上将其作为SSE服务重新暴露出来。这可以用于转发连接或在中间层处理。
安装步骤
确保您的系统已安装 Rust 开发环境。然后使用Cargo包管理器从GitHub仓库安装:
cargo install --git https://github.com/decentralized-mcp/proxy.git
安装成功后,您应该可以在命令行中使用 'openmcp' 命令。
服务器配置(供MCP客户端使用)
您的MCP客户端如何配置取决于您使用Open MCP代理的哪种模式以及您的客户端支持的传输协议。以下是一些配置示例,说明如何让MCP客户端连接到由Open MCP代理暴露的MCP接口:
场景一:Open MCP代理将远程SSE服务转换为本地Stdio服务
在这种模式下 (例如命令 'openmcp run -p http://remote_sse_server_host:remote_sse_server_port/sse'),Open MCP代理进程本身充当一个Stdio MCP服务器接口。您的MCP客户端需要配置为通过Stdio传输协议启动并连接到此代理进程。典型的JSON配置可能类似这样(具体取决于您的客户端实现):
{ "server_name": "Remote SSE via Open MCP Stdio", "command": "openmcp", "args": [ "run", "-p", "http://remote_sse_server_host:remote_sse_server_port/sse" ], "transport": "stdio", "description": "通过Open MCP代理连接到指定的远程SSE MCP服务,并在本地作为Stdio服务使用。", "capabilities": { // 根据远程服务的实际能力配置,通常可以启用大部分能力 "experimental": true, "roots": true, "roots_list_changed": true, "sampling": true } }
场景二:Open MCP代理将本地Stdio服务转换为网络SSE服务 或 作为SSE代理
在这种模式下 (例如命令 'openmcp run -p 127.0.0.1:8080 your-stdio-server-command' 或 'openmcp run -p 127.0.0.1:8001:http://remote_sse_server_host:remote_sse_server_port/sse'),Open MCP代理会监听一个网络地址并提供SSE MCP服务器接口。您的MCP客户端需要配置为通过SSE传输协议连接到这个网络地址。典型的JSON配置可能类似这样:
{ "server_name": "Local Stdio via Open MCP SSE", // 如果代理本地Stdio服务 // 或 "Remote SSE via Open MCP Proxy", // 如果代理远程SSE服务 "url": "http://127.0.0.1:8080/sse", // 根据实际暴露的地址和端口修改 // 或 "http://127.0.0.1:8001/sse", // 如果作为SSE代理 "transport": "sse", "description": "通过Open MCP代理连接到由本地Stdio服务(或远程SSE服务)暴露的SSE接口。", "capabilities": { // 根据底层服务的实际能力配置 } }
请根据您实际运行Open MCP代理时使用的命令和参数,修改MCP客户端配置中的 'command'、'args' 或 'url' 等信息。
基本使用方法
以下是一些常用的运行示例:
-
将本地Stdio服务(例如一个名为 'my-mcp-server' 的程序)暴露为SSE服务,监听 '127.0.0.1:8080':
openmcp run -p 127.0.0.1:8080 -- my-mcp-server --some-arg或者使用 'npx @modelcontextprotocol/server-everything' 示例服务:
openmcp run -p 127.0.0.1:8080 -- npx -y @modelcontextprotocol/server-everything此时,MCP客户端应配置为连接到 'http://127.0.0.1:8080/sse' (使用SSE传输协议)。
-
将远程SSE服务(例如在 'remote.example.com:9000')在本地暴露为Stdio服务:
openmcp run -p http://remote.example.com:9000/sse此时,需要Stdio传输的MCP客户端应配置为通过Stdio协议启动此命令。
-
将远程SSE服务(例如在 'remote.example.com:9000')代理到本地 '127.0.0.1:8001' 作为新的SSE服务:
openmcp run -p 127.0.0.1:8001:http://remote.example.com:9000/sse此时,MCP客户端应配置为连接到 'http://127.0.0.1:8001/sse' (使用SSE传输协议)。
更多详细的参数和使用说明,请参考 'openmcp run --help' 命令输出。
信息
分类
开发者工具