代码执行MCP
实现Anthropic的模式 “使用MCP执行代码” 文章介绍了高效的AI代理操作。
核心见解
代理编写的代码不是预先加载数千个工具定义并通过模型上下文传递中间结果,而是:
- 按需发现工具(逐步披露)
- 在沙盒中处理数据(不在上下文中)
- 仅返回汇总/筛选的结果
结果:与直接工具调用相比,令牌减少高达98.7%。
特性
1.沙盒代码执行
- 资源限制(30秒超时,500MB内存)
- 受限内置组件(安全子集)
- 安全模块(json、re、math、datetime等)
- 工作空间文件实用程序
2.渐进式工具发现
- 按查询搜索工具,不加载定义
- 先获取摘要,按需获取完整定义
- 按类别组织(安全、内存、集群等)
3.PII标记化
- 自动检测敏感数据(电子邮件、电话、SSN等)
- 在数据到达模型之前替换为令牌
- 在需要工具调用时进行恢复
4.技能坚持
- 保存可重用的代码片段
- 随着时间的推移建立复合能力
- 跨会话共享
工具
| 工具 | 说明 |
|---|---|
execute_code | 在安全沙箱中运行Python |
search_tools | 渐进式工具发现 |
get_tool_definition | 加载完整的工具详细信息 |
save_skill | 持久化可重用代码 |
load_skill | 节省负载技能 |
list_skills | 列出所有技能 |
sanitize_pii | 在文本中标记PII |
restore_pii | 恢复标记化的PII |
write_workspace_file | 将数据持久化到工作区 |
read_workspace_file | 从工作区读取 |
list_workspace_files | 列出工作区内容 |
get_execution_stats | 环境统计 |
使用示例
高效数据处理
# Instead of returning 10,000 rows to context:
code = '''
data = json.loads(read_file("large_dataset.json"))
filtered = [d for d in data if d['status'] == 'active']
result = {
'total': len(data),
'active': len(filtered),
'sample': filtered[:5]
}
'''
execute_code(code)
# Returns only summary, not full dataset渐进式工具发现
# Find security tools (minimal tokens)
search_tools("vulnerability", category="security", detail_level="summary")
# Load full definition only when needed
get_tool_definition("web_vuln_scanner", category="security")隐私保护操作
# Sanitize before processing
sanitize_pii("Contact john@example.com at 555-123-4567")
# Returns: "Contact [EMAIL_abc123] at [PHONE_def456]"
# Restore when needed
restore_pii("[EMAIL_abc123]")
# Returns: "john@example.com"培养技能
# Save a reusable skill
save_skill(
name="filter_high_risk",
code="def filter_high_risk(vulns): return [v for v in vulns if v['severity'] in ['high', 'critical']]",
description="Filter vulnerabilities to high/critical only"
)
# Use in future code execution
code = '''
skill = load_skill("filter_high_risk")
exec(skill)
vulns = json.loads(read_file("scan_results.json"))
result = filter_high_risk(vulns)
'''安装
cd /mnt/agentic-system/mcp-servers/code-execution-mcp
pip install -e .配置
添加 ~/.claude.json:
{
"mcpServers": {
"code-execution": {
"command": "/mnt/agentic-system/.venv/bin/python3",
"args": ["/mnt/agentic-system/mcp-servers/code-execution-mcp/src/code_execution_mcp/server.py"],
"disabled": false
}
}
}建筑
code-execution-mcp/
├── workspace/ # Sandboxed file storage
├── skills/ # Persistent skill definitions
├── tools_registry/ # Tool definitions for discovery
│ ├── security/ # Security tools
│ └── memory/ # Memory tools
└── src/
└── code_execution_mcp/
└── server.py # Main MCP server安全说明
- 代码使用受限制的内置程序运行(否
open,exec,eval任意输入) - 文件访问仅限于工作区目录
- 资源限制可防止执行失控
- 无法从沙盒访问网络
