MCP代码包装器
 ](https://www.npmjs.com/package/mcp-code-wrapper) ](https://github.com/paddo/mcp-code-wrapper/issues) 
⚠️ 实验性:该项目正在积极开发中,尚未准备好投入生产。API可能会更改,恕不另行通知。使用风险自负。欢迎投稿和反馈!
将MCP工具定义转换为渐进式发现API(节省96%的上下文)
使用自动渐进式工具发现为模型上下文协议服务器生成代码执行包装器。将上下文使用率降低高达96%,同时保持完整的MCP功能。
问题
将MCP服务器直接加载到Claude Code中会使所有工具定义的上下文膨胀:
Chrome DevTools MCP: 17,500 tokens (26 tools)
MSSQL Database (×2): 11,200 tokens (16 tools)
─────────────────────────────────────────────
Total: 28,700 tokens (14.5% of 200k context)使用3-4台MCP服务器,您可以在执行任何实际工作之前轻松达到50k+令牌。
解决方案
通过文件系统结构进行渐进式发现
不是预先加载所有工具,而是将它们呈现为Claude按需探索的TypeScript API文件系统:
api-universal/
├── index.ts # Root discovery (~100 tokens)
├── navigation/ # 6 tools
│ ├── navigate_page.ts # Load only when needed
│ └── index.ts
├── debugging/ # 5 tools
└── ...克劳德只读它需要的东西:
- 读取根索引→ 发现类别
- 探索类别→ 查看可用工具
- 阅读特定工具→ 获取文档
- 使用API→ 通过MCP执行
结果:典型的2-tool任务约550个令牌(而28700个令牌)
快速开始
安装
# Via npx (no install needed)
npx mcp-code-wrapper . # Current directory
npx mcp-code-wrapper /path/to/project # Specific project
npx mcp-code-wrapper --global # Global ~/.claude/ MCPs
npx mcp-code-wrapper --help # Show help
# Or clone and run locally
git clone https://github.com/paddo/mcp-code-wrapper
cd mcp-code-wrapper
pnpm install
pnpm run generate /path/to/project用法
项目模式 (转换项目中的MCP):
npx mcp-code-wrapper . # Current directory (interactive selection)
npx mcp-code-wrapper /path/to/project # Specific directory (interactive selection)
npx mcp-code-wrapper . --all # Generate all servers without prompting
npx mcp-code-wrapper . --servers mssql-main,chrome-devtools # Specific servers交互模式 (默认):
- 显示可用MCP服务器列表
- 选择要为其生成包装器的服务器
- 当您只需要特定的MCP时很有用
所有模式 (--all 标志):
- 在不提示的情况下为所有MCP生成包装器
- 适用于自动化/脚本
它的作用:
- 发现中的所有MCP服务器
.mcp.json - 服务器选择提示(除非
--all旗帜) - 在中生成代码包装器
.mcp-wrappers/ - 为每个MCP创建Claude代码技能
- 禁用MCP(保留执行器的配置)
- 更新
.gitignore
全局模式 (需要明确的标志):
npx mcp-code-wrapper --global寻找 ~/.claude/mcp.json 并在中生成包装器 ~/.claude/.mcp-wrappers/
世代之后
重新启动Claude代码以加载新技能:
claude -c⚠️ 重要提示: 当Claude Code重启并提示启用MCP时, 拒绝/关闭它们技能使用渐进式发现——MCP保持禁用状态,并由包装器按需生成。
技能将使用 .mcp.json 配置以通过渐进式发现按需生成服务器。
验证技能是否已加载
重启后,问克劳德它有什么技能:
> what skills do you have?
I have access to three specialized skills:
1. mcp-chrome-devtools - Browser automation and testing
- Navigate pages, fill forms, take screenshots
- Inspect network traffic, debug JavaScript
2. mcp-mssql-dev - Database operations on 'app_dev' database
- Execute SQL queries, read/write data
- Manage tables and schemas
3. mcp-mssql-prod - Database operations on 'app_prod' database
- Same SQL capabilities, production database代币管制
真实世界示例
之前 (直接MCP):
- Chrome DevTools:26个工具=17500个令牌
- 数据库服务器1:8个工具=5600个令牌
- 数据库服务器2:8个工具=5600个令牌
- 总计:28700个令牌(占上下文的14.5%)
之后 (渐进式发现):
- 根索引:约200个令牌
- 2个工具定义:~350个令牌
- 总计:约550个代币
- 节省:98% (释放28150个代币)
可扩展性
| 工作流 | 使用的工具 | 直接MCP | 渐进式 | 节省 |
|---|---|---|---|---|
| 简单任务 | 2个工具 | 28700个令牌 | 550个令牌 | 98% |
| 中等任务 | 5个工具 | 28700个代币 | 950个代币 | 97% |
| 复杂任务 | 10个工具 | 28700个令牌 | 1650个令牌 | 94% |
即使是复杂的工作流程也能节省90%以上的上下文。
运作原理
1.将MCP添加到您的项目中
// .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": "***"
}
}
}
}2.生成包装
npx mcp-code-wrapper /path/to/project输出:
🔍 Discovering MCP servers in /path/to/project
✅ Found .mcp.json
📦 Discovered 2 MCP servers:
- chrome-devtools
- database-server
🔧 Generating wrapper for: chrome-devtools
✅ 26 tools in 7 categories
🎯 Creating Claude Code Skill wrapper...
🔧 Generating wrapper for: database-server
✅ 8 tools in 1 category
🎯 Creating Claude Code Skill wrapper...
✅ Generated wrappers for 2 MCP servers
📁 Output: /path/to/project/.mcp-wrappers/
🔕 Disabled 2 MCP servers in .mcp.json
🔕 Disabled MCPs in settings.local.json
MCPs stay in .mcp.json for executor reference
Restore with: npx mcp-code-wrapper --restore
⚠️ IMPORTANT: Restart Claude Code to load new Skills
Run: claude -c3.生成的结构
/path/to/project/
├── .mcp.json # MCPs disabled (in-place)
├── .mcp-wrappers/ # Generated code 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 disabled (in-place)
└── skills/ # Auto-generated Skills
├── mcp-chrome-devtools/
│ ├── skill.json
│ └── instructions.md
└── mcp-database-server/
├── skill.json
└── instructions.md4.行动中的渐进式发现
当你调用技能时:
// Claude reads root index (100 tokens)
import * as db from './.mcp-wrappers/database-server/index.ts';
// Discovers: { queries: {...} }
// Explores category (50 tokens)
import * as queries from './.mcp-wrappers/database-server/queries/index.ts';
// Discovers: { read_data, insert_data, ... }
// Reads specific tool (200 tokens)
import { read_data } from './.mcp-wrappers/database-server/queries/read_data.ts';
// Gets full documentation and API
// Uses tool
const result = await read_data({ query: 'SELECT * FROM users' });总计:350个令牌(而加载所有工具的令牌为5600个)
主要特点
✅ 通用:适用于任何MCP服务器(npm、Python、二进制文件、自定义) ✅ 自动发现:查找中的所有MCP .mcp.json 自动地 ✅ 技能整合:自动生成Claude代码技能 ✅ 配置保存:禁用MCP,但保留executor的配置 ✅ 代币高效:96%以上的上下文节省 ✅ Git安全:自动更新 .gitignore 对于生成的代码 ✅ 没有秘密:Env vars待在家里 .mcp.json (未跟踪) ✅ 自动归一化响应:运行时执行器自动解包MCP响应格式
用例
1.多数据库项目
转换多个数据库MCP而不会造成上下文膨胀:
# Project with 3 database connections
npx mcp-code-wrapper /path/to/project
# Before: 3 databases × 5.6k tokens = 16.8k tokens
# After: Root + 3 tools = ~800 tokens
# Savings: 95%2.浏览器自动化
在不加载所有26个工具的情况下使用Chrome DevTools MCP:
# Before: 17.5k tokens
# After (using 2 tools): 650 tokens
# Savings: 96%3.全球MCP管理
一次性转换所有全局MCP:
npx mcp-code-wrapper --global
# Skills available in all projects
# MCPs disabled globally
# Context savings across all sessions高级用法
恢复原始MCP
删除所有生成的包装和技能,重新启用MCP:
# Restore current directory
npx mcp-code-wrapper --restore
# Restore specific project
npx mcp-code-wrapper --restore /path/to/project这将:
- 移除
.mcp-wrappers/目录 - 移除所有
mcp-*技能来自.claude/skills/ - 在中重新启用MCP
.mcp.json(删除"disabled": true) - 在中重新启用MCP
.claude/settings.local.json
未创建备份文件 -对配置进行操作,以避免意外提交机密。
保持MCP启用
默认情况下,MCP在包装器生成后被禁用。要保持启用状态,请执行以下操作:
npx mcp-code-wrapper /path/to/project --no-disable这会生成包装,但使MCP在两者中都处于活动状态 .mcp.json 和 .claude/settings.local.json.
生成所有内容而不提示
要跳过交互式服务器选择并一次生成所有服务器,请执行以下操作:
npx mcp-code-wrapper /path/to/project --all这对于自动化、CI/CD或始终希望包装所有MCP时非常有用。
生成特定服务器
要在不提示的情况下为特定服务器生成包装器,请执行以下操作:
npx mcp-code-wrapper /path/to/project --servers mssql-main,chrome-devtools这在以下情况下很有用:
- 只想包装特定的MCP
- 正在脚本中自动生成包装器
- 只想在没有交互式提示的情况下重新生成一台服务器
为特定MCP生成
# Traditional command mode (for testing)
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 entry point
│ ├── generator-universal.ts # Universal MCP generator
│ ├── executor.ts # MCP client & code executor
│ ├── measure-tokens.ts # Token comparison tool
│ └── index.ts # Demo workflow
├── USAGE.md # Detailed usage guide
├── FINDINGS.md # Experiment analysis
├── CONTEXT.md # Project context
└── UNIVERSAL_GENERATOR.md # Technical details文档
工作流比较
无代码包装器
Session Start
└─ Load all MCP tool definitions (28.7k tokens)
└─ Use 2 tools
└─ 26.7k tokens wasted on unused tools使用代码包装器
Session Start
└─ Load Skills (50 tokens)
└─ Read root index (100 tokens)
└─ Navigate to category (50 tokens)
└─ Read 2 tool files (350 tokens)
└─ Use tools
Total: 550 tokens (98% savings)需求
- Node.js 18+
- 克劳德代码(用于技能整合)
- 项目与
.mcp.json或全球~/.claude/mcp.json
贡献
欢迎投稿!请看 贡献.md 作为指导方针。
这是一个实验项目。看 内容.md 了解当前状态和下一步行动。
许可证
麻省理工学院
相关工作
- MCP上下文隔离 -基础设施级解决方案
- 技能可控性 -为什么技能需要明确的控制
- 停止快速运行克劳德代码 -背景纪律很重要
