使用说明
项目简介
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' 库改进了子进程管理,提高了稳定性和可靠性。
安装步骤
- 克隆仓库
git clone https://github.com/danmas0n/mcp-gateway.git cd mcp-gateway - 安装依赖
npm install - 复制配置文件
cp config.json.example config.json - 编辑配置文件 'config.json',配置需要管理的 MCP 服务器(具体配置方法见“服务器配置”部分)。
- 构建项目
npm run build - 启动网关
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' 字段。
基本使用方法
- 启动 MCP Gateway:按照安装步骤启动 MCP Gateway 后,它将开始管理您在 'config.json' 中配置的 MCP 服务器。
- 客户端连接:
- SSE 连接:客户端可以通过 GET 请求 '/sse?server=服务器名称' 建立 SSE 连接,'服务器名称' 需要替换为您在 'config.json' 中配置的服务器名称之一 (例如 'filesystem_server')。建立 SSE 连接后,服务器会通过 SSE 连接向客户端推送消息。
- POST 请求:客户端可以通过 POST 请求 '/message' 端点发送 JSON-RPC 消息。例如,发送 'tools/list' 请求获取所有可用工具列表,或发送 'tools/call' 请求调用特定工具。对于初始的工具列表或工具调用请求,可以不带 'sessionId' 参数。
- 工具调用:客户端可以通过 POST 请求 '/message' 端点,发送 'tools/call' 方法的 JSON-RPC 请求来调用工具。MCP Gateway 会自动将请求路由到提供该工具的 MCP 服务器,并将结果返回给客户端。客户端无需关心工具具体属于哪个 MCP 服务器。
- 获取工具列表:客户端可以通过 POST 请求 '/message' 端点,发送 'tools/list' 方法的 JSON-RPC 请求来获取所有已注册的工具列表。网关会汇总所有已配置 MCP 服务器提供的工具,并返回一个统一的工具列表。
注意:MCP Gateway 作为一个网关,其主要作用是代理和管理后端的 MCP 服务器。您仍然需要部署和配置实际提供资源、工具和 Prompt 模板的 MCP 服务器,并在 'config.json' 中正确配置这些服务器的启动命令和参数,才能使 MCP Gateway 正常工作。
信息
分类
AI与计算