使用说明

项目简介

本项目实现了一个 MCP 网关服务器。该网关服务器作为 LLM 应用与多个 MCP 后端服务器之间的桥梁,提供统一的接入点,简化了 LLM 应用对各种数据资源和工具的访问和管理。通过该网关,LLM 应用无需直接对接多个 MCP 服务器,只需与网关交互即可获取所有注册工具的能力。

主要功能点

  • 统一工具入口:聚合来自多个 MCP 服务器的工具,为 LLM 应用提供统一的工具访问接口。
  • 多服务器管理:能够启动、管理和监控多个 MCP 后端服务器进程。
  • 动态工具发现:自动发现并注册连接到网关的 MCP 服务器提供的工具。
  • 简化集成:降低 LLM 应用集成多种数据源和工具的复杂性。
  • HTTP 接口:通过简单的 HTTP API (JSON-RPC over HTTP POST) 与 MCP 客户端通信。

安装步骤

  1. 安装网关依赖: 打开终端,进入 'gateway' 目录,并执行以下命令安装网关服务器所需的 Python 依赖:
    cd gateway
    pip install -e .
    cd ..

服务器配置

MCP 网关服务器的配置文件为 'gateway/config.json'。您需要在此文件中配置要管理的 MCP 服务器。以下是一个示例配置,包含了文件系统服务器和内存服务器的配置:

{
  "mcp": {
    "servers": {
      "filesystem": {  // 文件系统服务器配置
        "command": "npx", // 启动服务器的命令,通常为 npx 或 node
        "args": [      // 命令参数列表
          "-y",
          "@modelcontextprotocol/server-filesystem", // 使用 npm 包 @modelcontextprotocol/server-filesystem
          "/path/to/directory" // 文件系统服务器需要暴露的目录路径,请替换为实际路径
        ]
      },
      "memory": {      // 内存服务器配置
        "command": "npx", // 启动服务器的命令,通常为 npx 或 node
        "args": [      // 命令参数列表
          "-y",
          "@modelcontextprotocol/server-memory" // 使用 npm 包 @modelcontextprotocol/server-memory
        ]
      }
      // 可以继续添加更多 MCP 服务器的配置,例如数据库服务器、Web API 服务器等
    }
  }
}

配置说明

  • 'servers' 字段下可以配置多个 MCP 服务器,每个服务器配置项为一个 JSON 对象。
  • 每一个服务器配置项的 键 (key) 将作为该服务器的 名称 (server name),例如 'filesystem' 和 'memory'。
  • 'command' 字段指定启动 MCP 服务器的命令,通常为 'npx' 或 'node',用于执行 Node.js 包。
  • 'args' 字段是一个字符串数组,包含了启动服务器命令的参数。请根据您使用的 MCP 服务器类型,参考其官方文档配置正确的参数。例如,文件系统服务器通常需要指定文件目录路径。

您��以通过修改 'gateway/config.json' 文件来添加、删除或修改要管理的 MCP 服务器。更多可用的 MCP 服务器及其配置方法,请参考 官方 MCP 服务器仓库

基本使用方法

  1. 启动网关服务器: 在终端中,进入 'gateway' 目录,并执行以下命令启动 MCP 网关服务器:

    cd gateway
    python -m mcp_gateway.server

    服务器默认会在 '8808' 端口启动。您可以通过设置环境变量 'MCP_PORT' 来修改端口号。

  2. LLM 应用 (MCP 客户端) 与网关交互: LLM 应用可以通过 HTTP POST 请求与网关服务器进行通信。

    • 获取工具列表:向网关服务器的 '/message' 接口发送 POST 请求,请求体为 '{"method": "tools/list"}',网关会返回所有已注册的工具列表。
    • 调用工具:向网关服务器的 '/message' 接口发送 POST 请求,请求体为 '{"method": "tools/call", "params": {"name": "工具名称", "arguments": {"参数名1": "参数值1", ...}}}',网关会调用相应的工具并返回结果。

请参考项目仓库中的 'src/react_agent' 目录下的代码示例,了解如何在 LLM Agent 中使用该 MCP 网关服务器。

信息

分类

AI与计算