工具棚
MCP代理服务器,只需2个工具即可多路复用多个MCP后端。
问题
MCP驱动的代理每次都会将工具模式加载到其上下文窗口中。如果你在多个MCP服务器上有20多个工具,那么在代理开始思考之前,就已经花费了数千个令牌。随着服务器的增加,成本呈线性增长。
解决方案
Toolshed位于您的代理和MCP后端之间。它没有直接公开每个工具模式,而是只公开了两个工具:
list_tools--在运行时发现可用工具run_tool--按名称调用任何后端工具
你的代理看到了大约400个模式令牌,而不是数千个。工具发现通过代理按需进行。
需求
- Python 3.10+
mcpSDK>=1.22.0
设置
1.安装依赖项
pip install -r requirements.txt2.配置您的后端
复制示例配置并对其进行编辑:
cp toolshed.example.json toolshed.jsontoolshed.json 定义Toolshed代理的MCP服务器:
{
"servers": {
"my-http-server": {
"type": "http",
"url": "http://127.0.0.1:8000/mcp"
},
"my-stdio-server": {
"type": "stdio",
"command": "python3",
"args": ["path/to/your/mcp_server.py"],
"env": {}
}
},
"groups": {
"research": ["my-http-server:search", "my-http-server:fetch"],
"ops": ["my-http-server:health_check"]
}
}服务器类型:
| 类型 | 描述 |
|---|---|
http | 通过可流式传输的http连接到正在运行的MCP服务器。集 url 连接到服务器的MCP端点。 |
stdio | 生成一个子进程,并通过stdin/stdout进行通信。集 command, args,并且可选 env. |
群组 是可选的。它们允许您将跨服务器的工具组织成逻辑集合(例如“研究”、“操作”)。将组名传递给 list_tools 过滤结果。
3.启动服务器
python3 toolshed.py --config toolshed.json --port 8750服务器启动于 http://127.0.0.1:8750启动时,它连接到所有配置的后端并构建工具目录。
4.连接您的代理
Toolshed公开了一个标准的MCP流式HTTP端点,因此它与 任何兼容MCP的客户端 --不仅仅是克劳德代码。
克劳德代码 (~/.claude/mcp.json):
{
"mcpServers": {
"toolshed": {
"type": "http",
"url": "http://127.0.0.1:8750/mcp"
}
}
}其他MCP客户端: 将您的客户指向 http://127.0.0.1:8750/mcp 使用流式HTTP传输。任何支持MCP的代理或框架(Claude agent SDK、OpenAI Agents SDK、LangChain、Cursor等)都可以连接。
您的代理现在可以通过以下方式访问所有后端工具 list_tools 和 run_tool.
用法
list_tools
发现所有后端的可用工具:
list_tools() # all tools
list_tools(group="research") # filter by group返回工具名称、描述、输入模式以及哪个服务器拥有每个工具。
运行工具
在特定后端调用特定工具:
run_tool(server="my-http-server", tool="search", args={"query": "hello"})从后端返回原始结果——Toolshed不会修改或汇总响应。
端点
| 端点 | 描述 |
|---|---|
GET/POST /mcp | MCP协议端点(可流式传输http) |
GET /refresh | 强制刷新完整工具目录 |
GET /refresh?server=name | 刷新一个后端的工具 |
作为服务运行(systemd)
编辑 toolshed.service 要为系统设置正确的路径,请执行以下操作:
cp toolshed.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now toolshed检查状态:
systemctl --user status toolshed
journalctl --user -u toolshed -f运作原理
- 启动时,Toolshed连接到中的每个后端
toolshed.json - 它召唤
tools/list在每个后端上缓存结果 - 当代理人来电时
list_tools,Toolshed返回缓存的目录 - 当代理人来电时
run_tool,Toolshed将调用转发到右后端并返回原始结果 - 击打
/refresh在不重新启动的情况下重建目录
项目结构
toolshed.py # Server (single file, all logic)
toolshed_bridge.py # stdio-to-HTTP bridge for Claude Code MCP integration
torus-launcher.sh # Startup script that launches all MCP backend servers on first session
toolshed.json # Your backend config (gitignored)
toolshed.example.json # Example config to copy
test_toolshed.py # Test suite
toolshed.service # systemd unit template
requirements.txt # Python dependencies使用环形技能
工具架和 环形技能 它们被设计为协同工作。将技能服务器注册为后端 toolshed.json 您的代理通过同一个2-tool接口获得技能发现、调用和质量跟踪:
{
"servers": {
"torus-skills": {
"type": "http",
"url": "http://127.0.0.1:8743/mcp"
}
}
}两者也可以单独使用。
作为子模块
可以用作任何项目中的子模块,包括 Torus框架:
git submodule add https://github.com/OZmasterAI/toroidal-toolshed.git toolshed内置于
内置于 Torus框架 --Claude Code的自我进化质量框架。
许可证
阿帕奇-2.0
