将任何MCP服务器转换为Claude技能,并节省90%的上下文。
MCP服务器很棒,但在启动时会将所有工具定义加载到上下文中。对于20多个工具来说,这意味着在Claude开始工作之前,已经有30-50k个令牌被消耗了。
此转换器应用了“渐进式披露”模式(受playwright-skill启发)到任何MCP服务器:
# 1. 创建你的MCP配置文件
cat > github-mcp.json << 'EOF'
{
"name": "github",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": "your-token-here"}
}
EOF
# 2. 转换为技能
python mcp_to_skill.py \
--mcp-config github-m-mp.json \
--output-dir ./skills/github
# 3. 安装依赖
cd skills/github
pip install mcp
# 4. 复制到Claude
cp -r . ~/.claude/skills/github
完成!Claude现在可以使用最少上下文的GitHub工具了。
转换器:
SKILL.md - 给Claude的指令executor.py - 动态处理MCP调用之前(MCP):
20个工具 = 始终加载30k个令牌
可用上下文:170k / 200k = 85%
之后(技能):
20个技能 = 2k个令牌元数据
当1个技能激活时:7k个令牌
可用上下文:193k / 200k = 96.5%
GitHub MCP服务器(8个工具):
| 指标 | MCP | 技能 | 节省 |
|---|---|---|---|
| 空闲 | 8,000个令牌 | 100个令牌 | 98.75% |
| 活跃 | 8,000个令牌 | 5,000个令牌 | 37.5% |
任何标准MCP服务器:
使用此转换器的情况:
坚持使用MCP的情况:
最佳方法:同时使用两者
pip install mcp
需要Python 3.8+。
┌─────────────────────────────────────┐
│ 你的MCP配置 │
│ (JSON文件) │
└──────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ mcp_to_skill.py │
│ - 读取配置 │
│ - 生成技能结构 │
└──────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 生成的技能 │
│ ├── SKILL.md (100个令牌) │
│ ├── executor.py (动态调用) │
│ └── 配置文件 │
└─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Claude │
│ - 仅加载元数据 │
│ - 需要时加载完整文档 │
│ - 调用执行器进行工具调用 │
└─────────────────────────────────────┘
# 创建配置
cat > github.json << 'EOF'
{
"name": "github",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": "ghp_your_token"}
}
EOF
# 转换
python mcp_to_skill.py --mcp-config github.json --output-dir ./skills/github
# 结果:GitHub工具可用,仅需100个令牌,而非8k
# 转换多个MCP服务器
for config in configs/*.json; do
name=$(basename "$config" .json)
python mcp_to_skill.py --mcp-config "$config" --output-dir "./skills/$name"
done
pip install mcp
检查你的配置文件:
cd skills/your-skill
# 列出工具
python executor.py --list
# 描述一个工具
python executor.py --describe tool_name
# 调用一个工具
python executor.py --call '{"tool": "tool_name", "arguments": {...}}'
mcp Python包这是一个概念验证。欢迎贡献:
灵感来自:
MIT
状态:功能正常但处于初期阶段
反馈:欢迎提交问题和PR
疑问:打开一个问题