使用说明

项目简介

MCP Gateway 是一个使用 TypeScript 开发的应用程序,它充当 Model Context Protocol (MCP) 服务器的网关。此网关的核心功能是管理多个独立的 MCP 服务器,并为客户端提供一个统一的入口来访问这些服务器的功能,特别是工具 (Tools) 功能。通过 MCP Gateway,LLM 客户端可以更方便地与多个 MCP 服务器交互,而无需直接管理和连接到每个服务器。

主要功能点

  • 多MCP服务器管理:可以配置和管理多个独立的 MCP 服务器实例。
  • 统一工具接口:为客户端提供一个统一的 '/message' 端点来调用所有已注册的工具,客户端无需关心工具具体由哪个 MCP 服务器提供。
  • 支持 SSE 和 STDIO 传输:支持 Server-Sent Events (SSE) 和标准输入输出 (STDIO) 两种传输协议,客户端可以选择合适的协议与网关通信。
  • JSON 配置:通过 'config.json' 文件进行配置,易于管理和扩展。
  • 进程管理:使用 'spawn-rx' 库改进了子进程管理,提高了稳定性和可靠性。

安装步骤

  1. 克隆仓库
    git clone https://github.com/danmas0n/mcp-gateway.git
    cd mcp-gateway
  2. 安装依赖
    npm install
  3. 复制配置文件
    cp config.json.example config.json
  4. 编辑配置文件 'config.json',配置需要管理的 MCP 服务器(具体配置方法见“服务器配置”部分)。
  5. 构建项目
    npm run build
  6. 启动网关
    npm start

服务器配置

打开 'config.json' 文件,在 'mcp.servers' 字段下配置要管理的 MCP 服务器。每个服务器配置项都是一个 JSON 对象,包含以下字段:

{
  "mcp": {
    "servers": {
      "服务器名称1": {  //  服务器的唯一名称,例如 "filesystem_server"
        "command": "...",  //  启动 MCP 服务器的可执行命令,例如 "npx" 或 "/path/to/your/server"
        "args": ["...", "..."]  //  命令的参数数组,例如 ["-y", "@modelcontextprotocol/server-filesystem", "/data"]
      },
      "服务器名称2": {  //  可以配置多个服务器
        "command": "...",
        "args": ["...", "..."]
      }
      // ... 更多服务器配置
    }
  }
}

配置参数说明:

  • 服务器名称 (server name): 为 MCP 服务器指定一个唯一的名称,例如 'filesystem_server' 或 'prompt_server'。这个名称将在客户端连接时使用。
  • command: 启动 MCP 服务器的命令。这可以是可执行文件的路径,也可以是像 'npx' 这样的命令,用于运行 npm 包。
  • args: 一个字符串数组,包含启动 'command' 命令所需的参数。例如,如果你的 MCP 服务器需要指定一个数据目录作为参数,你可以在 'args' 中配置。

配置示例:

假设您要配置一个文件系统 MCP 服务器和一个 Prompt 模板 MCP 服务器。'config.json' 文件可能如下所示:

{
  "mcp": {
    "servers": {
      "filesystem_server": {
        "command": "npx",
        "args": [
          "-y",
          "@modelcontextprotocol/server-filesystem",
          "/path/to/your/filesystem/data"  // 文件系统服务器的数据目录
        ]
      },
      "prompt_server": {
        "command": "npx",
        "args": [
          "-y",
          "@modelcontextprotocol/server-prompt",
          "/path/to/your/prompt/templates"  // Prompt 模板服务器的模板目录
        ]
      }
    }
  }
}

请根据您实际使用的 MCP 服务器类型和参数,修改 'command' 和 'args' 字段。

基本使用方法

  1. 启动 MCP Gateway:按照安装步骤启动 MCP Gateway 后,它将开始管理您在 'config.json' 中配置的 MCP 服务器。
  2. 客户端连接
    • SSE 连接:客户端可以通过 GET 请求 '/sse?server=服务器名称' 建立 SSE 连接,'服务器名称' 需要替换为您在 'config.json' 中配置的服务器名称之一 (例如 'filesystem_server')。建立 SSE 连接后,服务器会通过 SSE 连接向客户端推送消息。
    • POST 请求:客户端可以通过 POST 请求 '/message' 端点发送 JSON-RPC 消息。例如,发送 'tools/list' 请求获取所有可用工具列表,或发送 'tools/call' 请求调用特定工具。对于初始的工具列表或工具调用请求,可以不带 'sessionId' 参数。
  3. 工具调用:客户端可以通过 POST 请求 '/message' 端点,发送 'tools/call' 方法的 JSON-RPC 请求来调用工具。MCP Gateway 会自动将请求路由到提供该工具的 MCP 服务器,并将结果返回给客户端。客户端无需关心工具具体属于哪个 MCP 服务器。
  4. 获取工具列表:客户端可以通过 POST 请求 '/message' 端点,发送 'tools/list' 方法的 JSON-RPC 请求来获取所有已注册的工具列表。网关会汇总所有已配置 MCP 服务器提供的工具,并返回一个统一的工具列表。

注意:MCP Gateway 作为一个网关,其主要作用是代理和管理后端的 MCP 服务器。您仍然需要部署和配置实际提供资源、工具和 Prompt 模板的 MCP 服务器,并在 'config.json' 中正确配置这些服务器的启动命令和参数,才能使 MCP Gateway 正常工作。

信息

分类

AI与计算