项目简介

mcp-proxy 是一个 MCP (Model Context Protocol) 代理服务器,它本身不是一个完整的 MCP 服务器实现,而是作为现有 MCP 服务器的HTTP网关。它接收客户端发送的 HTTP 请求,并将这些请求转换为 MCP 协议的 JSON-RPC 格式,转发给后端实际运行的 MCP 服务器进行处理。这样做的好处是,客户端可以使用标准的 HTTP 协议与 MCP 服务器交互,而无需直接支持 SSE 或 WebSocket 等 MCP 原生协议,从而简化了客户端的实现和部署。

请注意: mcp-proxy 依赖于后端运行的实际 MCP 服务器。你需要先部署和配置好一个或多个符合 MCP 协议的服务器,然后通过 mcp-proxy 来代理访问它们。

主要功能点

  • HTTP 协议代理: 将客户端的 HTTP 请求转换为 MCP 的 JSON-RPC 格式。
  • 多后端 MCP 服务器支持: 可以配置代理多个不同的 MCP 服务器。
  • 简化部署: 允许在标准的 HTTP 基础设施上部署 MCP 客户端和服务端,无需复杂的网络配置。
  • 配置灵活: 支持 JSON 和 YAML 格式的配置文件,方便管理后端 MCP 服务器的连接信息。
  • 环境变量扩展: 配置文件中支持环境变量扩展,方便在不同环境中使用。

安装步骤

  1. 安装 Go 环境: 确保你的机器上已经安装了 Go 语言环境 (>= 1.16)。

  2. 获取 mcp-proxy 代码: 使用 'go get' 命令下载并安装 mcp-proxy:

    go get github.com/ubie-oss/mcp-proxy

服务器配置

mcp-proxy 通过配置文件来指定需要代理的后端 MCP 服务器。配置文件支持 JSON 或 YAML 格式。

以下是一个 'config.json' 配置文件的示例,你需要根据你的实际 MCP 服务器配置进行修改:

{
  "mcpServers": {
    "server1": {
      "command": "你的MCP服务器启动命令",
      "args": ["MCP服务器启动参数"],
      "env": {
        "环境变量名1": "环境变量值1",
        "环境变量名2": "环境变量值2"
      }
    },
    "server2": {
      "command": "另一个MCP服务器启动命令",
      "args": ["另一个MCP服务器启动参数"],
      "env": {
        "环境变量名3": "环境变量值3",
        "环境变量名4": "环境变量值4"
      }
    }
  }
}

配置参数说明:

  • 'mcpServers': 一个 JSON 对象,包含了所有需要代理的 MCP 服务器的配置信息。
    • 'server1', 'server2', ...: 每个键代表一个服务器的名称,你可以自定义名称,客户端在请求时需要使用这个名称来指定访问哪个后端服务器。
      • 'command': 启动后端 MCP 服务器的可执行命令,例如 'npx' 或 '/path/to/your/mcp-server'。
      • 'args': 一个字符串数组,包含了传递给 'command' 的命令行参数。例如,如果你的 MCP 服务器需要指定配置文件路径,可以在这里添加参数。
      • 'env': 一个 JSON 对象,包含了需要设置的环境变量。键是环境变量名,值是环境变量值。

重要提示: 'command' 和 'args' 配置项用于 mcp-proxy 启动和管理 后端 MCP 服务器进程。你需要根据你实际使用的 MCP 服务器的启动方式,正确配置这些参数。

基本使用方法

  1. 准备配置文件: 根据你的 MCP 服务器配置,创建或修改 'config.json' (或 YAML) 配置文件。

  2. 启动 mcp-proxy: 使用以下命令启动 mcp-proxy 服务器:

    go run . -config config.json -port 9090
    • '-config config.json': 指定配置文件的路径。请替换 'config.json' 为你实际的文件路径。
    • '-port 9090': 指定 mcp-proxy 监听的端口号。你可以根据需要修改端口号。
  3. 客户端发送请求: 客户端可以通过 HTTP POST 请求与 mcp-proxy 交互。请求 URL 的路径格式为 'http://<mcp-proxy-host>:<port>/<server_name>',其中 '<server_name>' 是你配置文件中 'mcpServers' 下定义的服务器名称(例如 'server1', 'server2')。

    请求的 body 需要是符合 MCP 协议的 JSON-RPC 请求。例如,要调用名为 'exampleTool' 的工具,你可以发送如下 HTTP 请求 (Content-Type: 'application/json'):

    {
      "jsonrpc": "2.0",
      "method": "tools/call",
      "params": {
        "name": "exampleTool",
        "arguments": {
          "arg1": "value1"
        }
      },
      "id": 1
    }

    mcp-proxy 会将这个请求转发给名为 '<server_name>' 的后端 MCP 服务器,并将 MCP 服务器的响应再以 HTTP 响应的形式返回给客户端。

信息

分类

网页与API