使用说明

项目简介

MCP Proxy Server 是一个MCP协议的代理服务器,它可以连接到多个实现了MCP协议的资源服务器(例如数据源、工具服务等),并将它们的能力聚合起来,通过单一的HTTP服务器对外提供服务。对于LLM客户端来说,只需要连接到这个代理服务器,就可以访问到所有被代理的资源服务器提供的功能,简化了客户端的配置和管理。

主要功能点

  • 聚合多路MCP客户端: 可以同时连接和管理多个不同的MCP资源服务器。
  • SSE支持: 通过Server-Sent Events (SSE) 提供实时的更新推送服务。
  • 灵活配置: 支持多种类型的MCP客户端连接方式,例如 'stdio' (标准输入输出) 和 'sse' (SSE连接)。

安装步骤

方法一:从源码构建

  1. 确保已安装 Go 语言环境。
  2. 克隆仓库到本地:
    git clone https://github.com/TBXark/mcp-proxy.git
    cd mcp-proxy
  3. 编译程序:
    go build -o mcp-proxy main.go

方法二:使用 'go install' 安装

go install github.com/TBXark/mcp-proxy@latest

安装完成后,'mcp-proxy' 可执行文件通常会位于 '$GOPATH/bin' 或 '$HOME/go/bin' 目录下。

方法三:使用 Docker

  1. 确保已安装 Docker。
  2. 拉取 Docker 镜像并运行:
    docker run -d -p 8080:8080 -v /path/to/config.json:/config/config.json ghcr.io/tbxark/mcp-proxy:latest
    请将 '/path/to/config.json' 替换为你本地配置文件 'config.json' 的路径。

服务器配置

MCP Proxy Server 通过 JSON 配置文件 'config.json' 进行配置。以下是一个配置示例,你需要根据实际情况修改:

{
  "server": {
    "baseURL": "http://localhost:8080",  // SSE服务器的基础URL,客户端连接SSE时会用到
    "addr": ":8080",                     // 服务器监听地址和端口
    "name": "MCP Proxy",                // 服务器名称,用于标识
    "version": "1.0.0"                   // 服务器版本
  },
  "clients": {
    "fetch": {                           // 客户端名称,可以自定义,用于URL路径
      "type": "stdio",                   // 客户端类型,这里是 stdio,表示通过标准输入输出与MCP服务器通信
      "config": {
        "command": "uvx",              // 启动 MCP 服务器的命令,例如 uvx, npx 等
        "env": {},                     // 环境变量,如果需要可以设置
        "args": ["mcp-server-fetch"]   // 传递给 MCP 服务器的命令行参数,例如这里启动的是名为 mcp-server-fetch 的 MCP 服务器
      }
    },
    "amap": {                            // 另一个客户端配置
      "type": "sse",                     // 客户端类型,这里是 sse,表示通过 SSE 连接到远程 MCP 服务器
      "config": {
        "url": "https://router.mcp.so/sse/xxxxx" // 远程 MCP 服务器的 SSE 地址
      }
    }
  }
}

配置说明:

  • 'server': 配置 MCP Proxy Server 自身的信息。

    • 'baseURL': 代理服务器的根URL,用于SSE连接。
    • 'addr': 代理服务器监听的地址和端口。
    • 'name': 代理服务器的名称。
    • 'version': 代理服务器的版本。
  • 'clients': 配置需要代理的 MCP 资源服务器。可以配置多个客户端,每个客户端配置项的键名(例如 'fetch', 'amap')将作为访问路径的一部分。

    • 'type': 客户端类型,支持 'stdio' 和 'sse'。
      • 'stdio': 通过标准输入输出与本地或可通过命令启动的 MCP 服务器通信。
        • 'command': 启动 MCP 服务器的命令。
        • 'args': 传递给 'command' 的命令行参数。
        • 'env': 环境变量 (可选)。
      • 'sse': 连接到远程 SSE MCP 服务器。
        • 'url': 远程 MCP 服务器的 SSE 地址。
    • 'config': 根据 'type' 类型的不同,配置也不同,详细见上面的配置示例。

基本使用方法

  1. 启动 MCP Proxy Server:

    • 如果从源码或 'go install' 安装,在命令行中执行:
      ./mcp-proxy --config config.json
      或者
      mcp-proxy --config config.json
      如果使用 Docker,启动命令已在安装步骤中给出。
  2. 访问代理的 MCP 服务:

    • 假设 MCP Proxy Server 运行在 'http://localhost:8080',并且配置文件中定义了一个名为 'fetch' 的 'stdio' 客户端。
    • LLM 客户端可以通过访问 'http://localhost:8080/fetch/sse' 这个SSE地址来连接到被代理的 'fetch' MCP 服务器。
    • 如果定义了 'amap' 客户端,则可以通过 'http://localhost:8080/amap/sse' 访问。
  3. 安全性提示: 如果担心URL泄露,可以将 'clients' 配置中的客户端名称(例如 'fetch', 'amap')改为随机字符串,然后通过 '/随机字符串/sse' 的方式访问。

总结: MCP Proxy Server 作为一个中间层,简化了 LLM 客户端与多个 MCP 资源服务器交互的复杂性,提供了一个统一的入口和管理界面。你只需要配置好 'config.json' 文件,启动代理服务器,LLM 客户端即可通过代理服务器访问所有配置的 MCP 资源服务。

信息

分类

网页与API