项目简介

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' 命令输出。

信息

分类

开发者工具