MCP协调员
一个MCP服务器,充当多个MCP服务器的代理,只向Claude公开3个工具,而不是从每个服务器加载所有工具定义。这大大降低了上下文窗口的消耗,同时保持了对所有MCP功能的完全访问。
问题
您添加到Claude的每个MCP服务器都会将其所有工具定义加载到您的上下文窗口中。仅GitHub MCP就可以在每条消息上消耗50多个工具定义的令牌。
解决方案
MCP协调器仅公开3个工具。当Claude需要使用MCP时,协调器会动态加载它,调用工具,并仅返回结果。
特性
- 将上下文窗口的使用量从约15000+个令牌减少到约500个令牌
- 按需动态加载MCP服务器
- 重复使用连接以获得更好的性能
- 基于清单的简单配置,用于添加/删除服务器
- 支持服务器配置中的环境变量替换
工具
list_mcps
列出所有可用的MCP服务器及其说明。
输入: 无
退货: 清单中的服务器名称和描述数组。
get_mcp_tools
获取特定MCP服务器中可用的工具列表。
输入:
server_name(string,必填):来自的MCP服务器的名称list_mcps
退货: 包含名称、描述和输入模式的工具数组。
call_mcp_tool
调用MCP服务器上的特定工具。
输入:
server_name(字符串,必填):MCP服务器的名称tool_name(string,必填):要调用的工具的名称tool_args(object,可选):传递给工具的参数
退货: MCP工具调用的结果。
用法
MCP协调员设计用于:
- 使用多个MCP服务器时减少上下文窗口消耗
- 需要访问多个MCP但不能同时访问所有MCP的项目
- 在使用工具之前要查询可用工具的工作流
- 保持克劳德谈话的简洁和专注
配置
协调员本身要求 没有API密钥或令牌。您只需在清单中为需要它们的特定MCP服务器(如GitHub MCP)提供令牌。
使用Claude Desktop
将此添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"coordinator": {
"command": "node",
"args": ["C:\\path\\to\\mcp_coordinator\\build\\index.js"]
}
}
}使用Claude代码
项目级配置
创建一个 .mcp.json 项目根目录中的文件:
{
"mcpServers": {
"coordinator": {
"command": "cmd",
"args": ["/c", "node", "C:\\path\\to\\mcp_coordinator\\build\\index.js"]
}
}
}全局配置(所有项目)
创建 ~/.claude/.mcp.json:
{
"mcpServers": {
"coordinator": {
"command": "cmd",
"args": ["/c", "node", "C:\\path\\to\\mcp_coordinator\\build\\index.js"]
}
}
}为特定MCP传递令牌
如果您使用需要身份验证的MCP服务器(如GitHub),请将令牌作为环境变量传递:
{
"mcpServers": {
"coordinator": {
"command": "node",
"args": ["C:\\path\\to\\mcp_coordinator\\build\\index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}协调员通过以下方式将这些信息传递给子MCP ${VAR_NAME} 清单中的语法。
添加MCP服务器
编辑 src/manifest.json (并重建)或直接编辑 build/manifest.json.
不需要身份验证的MCP
许多MCP在没有任何令牌的情况下工作:
{
"servers": {
"sequential-thinking": {
"description": "Step-by-step thinking and problem decomposition",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"],
"env": {}
},
"filesystem": {
"description": "Read, write, and manage local files",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "C:/"],
"env": {}
}
}
}需要身份验证的MCP
某些MCP需要API令牌才能访问外部服务:
{
"servers": {
"github": {
"description": "GitHub operations: repos, issues, PRs, branches, commits",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}环境变量使用 ${VAR_NAME} 语法,并在运行时从协调器的环境中解析。只传递您正在使用的MCP实际需要的令牌。
建筑
# Install dependencies
npm install
# Build TypeScript
npm run build
# Copy manifest to build folder
cp src/manifest.json build/manifest.json上下文窗口节省
| 方法 | 上下文中的工具 | 近似令牌 |
|---|---|---|
| 直接GitHub MCP | 50多种工具 | 约15000个代币 |
| 直接+文件系统+提取 | 80+工具 | ~25000个令牌 |
| MCP协调员 | 3个工具 | ~500个代币 |
包含的服务器
默认清单包括:
- GitHub -GitHub操作(仓库、问题、PR、分支、提交)
- 文件系统 -读取、写入和管理本地文件
- 获取 -获取URL并检索web内容
致谢
- Reddit用户 u/mrgoonvn 关于导致这个项目的MCP上下文膨胀的灵感
- 官方服务器实现的MCP社区(GitHub、文件系统、Fetch、Sequential Thinking)
- 建于 克劳德代码
许可证
此MCP服务器根据GPL-3.0许可证获得许可。这意味着您可以根据GPL-3.0许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。
