GH-AW MCP Gateway
使用说明(Markdown 格式)
-
项目简介
- 本仓库实现的是一个 MCP 网关(Gateway),用于将多个 MCP 服务器后端接入到一个统一的对外入口。网关本身提供路由(路由到具体后端)、会话管理、工具/资源相关能力的聚合,以及对 MCP 客户端的 JSON-RPC 通信支持。它支持以 Docker 容器启动后端 MCP 服务器(stdio 传输)、也可通过 HTTP 后端进行接入,并提供两种配置方式(TOML 和 JSON(从标准输入读取))。
- MCP 客户端可以通过网关的路由端点 /mcp/{serverID}(逐个路由)或统一端点 /mcp(聚合到所有后端),以 JSON-RPC 2.0 形式进行调用,如读取工具列表、执行工具、获取资源等。网关还提供健康检查、日志、调试信息等运维能力。
-
主要功能点
- 两种配置格式:TOML 文件配置和通过标准输入传入的 JSON 配置,且具备快速校验和错误提示。
- 传输模式:stdio(后端直接在网关里以标准输入输出形式运行)和 HTTP(后端通过 HTTP 接入)。
- 路由模式:Routed(/mcp/{server} 路由到各后端)与 Unified(/mcp 统一入口路由到所有后端)。
- 后端启动和容器化支持:通过 Docker 容器启动后端 MCP 服务器,支持自定义 entrypoint、挂载、环境变量等。
- 安全与鉴权:基于 API Key 的简单认证机制,客户端通过 Authorization 请求头携带 API Key。
- 对后端能力的代理:网关对后端的 Tools/Resources 等能力进行管理、聚合、并向客户端暴露相应接口。
- 增强调试与诊断:提供详细的启动、后端启动、请求与响应日志,以及对命令执行失败的调试信息。
- 对大 payload 的处理与持久化:支持将工具调用产生的 payload 保存到本地并提供简要的预览信息,便于大对象管理。
- 流式传输与错误处理:对部分传输实现了流式响应的支持(如 SSE),并提供对错误信息的友好显示和定位帮助。
-
安装步骤
- 先确保环境具备 Go 语言开发环境(如 Go 1.20+),并具备 Docker(如需要使用容器启动后端 MCP 服务器)。
- 获取源码后进行编译运行:
- 本地构建:将代码编译成可执行文件(示例命令在不同环境下可用,具体以项目根目录下的构建脚本/文档为准)。
- 也可以使用仓库提供的镜像方式直接运行(如 ghcr.io/github/gh-aw-mcpg:latest),具体请参考 README。
- 运行网关:
- 通过配置文件启动:awmg --config <path-to-config.toml>,可选启用路由或统一模式。
- 通过 JSON stdin 启动:awmg --config-stdin < <config.json>,以 JSON 形式配置后端 MCP 服务器。
- 配置后端 MCP 服务器(示例说明,实际客户端不需要直接看此处):
- 服务器需要的核心信息包括服务器名称、启动方式、命令及参数等,以便网关能够启动并连接后端。
- 典型配置要素包括:
- 服务器名称(必选)如 github
- 传输类型(stdio 或 http 等)
- 启动信息:容器镜像和启动参数(如果使用容器化后端)
- 环境变量、挂载点、Entrypoint 等
- 如使用 HTTP 后端,需提供后端的访问地址与必要头信息等
- 运行后端容器的常见要点
- 需要确保后端镜像可访问(如 ghcr.io/github/github-mcp-server:latest)。
- 运行时需挂载 Docker 套接字以便网关能在需要时启动新的后端容器。
- 挂载点、环境变量以及入口参数按后端具体要求配置。
- 服务器配置要点(MCP 服务器给 MCP 客户端使用时的可选示例描述)
- 每个 MCP 服务器需要在网关的配置中指定名称、启动类型、镜像或命令及参数,以及必要的环境变量。
- MCP 客户端若要连接,至少需要知道该 MCP 服务器的启动命令(command)及其参数(args)等信息(网关端提供的配置信息不需要客户端直接依赖,仅用于理解交互方式)。
- 基本使用方法
- 启动网关后,使用健康检查端点 /health 监控网关状态。
- 通过路由端点 /mcp/{serverID} 进行具体服务器的 JSON-RPC 调用,或通过统一端点 /mcp 将请求转发至配置的第一个后端/聚合处理。
- 常见的 MCP 调用包括 tools/list、tools/call、resources/list、initialize 等,具体方法名称由后端实现和 MCP 版本决定。
- 当需要对后端进行调试时,可启用 DEBUG 变量来增加日志输出,便于排错。
-
服务器配置(对 MCP 客户端的说明,非网关配置示例)
- 服务器名称:如 github
- 启动命令(command):docker
- 启动参数(args):run --rm -i ghcr.io/github/github-mcp-server:latest
- 说明:以上为一个典型后端 MCP 服务器的启动方案,实际使用中可以通过网关的配置将该启动信息传递给网关,以便网关在需要时能够启动并管理后端容器。
- 备注:MCP 客户端在建立连接时不需要直接看到网关的实现细节,但需要了解 MCP 服务器的名称、启动方式和访问方式(如路由路径和端点)。
-
基本使用示例(简要)
- 启动网关并加载配置
- 调用路由端点进行初始化与工具查询
- 通过工具调用获得工具列表、参数、结果等
- 如需扩展新的后端服务器,只需在网关配置中添加相应条目,确保后端镜像与启动参数正确即可
-
关键词
- MCP 网关、后端路由、容器化后端、JSON-RPC、工具与资源
-
分类ID
- 6