⚠️ 实验性: 该项目正在积极开发中,尚未准备好用于生产环境。API可能会在没有通知的情况下更改。请自行承担风险使用。欢迎贡献和反馈!
将MCP工具定义转换为渐进式发现API(节省上下文96%)
为Model Context Protocol服务器生成自动渐进式工具发现的代码执行包装器。在保持完整的MCP功能的同时,减少上下文使用高达96%。
直接将MCP服务器加载到Claude Code中会用所有工具定义填充上下文:
Chrome DevTools MCP: 17,500 个标记(26个工具)
MSSQL 数据库(×2): 11,200 个标记(16个工具)
─────────────────────────────────────────────
总计: 28,700 个标记(占200k上下文的14.5%)
有了3-4个MCP服务器,你在实际工作之前很容易达到50k以上的标记。
通过文件系统结构进行渐进式发现
不是一开始就加载所有工具,而是将它们呈现为一个TypeScript API文件系统,Claude可以在需要时探索:
api-universal/
├── index.ts # 根发现(约100个标记)
├── navigation/ # 6个工具
│ ├── navigate_page.ts # 需要时才加载
│ └── index.ts
├── debugging/ # 5个工具
└── ...
Claude只读取它需要的内容:
结果:对于典型的2个工具任务,大约550个标记(与28,700个标记相比)
# 通过npx(无需安装)
npx mcp-code-wrapper . # 当前目录
npx mcp-code-wrapper /path/to/project # 特定项目
npx mcp-code-wrapper --global # 全局 ~/.claude/ MCPs
npx mcp-code-wrapper --help # 显示帮助
# 或克隆并本地运行
git clone https://github.com/paddo/mcp-code-wrapper
cd mcp-code-wrapper
pnpm install
pnpm run generate /path/to/project
项目模式(转换项目中的MCPs):
npx mcp-code-wrapper . # 当前目录(交互选择)
npx mcp-code-wrapper /path/to/project # 特定目录(交互选择)
npx mcp-code-wrapper . --all # 生成所有服务器而不提示
npx mcp-code-wrapper . --servers mssql-main,chrome-devtools # 特定服务器
交互模式(默认):
全部模式(--all标志):
它做了什么:
.mcp.json中发现所有MCP服务器--all标志).mcp-wrappers/中生成代码包装器.gitignore全局模式(需要显式标志):
npx mcp-code-wrapper --global
查找~/.claude/mcp.json并在~/.claude/.mcp-wrappers/中生成包装器
重启Claude Code以加载新技能:
claude -c
⚠️ 重要:当Claude Code重启并提示启用MCPs时,请拒绝/关闭它们。技能使用渐进式发现——MCPs保持禁用状态,并由包装器按需生成。
技能将使用.mcp.json配置按需生成服务器,进行渐进式发现。
重启后,询问Claude它有哪些技能:
> 你有哪些技能?
我有三个专门的技能:
1. mcp-chrome-devtools - 浏览器自动化和测试
- 导航页面,填写表单,截屏
- 检查网络流量,调试JavaScript
2. mcp-mssql-dev - 在'app_dev'数据库上操作
- 执行SQL查询,读写数据
- 管理表和模式
3. m- mcp-mssql-prod - 在'app_prod'数据库上操作
- 相同的SQL能力,生产数据库
之前(直接MCP):
之后(渐进式发现):
| 工作流 | 使用的工具 | 直接MCP | 渐进式 | 节省 |
|---|---|---|---|---|
| 简单任务 | 2个工具 | 28,700个标记 | 550个标记 | 98% |
| 中等任务 | 5个工具 | 28,700个标记 | 950个标记 | 97% |
| 复杂任务 | 10个工具 | 28,700个标记 | 1,650个标记 | 94% |
即使是复杂的工作流程也能节省90%以上的上下文。
// .mcp.json
{
"mcpServers": {
"chrome-devtools": {
"type": "stdio",
"command": "npx",
"args": ["chrome-devtools-mcp@latest"],
"env": {}
},
"database-server": {
"type": "stdio",
"command": "node",
"args": [".mcp-server/dist/index.js"],
"env": {
"DB_HOST": "your-host",
"DB_NAME": "your-database",
"DB_USER": "your-user",
"DB_PASSWORD": "***"
}
}
}
}
npx mcp-code-wrapper /path/to/project
输出:
🔍 在/path/to/project中发现MCP服务器
✅ 找到.mcp.json
📦 发现2个MCP服务器:
- chrome-devtools
- database-server
🔧 正在生成包装器:chrome-devtools
✅ 7个类别中有26个工具
🎯 创建Claude Code技能包装器...
🔧 正在生成包装器:database-server
✅ 1个类别中有8个工具
🎯 创建Claude Code技能包装器...
✅ 为2个MCP服务器生成包装器
📁 输出:/path/to/project/.mcp-wrappers/
🔕 在.mcp.json中禁用2个MCP服务器
🔕 在settings.local.json中禁用MCPs
MCPs保留在.mcp.json中供执行器参考
恢复:npx mcp-code-wrapper --restore
⚠️ 重要:重启Claude Code以加载新技能
运行:claude -c
/path/to/project/
├── .mcp.json # MCPs禁用(就地)
├── .mcp-wrappers/ # 生成的代码包装器
│ ├── chrome-devtools/
│ │ ├── navigation/
│ │ │ ├── navigate_page.ts
│ │ │ ├── take_screenshot.ts
│ │ │ └── index.ts
│ │ ├── debugging/
│ │ └── index.ts
│ └── database-server/
│ ├── queries/
│ │ ├── read_data.ts
│ │ ├── insert_data.ts
│ │ └── index.ts
│ └── index.ts
└── .claude/
├── settings.local.json # MCPs禁用(就地)
└── skills/ # 自动生成的技能
├── mcp-chrome-devtools/
│ ├── skill.json
│ └── instructions.md
└── mcp-database-server/
├── skill.json
└── instructions.md
当你调用一个技能时:
// Claude读取根索引(100个标记)
import * as db from './.mcp-wrappers/database-server/index.ts';
// 发现:{ queries: {...} }
// 探索类别(50个标记)
import * as queries from './.mcp-wrappers/database-server/queries/index.ts';
// 发现:{ read_data, insert_data, ... }
// 读取特定工具(200个标记)
import { read_data } from './.mcp-wrappers/database-server/queries/read_data.ts';
// 获取完整文档和API
// 使用工具
const result = await read_data({ query: 'SELECT * FROM users' });
总计:350个标记(与加载所有工具的5,600个标记相比)
✅ 通用:适用于任何MCP服务器(npm、Python、二进制文件、自定义)
✅ 自动发现:自动找到.mcp.json中的所有MCPs
✅ 技能集成:自动生成Claude Code技能
✅ 配置保留:禁用MCPs但保留执行器的配置
✅ 标记高效:节省上下文96%以上
✅ Git安全:自动更新.gitignore以适应生成的代码
✅ 不提交秘密:环境变量保留在.mcp.json中(不跟踪)
✅ 自动规范化响应:运行时执行器自动解包MCP响应格式
转换多个数据库MCPs而不会造成上下文膨胀:
# 包含3个数据库连接的项目
npx mcp-code-wrapper /path/to/project
# 之前:3个数据库 × 5.6k个标记 = 16.8k个标记
# 之后:根 + 3个工具 = 约800个标记
# 节省:95%
使用Chrome DevTools MCP而不加载所有26个工具:
# 之前:17.5k个标记
# 之后(使用2个工具):650个标记
# 节省:96%
一次性转换所有全局MCPs:
npx mcp-code-wrapper --global
# 技能在所有项目中可用
# 全局禁用MCPs
# 在所有会话中节省上下文
移除所有生成的包装器和技能,重新启用MCPs:
# 恢复当前目录
npx mcp-code-wrapper --restore
# 恢复特定项目
npx mcp-code-wrapper --restore /path/to/project
这将:
.mcp-wrappers/目录mcp-*技能从.claude/skills/.mcp.json中重新启用MCPs(删除"disabled": true).claude/settings.local.json中重新启用MCPs不创建备份文件 - 在配置中就地操作,以避免意外提交秘密。
默认情况下,生成包装器后会禁用MCPs。要保持它们启用:
npx mcp-code-wrapper /path/to/project --no-disable
这将生成包装器,但保持MCPs在.mcp.json和.claude/settings.local.json中处于活动状态。
跳过交互式服务器选择并一次性生成所有:
npx mcp-code-wrapper /path/to/project --all
这对于自动化、CI/CD或始终希望所有MCPs被包装的情况很有用。
为特定服务器生成包装器而不提示:
npx mcp-code-wrapper /path/to/project --servers mssql-main,chrome-devtools
这在以下情况下很有用:
# 传统命令模式(用于测试)
pnpm run generate --from-mcp-json /path/to/.mcp.json --server database-server
DB_HOST=your-host DB_NAME=your-database pnpm run generate node /path/to/mcp-server.js
mcp-code-wrapper/
├── src/
│ ├── cli.ts # npx入口点
│ ├── generator-universal.ts # 通用MCP生成器
│ ├── executor.ts # MCP客户端及代码执行器
│ ├── measure-tokens.ts # 标记比较工具
│ └── index.ts # 示例工作流程
├── USAGE.md # 详细的使用指南
├── FINDINGS.md # 实验分析
├── CONTEXT.md # 项目背景
└── UNIVERSAL_GENERATOR.md # 技术细节
会话开始
└─ 加载所有MCP工具定义(28.7k个标记)
└─ 使用2个工具
└─ 浪费26.7k个标记在未使用的工具上
会话开始
└─ 加载技能(50个标记)
└─ 读取根索引(100个标记)
└─ 导航到类别(50个标记)
└─ 读取2个工具文件(350个标记)
└─ 使用工具
总计:550个标记(节省98%)
.mcp.json的项目或全局~/.claude/mcp.json欢迎贡献!请参阅CONTRIBUTING.md获取指南。
这是一个实验性项目。请参阅CONTEXT.md了解当前状态和下一步计划。
MIT