MCP Hub 使用说明
项目简介
MCP Hub 是一个用于集中管理多个 Model Context Protocol (MCP) 服务器的工具。它作为一个中心服务器,连接并监控多个独立的 MCP 服务器,为客户端提供统一的 REST API 接口来访问这些 MCP 服务器的功能,例如工具执行和资源访问。MCP Hub 负责服务器的生命周期管理、健康监控、客户端连接管理以及请求路由,简化了客户端与多个 MCP 服务器交互的复杂性。
主要功能点
- 动态 MCP 服务器管理和监控: 集中管理和监控多个 MCP 服务器的运行状态。
- REST API: 提供统一的 REST API 接口,用于客户端执行工具和访问资源。
- 实时服务器状态跟踪: 通过 Server-Sent Events (SSE) 提供服务器状态的实时更新。
- 客户端连接管理: 管理客户端的注册和连接。
- 进程生命周期处理: 负责管理和控制所管理的 MCP 服务器进程的生命周期。
安装步骤
-
确保你的系统已安装 Node.js (>= 18.0.0) 和 npm (>= 9.0.0)。
-
打开终端,运行以下命令全局安装 MCP Hub:
npm install -g mcp-hub
服务器配置
MCP Hub 通过 JSON 配置文件 'config.json' 来定义和管理 MCP 服务器。你需要在配置文件中指定要管理的 MCP 服务器的启动命令和参数。
以下是一个 'config.json' 示例:
{ "mcpServers": { "example-server": { // 服务器名称,可以自定义 "command": "npx example-mcp-server", // MCP 服务器的启动命令,例如 Node.js 服务器的启动命令 "args": ["--config", "server-config.json"], // 启动命令的参数,以数组形式提供 "env": { // (可选) 环境变量,以键值对形式提供 "API_KEY": "your-api-key" }, "disabled": false // (可选) 是否禁用此服务器,默认为 false。设置为 true 时,MCP Hub 将不会启动和管理此服务器 }, "another-server": { // 可以配置多个 MCP 服务器 "command": "python another_mcp_server.py", "args": [], "disabled": true } } }
配置参数说明:
- 'mcpServers': 一个 JSON 对象,包含了所有要管理的 MCP 服务器的配置信息。
- '服务器名称': 'mcpServers' 对象的键名,用于唯一标识一个 MCP 服务器,可以自定义。
- 'command': 必需。启动 MCP 服务器的命令。这通常是执行服务器代码的命令,例如 'node server.js' 或 'python server.py'。
- 'args': 可选。启动命令的参数,以字符串数组形式提供。例如,如果你的 MCP 服务器需要配置文件路径作为参数,可以在这里指定 '["--config", "server-config.json"]'。
- 'env': 可选。服务器进程运行时的环境变量,以 JSON 对象形式提供。例如,你可以设置 'API_KEY' 或 'PORT' 等环境变量。
- 'disabled': 可选。布尔值,默认为 'false'。如果设置为 'true',MCP Hub 将不会启动和管理此服务器。你可以使用此选项暂时禁用某个服务器,而无需从配置中删除它。
请根据你的 MCP 服务器的实际情况,修改 'command' 和 'args' 字段。确保 'command' 是可以执行的命令,并且 'args' 是服务器启动所需的参数。
基本使用方法
-
创建一个 'config.json' 文件,并根据你的 MCP 服务器配置进行编辑。
-
打开终端,使用以下命令启动 MCP Hub 服务器:
mcp-hub --port 3000 --config path/to/config.json- '--port': 指定 MCP Hub 服务器监听的端口号,默认为 '3000'。
- '--config': 指定 'config.json' 配置文件的路径。
-
MCP Hub 启动后,你就可以使用 MCP 客户端通过 MCP Hub 提供的 REST API 接口来访问和操作你配置的 MCP 服务器。
常用 API 示例:
-
获取所有 MCP 服务器状态:
GET http://localhost:3000/api/servers -
执行指定服务器上的工具:
POST http://localhost:3000/api/servers/example-server/tools Content-Type: application/json { "tool": "tool_name", "arguments": { "param1": "value1" } } -
访问指定服务器上的资源:
POST http://localhost:3000/api/servers/example-server/resources Content-Type: application/json { "uri": "resource://your-resource-uri" } -
订阅服务器事件 (SSE):
客户端可以连接到 '/api/events' 路径以接收服务器状态的实时更新,例如服务器连接状态、客户端连接状态、工具列表和资源列表的更改等。
更多 API 详情请参考仓库的 README 文档。
信息
分类
开发者工具