项目简介

MCP Gateway 是一个基于 Python 构建的中央网关应用程序。它连接并聚合来自多个后端 MCP 服务器(支持 Stdio 和 SSE 协议)所提供的能力(工具、资源、提示),最终通过一个统一的 SSE 端点向 LLM 客户端提供这些聚合后的能力。

主要功能点

  • 简化客户端配置: LLM 客户端只需连接到 MCP Gateway 这一个地址,即可访问所有后端服务的功能,无需单独配置每个后端服务器。
  • 能力聚合: 汇集来自不同后端 MCP 服务器提供的工具、资源和提示,将它们整合成一个统一的接口。
  • 请求路由: 根据 LLM 客户端发来的请求,智能地将请求路由到相应的后端 MCP 服务器并返回结果。
  • 支持多种后端协议: 能够连接通过标准输入输出(Stdio)或 Server-Sent Events (SSE) 通信的后端 MCP 服务器。
  • 内置常用工具: 项目自带 Bash、CMD、PowerShell、WMI 等内置 MCP 服务器工具,开箱即用。

安装步骤

本项目使用 Python 开发,推荐使用 'uv' 工具进行环境和依赖管理。

  1. 克隆仓库: 打开终端或命令提示符,执行以下命令克隆项目:
    git clone https://github.com/trtyr/MCP-Gateway.git
    cd MCP-Gateway
  2. 创建并激活虚拟环境: 为了隔离项目依赖,创建一个 Python 虚拟环境:
    # 创建虚拟环境
    uv venv
    
    # 激活虚拟环境 (根据你的操作系统选择)
    # Linux/macOS
    source .venv/bin/activate
    # Windows (Command Prompt/PowerShell)
    .venv\Scripts\activate
  3. 安装依赖: 在虚拟环境激活状态下,安装项目所需的所有依赖:
    uv sync

完成以上步骤后,项目即可运行。

服务器配置

MCP Gateway 的核心配置文件是项目根目录下的 'config.json'。你需要编辑此文件来定义 Gateway 需要连接和管理的后端 MCP 服务器。

'config.json' 是一个 JSON 对象,其中每个键是你为后端服务器指定的唯一名称(这个名称将作为其能力的前缀,如 'powershell/PowerShell'),值是一个包含该后端服务器配置的 JSON 对象。

支持配置两种类型的后端服务器:

  • 'stdio' 类型: 用于配置 Gateway 启动并管理其生命周期的本地 MCP 服务器进程(通过标准输入/输出通信)。
    • 配置项包括:
      • 'type' (必须): 固定为 '"stdio"'。
      • 'command' (必须): 用于启动后端服务器进程的可执行命令(例如 'python', 'uv', 可执行文件路径)。
      • 'args' (必须): 传递给 'command' 的命令行参数列表(一个字符串数组)。
      • 'env' (可选): 为后端进程设置的环境变量(一个字符串键值对对象)。
  • 'sse' 类型: 用于配置 Gateway 连接到已经运行的 SSE 协议后端 MCP 服务器(本地或远程)。
    • 配置项包括:
      • 'type' (必须): 固定为 '"sse"'。
      • 'url' (必须): 后端 MCP 服务器的 SSE 端点完整 URL (必须以 'http://' 或 'https://' 开头)。
      • 'command' (可选): 如果后端是本地进程但需要 Gateway 启动,则在此指定启动命令。
      • 'args' (可选, 仅当指定 'command' 时): 传递给本地启动命令的参数列表。
      • 'env' (可选, 仅当指定 'command' 时): 为本地启动进程设置的环境变量。

你可以参考仓库中提供的 'config.json' 示例来配置你要集成的后端 MCP 服务器。

基本使用方法

  1. 编辑配置文件: 根据你需要集成的后端 MCP 服务器,编辑 'config.json' 文件,添加或修改相应的配置条目。
  2. 启动 Gateway: 在项目根目录下,激活虚拟环境,然后使用 'uv run python main.py' 命令启动服务器。你可以通过命令行参数指定监听的地址 ('--host')、端口 ('--port') 和日志级别 ('--log-level')。
    # 示例:监听所有地址的 9000 端口,日志级别设为 debug
    uv run python main.py --host 0.0.0.0 --port 9000 --log-level debug
  3. LLM 客户端连接: Gateway 启动成功后,会显示其监听的 SSE URL(默认为 'http://<服务器IP地址>:9000/sse')。使用任何支持 MCP 协议并能连接 SSE 端点的 LLM 客户端(如 Cline, Cursor, Claude Desktop 或自定义客户端),将 Gateway 的 SSE URL 配置为连接地址即可。客户端将能发现并通过 Gateway 使用所有已配置后端服务器提供的能力。

信息

分类

AI与计算