使用说明
职务:mcp经理 页码:1994276157 空格键:~622a1696db58c100687da202 家长编号:1995637406
MCP经理
动态MCP服务器路由器-通过单个代理连接管理多个MCP服务器。按需启动/停止服务器,而无需重新启动Claude。
github: https://github.com/grobomo/mcp-manager
快速开始
git clone https://github.com/grobomo/mcp-manager.git
cd mcp-manager
python setup.py
就是这样。安装程序构建项目,创建 servers.yaml,配置 .mcp.json,并验证服务器是否启动。打开一个新的Claude Code会话以开始。
特性
- 单工具界面 -一个
mcpm带有操作的工具(代币效率:约300个代币对约3000个代币) - 动态加载 -按需启动/停止MCP服务器,无需重新启动Claude
- 按需启动 -调用工具时,服务器会自动启动
- 崩溃恢复 -自动重启崩溃的服务器,并重试一次失败的呼叫
- 自动停止 -空闲服务器在1小时后停止以节省内存(可配置)
- 健康检查 -检测崩溃的stdio进程和无法访问的HTTP服务器,自动重启
- 通话指标 -每台服务器的呼叫计数、错误和延迟跟踪(在重启过程中持续)
- 二进制过滤 -拦截base64图像/资源,保存到临时文件,返回路径
- 蓝图中间件 -Auto通过client_id注入实现浏览器自动化
- 功能缓存 -即使服务器停止,也能查看可用工具
- 挂钩系统 -通过hooks.yaml配置调用工具后触发操作
- 按项目筛选 -通过以下方式限制每个项目的服务器访问
.mcp.json允许的服务器 - 交叉平台的 -适用于Windows、macOS和Linux
运作原理
Claude Code
|
v
mcp-manager (single proxy)
|
+-- mcpm(operation, server, tool, arguments)
|
v
Backend MCP Servers (started on demand)
- browser automation
- API wrappers
- custom tools
- Claude只与mcp经理联系
- 当您调用工具时,mcp管理器会路由到正确的后端服务器
- 服务器停止时自动启动,空闲时自动停止
mcpm工具
所有操作都通过一个 mcpm 工具:
mcpm(operation="<op>", server="<name>", ...)
运营
| 操作 | 说明 | 参数 |
|---|---|---|
list_servers |
列出所有状态为 | -的服务器 |
search |
按关键字搜索服务器/工具 | query |
details |
一台服务器上的完整信息 | server |
tools |
列出服务器上的工具 | server (可选) |
status |
系统运行状况、内存、PID | - |
logs |
跟踪最近的日志条目 | server (可选) |
help |
显示可用操作 | - |
call |
在后端服务器上执行工具 | server, tool, arguments |
start |
启动服务器 | server |
stop |
停止服务器 | server |
restart |
重新启动服务器 | server |
enable |
启用/禁用服务器 | server, enabled |
add |
注册新服务器 | server, command, args, description |
remove |
注销服务器 | server |
reload |
重新加载服务器.yaml | - |
discover |
扫描未注册的服务器 | - |
usage |
项目使用指标 | - |
ram |
内存仪表板 | - |
例子
# List servers
mcpm(operation="list_servers")
# Start a server
mcpm(operation="start", server="browser")
# Call a tool (auto-starts server if needed)
mcpm(operation="call", server="wiki-lite", tool="wiki_search", arguments={"query": "API docs"})
# Add a new server
mcpm(operation="add", server="my-server", command="node", args=["./server.js"], description="My custom server")
# Check memory usage
mcpm(operation="ram")
安装
先决条件
- Node.js 18+(适用于mcp经理本人)
- npm 9+
- python 3.10+(用于设置脚本和基于Python的服务器)
步骤
# 1. Clone and run setup (handles everything)
git clone https://github.com/grobomo/mcp-manager.git
cd mcp-manager
python setup.py
# 2. Open a new Claude Code session
自动设置:
- 安装npm依赖项并构建TypeScript
- 创建
servers.yaml从示例模板 - 将mcp管理器添加到
~/.mcp.json(全球性,适用于所有项目) - 添加使用说明
~/.claude/CLAUDE.md - 验证服务器是否正确启动
设置选项
python setup.py # Full setup (build + configure + verify)
python setup.py --check # Check prerequisites only
python setup.py --migrate # Migrate servers from .mcp.json to servers.yaml
配置
服务器.yaml
在中注册您的MCP服务器 servers.yaml:
servers:
# Local stdio server (Node.js)
my-node-server:
description: My custom Node.js server
command: node
args:
- ./servers/my-server/dist/index.js
enabled: true
auto_start: false
idle_timeout: 300000 # 5 minutes
# Local stdio server (Python)
my-python-server:
description: My Python server
command: python
args:
- ./servers/my-server/server.py
enabled: true
auto_start: false
# NPX server (always latest)
some-mcp:
description: Some MCP from npm
command: npx
args:
- some-mcp@latest
enabled: true
auto_start: false
# Remote HTTP server
remote-api:
description: Remote API server
url: https://api.example.com/mcp
enabled: true
auto_start: false
服务器选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
description |
string | - | 人类可读的描述 |
command |
string | - | 要运行的命令(node、python、npx等) |
args |
list | [] | 命令参数 |
url |
string | - | HTTP/WebSocket URL(命令的替代) |
enabled |
bool | true | 服务器是否可用 |
auto_start |
bool | false | 以Claude自动开始 |
idle_timeout |
int | 3600000 | 空闲后自动停止(毫秒,默认1小时) |
startup_delay |
int | 2000 | 初始化前等待(毫秒) |
env |
dict | {} | 环境变量 |
timeout |
int | 60000 | 请求超时(毫秒) |
tags |
list | [] | 分类标签(使用 no_auto_stop 免除空闲超时) |
路径约定
使用mcp管理器目录中的相对路径进行可移植性:
# Good - relative path
args:
- ./managed-servers/my-server/server.py
# Avoid - absolute path (not portable)
args:
- /home/user/mcp-manager/managed-servers/my-server/server.py
可靠性
自动停止空闲服务器
服务器在1小时不活动后自动停止以节省内存。健康检查每60秒运行一次,以检测崩溃的进程和无法访问的HTTP服务器。
servers:
wiki-lite:
idle_timeout: 600000 # 10 minutes (default: 3600000 = 1 hour)
tags:
- no_auto_stop # Never auto-stop this server
崩溃恢复
如果工具调用因服务器崩溃(stdin写入失败、EPIPE、流错误)而失败,mcp管理器会自动:
- 停止死机服务器
- 重新启动它
- 重试通话一次
无需配置-对于已启用的服务器,此选项始终处于活动状态。
健康检查
每60秒,mcp管理器检查所有正在运行的服务器:
- Stdio服务器 -检测退出的进程,清理资源,在以下情况下自动重启
auto_start: true - HTTP服务器 -发送ping请求,删除无法访问的服务器,如果配置了自动重启
通过以下方式检查服务器运行状况:
mcpm(operation="status")
钩子
钩子在工具调用后触发操作。在中配置 hooks.yaml:
defaults:
enabled: true
async: true
timeout: 5000
hooks:
# Pattern matches tool names (* = wildcard, prefix* = prefix match)
browser_navigate:
target_server: metrics-server
target_tool: log_event
result_contains: "success" # Only trigger if result contains this
extract:
url: args.url # Extract from call arguments
status: "regex:HTTP (\\d+)" # Extract from result via regex
source: "literal:${server}" # Variable substitution
summary: "result_summary:100" # First 100 chars of result
提取规格
| 规格 | 说明 | 示例 |
|---|---|---|
args.<field> |
调用参数的值 | args.query |
regex:<pattern> |
从结果中捕获组1 | regex:id=(\\d+) |
literal:<value> |
文字与 ${server}, ${tool} 替代品 |
literal:${server} |
result_summary:<n> |
结果的前N个字符 | result_summary:200 |
result |
完整结果文本 | result |
蓝图中间件
通过以下方式实现浏览器自动化 blueprint-extra 内置中间件:
- 自动注射
client_id上enable调用(使用项目名称或claude-code) - 自动启用 通话时
browser_*如果蓝图尚未启用,则使用工具 - 状态跟踪 跨启用/禁用呼叫
无需配置-随时激活 blueprint-extra 注册于 servers.yaml.
按项目筛选
限制项目可以通过哪些服务器访问 .mcp.json:
{
"mcpServers": {
"mcp-manager": {
"command": "node",
"args": ["path/to/mcp-manager/build/index.js"],
"allowedServers": ["wiki-lite", "v1-lite"]
}
}
}
当 allowedServers 设置后,只有这些服务器才会出现在 list_servers 并且可以被调用。其他服务器被阻止,并显示明确的错误消息。
项目结构
mcp-manager/
|-- src/
| |-- index.ts # Main server, transport, idle checker, config
| |-- utils.ts # Shared utilities (sanitizeLog, paths, memory)
| |-- hooks.ts # Post-call hook system
| |-- metrics.ts # Per-server call metrics
| |-- binary-filter.ts # Base64 image/resource interception
| |-- operations/
| |-- types.ts # Shared types (ServerConfig, RunningServer, etc.)
| |-- index.ts # Operation barrel exports
| |-- query/ # list_servers, search, details, tools, status, help
| |-- call/ # call + middleware (blueprint auto-enable)
| |-- admin/ # lifecycle, registry (add/remove/discover), usage/ram
|-- tests/ # 93 tests (node:test + tsx)
|-- build/ # Compiled JavaScript (tsup ESM)
|-- servers.yaml # Server registry (gitignored)
|-- hooks.yaml # Hook config (gitignored)
|-- setup.py # Installation script
故障排除
服务器无法启动
- 检查先决条件:
python setup.py --check - 验证服务器路径是否存在且正确
- 检查
mcpm(operation="details", server="server-name")对于配置错误 - 查看登录记录
.local/mcp-manager.log
未找到工具
- 启动服务器:
mcpm(operation="start", server="server-name") - 列出工具:
mcpm(operation="tools", server="server-name") - 工具已缓存-使用
mcpm(operation="reload")刷新
内存占用高
- 检查RAM:
mcpm(operation="ram") - 停止未使用的服务器:
mcpm(operation="stop", server="server-name") - 减少
idle_timeout在servers.yaml中
许可证
麻省理工学院
组织
看 组织.md 用于:
- 中央存储库结构
- 从不删除策略(始终存档)
- 使用.mcp.json进行项目设置
- 日志轮换(500MB,保留5个)
- 克劳德整合组织