返回 MCP 目录
public公开dns本地运行

code-executor-mcp

一个解决MCP服务器上下文限制问题的代码执行器,通过沙箱环境按需调用工具,实现98%的令牌节省和无限工具访问。

article

README

🚀 Code Executor MCP

Code Executor MCP 打破了只能使用 2 - 3 个 MCP 服务器的限制。它凭借单一的 MCP 便能统筹全局,实现高达 98% 的令牌节省,让你无需担忧上下文耗尽的问题,可无限制地访问各类工具。

npm version Docker Pulls License: MIT

🚀 快速开始

选项 1:交互式设置向导(推荐)

无需手动配置,我们的向导将为你完成一切:

npm install -g code-executor-mcp
code-executor-mcp setup

向导的功能如下

  1. 🔍 扫描现有的 MCP 配置(Claude Code 的 ~/.claude.json、Cursor 的 ~/.cursor/mcp.json 以及项目的 .mcp.json
  2. ⚙️ 使用智能默认值进行配置(也可交互式自定义)
  3. 🤖 新增功能:写入完整的 MCP 配置(采样 + 安全 + 沙箱 + 性能)
  4. 📦 生成类型安全的 TypeScript/Python 包装器,以实现自动补全
  5. 📅 可选:设置每日同步,以自动更新包装器

完整配置(全部自动写入):

  • AI 采样:支持多供应商(Anthropic、OpenAI、Gemini、Grok、Perplexity)
  • 安全:审计日志、内容过滤、项目限制
  • 沙箱:带有超时设置的 Deno/Python 执行环境
  • 性能:速率限制、模式缓存、执行超时

智能默认值(只需按回车键):

  • 端口:3333 | 超时时间:120 秒 | 速率限制:60 次/分钟
  • 审计日志:~/.code-executor/audit-logs/
  • 采样:禁用(可通过 API 密钥可选启用)

支持的 AI 工具:Claude Code 和 Cursor(更多即将推出)

首次运行检测: 如果你在未配置的情况下尝试运行 code-executor-mcp,将会看到以下提示:

❌ 未找到 MCP 配置

📝 要配置 code-executor-mcp,请运行:
   code-executor-mcp setup

配置将创建于:~/.claude.json

什么是包装器?

向导会为你的 MCP 工具生成 TypeScript/Python 包装器函数:

手动调用(之前)

const file = await callMCPTool('mcp__filesystem__read_file', {
  path: '/src/app.ts'
});

使用包装器(之后)

import { filesystem } from './mcp-wrappers';
const file = await filesystem.readFile({ path: '/src/app.ts' });

好处

  • ✅ 类型安全,具备完整的智能感知/自动补全功能
  • ✅ 带有来自模式的自文档化 JSDoc 注释
  • ✅ 无需记住确切的工具名称
  • ✅ 与实际的 MCP 工具 API 相匹配(从模式生成)

保持包装器更新: 向导可以设置每日同步(可选),以自动重新生成包装器:

  • macOS:launchd plist 在凌晨 4 - 6 点运行
  • Linux:systemd 定时器在凌晨 4 - 6 点运行
  • Windows:任务计划程序在凌晨 4 - 6 点运行

每日同步会重新扫描你的 AI 工具配置和项目配置,以发现新的或已移除的 MCP 服务器。你也可以随时手动运行 code-executor-mcp setup 进行更新。

选项 2:手动配置

1. 安装

npm install -g code-executor-mcp

2. 配置

重要提示:Code-executor 会从以下两个位置发现并合并 MCP 服务器:

  • 全局~/.claude.json(跨项目的 MCP,如语音模式、个人工具)
  • 项目.mcp.json(项目根目录下团队共享的 MCP)

配置合并规则:全局 MCP + 项目 MCP = 所有可用的 MCP(项目配置会覆盖全局配置中重复的名称)

将以下内容添加到你的 项目 .mcp.json全局 ~/.claude.json 中:

{
  "mcpServers": {
    "code-executor": {
      "command": "npx",
      "args": ["-y", "code-executor-mcp"],
      "env": {
        "MCP_CONFIG_PATH": "/full/path/to/this/.mcp.json",
        "DENO_PATH": "/path/to/.deno/bin/deno"
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"]
    },
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp", "--headless"]
    }
  }
}

配置指南

  • MCP_CONFIG_PATH:可选 - 指向项目 .mcp.json(仍会发现全局 ~/.claude.json
  • DENO_PATH:运行 which deno 以查找其路径(TypeScript 执行所需)
  • 全局 MCP (~/.claude.json):可在所有项目中使用的个人服务器
  • 项目 MCP (.mcp.json):版本控制中团队共享的服务器
  • 连接流程:Claude Code → 仅 code-executor,然后 code-executor → 所有其他 MCP

快速设置

# 查找 Deno 路径
which deno
# 输出:/home/user/.deno/bin/deno

# 项目配置(团队共享)
realpath .mcp.json
# 输出:/home/user/projects/myproject/.mcp.json

# 全局配置(个人)
ls ~/.claude.json
# 输出:/home/user/.claude.json

# Code-executor 会自动合并两者!

最小配置(仅 Python)

{
  "mcpServers": {
    "code-executor": {
      "command": "npx",
      "args": ["-y", "code-executor-mcp"],
      "env": {
        "MCP_CONFIG_PATH": "/path/to/.mcp.json",
        "PYTHON_ENABLED": "true"
      }
    }
  }
}

3. 使用

Claude 现在可以通过代码执行访问任何 MCP 工具:

// 当你要求 "读取 package.json" 时,Claude 会自动生成此代码
const result = await callMCPTool('mcp__filesystem__read_file', {
  path: './package.json'
});
console.log(result);

就是这么简单,无需配置、无需白名单、无需手动设置工具。

✨ 主要特性

| 特性 | 描述 | |---------|-------------| | 98% 令牌节省 | 从 141k 个令牌减少到 1.6k 个令牌(从 47 个工具减少到 2 个工具) | | 无限制的 MCP 访问 | 可访问 6490 + 个 MCP 服务器,无上下文限制 | | 多步骤工作流 | 可在一次执行中链式调用多个 MCP | | 自动发现 | AI 代理可按需查找工具(零令牌成本) | | 深度验证 | 使用 AJV 模式验证,提供有用的错误消息 | | 安全保障 | 沙箱隔离(Deno/Python)、白名单、审计日志、速率限制 | | 生产就绪 | 使用 TypeScript 编写,有 606 个测试用例,覆盖率达 95% 以上,支持 Docker |

📦 安装指南

npm(推荐)

npm install -g code-executor-mcp
code-executor-mcp

Docker(生产环境)

快速开始

docker pull aberemia24/code-executor-mcp:latest
docker run -p 3333:3333 aberemia24/code-executor-mcp:latest

使用 docker-compose(推荐)

# 1. 复制示例配置
cp docker-compose.example.yml docker-compose.yml

# 2. 编辑 docker-compose.yml 以添加你的 API 密钥(可选)
#    - 设置 CODE_EXECUTOR_SAMPLING_ENABLED="true"
#    - 设置你的供应商:CODE_EXECUTOR_AI_PROVIDER="gemini"
#    - 添加 API 密钥:GEMINI_API_KEY="your-key-here"

# 3. 启动服务
docker-compose up -d

# 4. 查看日志
docker-compose logs -f

首次运行自动配置: Docker 部署会在首次运行时根据环境变量自动生成完整的 MCP 配置:

  • ✅ 所有环境变量 → 全面的配置
  • ✅ 包括采样、安全、沙箱和性能设置
  • ✅ 配置保存到 /app/config/.mcp.json
  • ✅ 在容器重启时保持持久化(使用卷挂载)

本地开发

git clone https://github.com/aberemia24/code-executor-MCP.git
cd code-executor-mcp
npm install && npm run build
npm run server

💻 使用示例

基础用法

# 之前:47 个工具,141k 个令牌
mcp__filesystem__read_file
mcp__filesystem__write_file
mcp__git__commit
mcp__browser__navigate
... 还有 43 个工具

# 之后:2 个工具,1.6k 个令牌(节省 98%)
run-typescript-code
run-python-code

高级用法

// Claude 会自动生成此代码
const file = await callMCPTool('mcp__filesystem__read_file', { path: '/src/app.ts' });
const review = await callMCPTool('mcp__zen__codereview', { code: file });
await callMCPTool('mcp__git__commit', { message: review.suggestions });

实际示例

任务:“审查 auth.ts 文件的安全问题并提交修复”

没有 code-executor 的情况(不可能完成 - 达到上下文限制):

无法同时启用:文件系统 + Git + Zen 代码审查
只能选择 2 个,手动完成第 3 个

使用 code-executor 的情况(单个 AI 消息):

// 读取文件
const code = await callMCPTool('mcp__filesystem__read_file', {
  path: '/src/auth.ts'
});

// 使用 AI 进行审查
const review = await callMCPTool('mcp__zen__codereview', {
  step: '安全审计',
  code: code,
  step_number: 1,
  total_steps: 1
});

// 应用修复
const fixed = review.suggestions.replace(/timing-attack/g, 'constant-time');

await callMCPTool('mcp__filesystem__write_file', {
  path: '/src/auth.ts',
  content: fixed
});

// 提交更改
await callMCPTool('mcp__git__commit', {
  message: 'fix: 常量时间令牌比较'
});

console.log('安全修复已应用并提交');

所有操作只需一次工具调用。变量会持续存在,无需上下文切换。

📚 详细文档

MCP 采样(Beta) - 循环内大语言模型执行

v1.0.0 新增功能:允许 Claude 在代码执行期间调用自身,以进行动态推理和分析。

什么是采样?

MCP 采样允许在沙箱环境中运行的 TypeScript 和 Python 代码通过简单的接口调用 Claude(通过 Anthropic 的 API)。现在,你的代码可以在执行过程中“向 Claude 寻求帮助”。

用例

  • 代码分析:读取文件,让 Claude 分析其安全问题
  • 多步骤推理:让 Claude 将复杂任务分解为多个步骤
  • 数据处理:使用 Claude 的智能处理每个文件/记录
  • 交互式调试:让 Claude 解释错误或提供修复建议

快速示例

TypeScript

// 在执行中启用采样
const result = await callMCPTool('mcp__code-executor__executeTypescript', {
  code: `
    // 读取文件
    const code = await callMCPTool('mcp__filesystem__read_file', {
      path: './auth.ts'
    });

    // 让 Claude 进行分析
    const analysis = await llm.ask(
      '分析此代码的安全漏洞:' + code
    );

    console.log(analysis);
  `,
  enableSampling: true,  // 启用采样
  allowedTools: ['mcp__filesystem__read_file']
});

// 检查采样指标
console.log('轮数:', result.samplingMetrics.totalRounds);
console.log('令牌数:', result.samplingMetrics.totalTokens);

Python

# 带有采样的 Python 示例

code = """
import json

# 读取数据
data = call_mcp_tool('mcp__filesystem__read_file', {'path': './data.json'})

# 让 Claude 进行总结
summary = await llm.ask(f'总结此数据:{data}')

print(summary)
"""

result = call_mcp_tool('mcp__code-executor__executePython', {
    'code': code,
    'enableSampling': True
})

API 参考

TypeScript API

  • llm.ask(prompt: string, options?) - 简单查询,返回响应文本
  • llm.think({messages, model?, maxTokens?, systemPrompt?}) - 多轮对话

Python API

  • llm.ask(prompt: str, system_prompt='', max_tokens=1000) - 简单查询
  • llm.think(messages, model='', max_tokens=1000, system_prompt='') - 多轮对话

安全控制

采样包含企业级安全控制: | 控制项 | 描述 | |---------|-------------| | 速率限制 | 每次执行最多 10 轮,10000 个令牌(可配置) | | 内容过滤 | 自动编辑掉机密信息(API 密钥、令牌)和个人身份信息(电子邮件、社保号码) | | 系统提示白名单 | 仅接受预先批准的提示(防止提示注入) | | Bearer 令牌认证 | 每个桥接会话使用 256 位安全令牌 | | 本地绑定 | 桥接服务器仅本地可访问(无外部访问) | | 审计日志 | 所有调用都记录到 ~/.code-executor/audit.jsonl 中,并带有时间戳(无明文机密信息) |

配置

启用采样

选项 1 - 每次执行(推荐):

{ enableSampling: true }

选项 2 - 环境变量:

export CODE_EXECUTOR_SAMPLING_ENABLED=true
export CODE_EXECUTOR_MAX_SAMPLING_ROUNDS=10
export CODE_EXECUTOR_MAX_SAMPLING_TOKENS=10000

选项 3 - 配置文件 (~/.code-executor/config.json):

{
  "sampling": {
    "enabled": true,
    "maxRoundsPerExecution": 10,
    "maxTokensPerExecution": 10000,
    "allowedSystemPrompts": [
      "",
      "你是一个有用的助手",
      "你是一位代码分析专家"
    ]
  }
}

混合架构

Code Executor 会自动检测最佳采样方法:

  1. MCP SDK 采样(免费) - 如果你的 MCP 客户端支持 sampling/createMessage
  2. 直接 Anthropic API(付费) - 如果 MCP 采样不可用,则回退到此模式(需要 ANTHROPIC_API_KEY

⚠️ Claude Code 限制(截至 2025 年 11 月): Claude Code 目前 不支持 MCP 采样(问题 #1785)。使用 Claude Code 时,采样将回退到直接 API 模式(需要 ANTHROPIC_API_KEY)。

支持 MCP 采样的兼容客户端

  • ✅ VS Code(v0.20.0+)
  • ✅ GitHub Copilot
  • ❌ Claude Code(待解决问题 #1785)

当 Claude Code 增加采样支持时,无需更改代码 - 它将自动切换到免费的 MCP 采样。

文档

请参阅全面的采样指南:docs/sampling.md

涵盖内容

  • 架构图解释采样的原理、原因和方法
  • TypeScript 和 Python 的完整 API 参考
  • 带有威胁矩阵的安全模型
  • 配置指南(环境变量、配置文件、每次执行)
  • 故障排除指南(8 个常见错误)
  • 性能基准测试(桥接启动时间 <50ms)
  • 常见问题解答(15 个以上问题)

配置

完整示例 (.mcp.json):

{
  "mcpServers": {
    "code-executor": {
      "command": "npx",
      "args": ["-y", "code-executor-mcp"],
      "env": {
        "MCP_CONFIG_PATH": "/absolute/path/to/.mcp.json",
        "DENO_PATH": "/home/user/.deno/bin/deno",
        "ENABLE_AUDIT_LOG": "true",
        "AUDIT_LOG_PATH": "/home/user/.code-executor/audit.log",
        "ALLOWED_PROJECTS": "/home/user/projects:/tmp"
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"]
    },
    "zen": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/zen-mcp.git", "zen-mcp-server"],
      "env": {
        "GEMINI_API_KEY": "your-key-here"
      }
    }
  }
}

环境变量: | 变量 | 是否必需 | 描述 | 示例 | |----------|----------|-------------|---------| | MCP_CONFIG_PATH | ⚠️ 可选 | 项目 .mcp.json 的显式路径 | /home/user/projects/myproject/.mcp.json | | DENO_PATH | ✅ 对于 TypeScript | Deno 二进制文件的路径 | /home/user/.deno/bin/deno | | ENABLE_AUDIT_LOG | ⚠️ 推荐 | 启用安全审计日志 | true | | AUDIT_LOG_PATH | 否 | 自定义审计日志位置 | /var/log/code-executor/audit.log | | ALLOWED_PROJECTS | ⚠️ 推荐 | 限制文件访问 | /home/user/projects:/tmp | | PYTHON_ENABLED | 否 | 启用 Python 执行器 | true(默认) |

安全注意事项:将 API 密钥存储在环境变量中,而不是直接存储在配置文件中。

多供应商 AI 采样配置

新增功能:支持 5 个 AI 供应商(Anthropic、OpenAI、Gemini、Grok、Perplexity),并自动选择特定供应商的模型。

快速设置

# 1. 复制示例配置
cp .env.example .env

# 2. 编辑 .env 文件并添加你的 API 密钥
CODE_EXECUTOR_SAMPLING_ENABLED=true
CODE_EXECUTOR_AI_PROVIDER=gemini  # 最便宜的选项!
GEMINI_API_KEY=your-key-here

# 3. 启动服务器
npm start

供应商比较(2025 年 1 月): | 供应商 | 默认模型 | 成本(每 MTok 输入/输出) | 适用场景 | |----------|---------------|------------------------------|----------| | Gemini ⭐ | gemini-2.5-flash-lite | $0.10 / $0.40 | 最便宜 + 免费层 | | Grok | grok-4-1-fast-non-reasoning | $0.20 / $0.50 | 2M 上下文,速度快 | | OpenAI | gpt-4o-mini | $0.15 / $0.60 | 流行、可靠 | | Perplexity | sonar | $1.00 / $1.00 | 实时搜索 | | Anthropic | claude-haiku-4-5-20251001 | $1.00 / $5.00 | 高级质量 |

配置选项:请参阅 .env.example 以获取完整的采样配置选项列表,包括:

  • 所有供应商的 API 密钥
  • 模型白名单
  • 速率限制和配额
  • 内容过滤
  • 系统提示控制

自动发现(v0.7.3 新增功能):Code-executor 会自动发现并合并:

  • ~/.claude.json(全局/个人 MCP)
  • .mcp.json(项目 MCP)
  • MCP_CONFIG_PATH(如果设置)(显式覆盖,但仍会与全局配置合并)

无需配置 - 只需将 MCP 添加到任一位置,code-executor 就会找到它们!

🔧 技术细节

TypeScript 支持

包含完整的类型定义:

import { MCPClientPool, executeTypescript, type ToolSchema } from 'code-executor-mcp';

const pool = new MCPClientPool();
await pool.initialize('/path/to/.mcp.json');

const result = await executeTypescript({
  code: `const tools = await discoverMCPTools(); console.log(tools.length);`,
  allowedTools: ['mcp__*'],
  timeoutMs: 30000
});

性能

| 指标 | 值 | |--------|-------| | 令牌节省 | 98%(从 141k 到 1.6k) | | 工具发现 | <5ms(缓存),50 - 100ms(首次调用) | | 验证 | 每次工具调用 <1ms | | 沙箱启动 | ~200ms(Deno),首次 ~2 - 3s/缓存 <100ms(Pyodide) | | 测试覆盖率 | 606 个测试用例,安全性覆盖率 95% 以上,整体覆盖率 90% 以上 |

安全(企业级)

Code Executor 不仅能“运行代码”,还能保障代码安全: | 特性 | 实现方式 | |---------|---------------| | 沙箱隔离 | 使用具有受限权限的 Deno(TypeScript)和 Pyodide WebAssembly(Python) | | 文件访问控制 | 非根用户(UID 1001),只读根文件系统,显式的项目路径白名单 | | 网络策略 | 默认无网络访问,需要显式的域名白名单 | | 路径验证 | 符号链接解析,防止目录遍历攻击 | | 审计日志 | 每次执行都会记录到 ~/.code-executor/audit.jsonl 中,并带有时间戳 | | 速率限制 | 默认 30 次请求/分钟(每个 MCP 可配置) | | 危险模式检测 | 阻止 eval、exec、import、pickle.loads 等操作 | | 模式验证 | 在执行前使用 AJV 进行深度验证 | | 服务器端请求伪造(SSRF)保护 | 阻止访问 AWS 元数据、本地主机和私有 IP 地址 |

示例:除 GitHub API 外,阻止所有网络访问:

{
  "security": {
    "allowedDomains": ["api.github.com"],
    "allowedProjects": ["/home/user/projects"]
  }
}

沙箱架构

  • Deno(TypeScript):V8 隔离环境,具有显式权限(--allow-read=/tmp),无 shell 访问权限
  • Pyodide(Python):WebAssembly 沙箱,虚拟文件系统,网络访问仅限于经过身份验证的 MCP 代理
  • Docker(可选):非根容器,只读根文件系统,最小化攻击面

请参阅 SECURITY.md 以获取完整的威胁分析和安全模型。

高级用法

白名单(可选安全措施)

限制可执行的工具:

await callMCPTool('mcp__code-executor__run-typescript-code', {
  code: `
    // 此操作可行
    await callMCPTool('mcp__filesystem__read_file', {...});

    // 此操作失败 - 不在白名单中
    await callMCPTool('mcp__git__push', {...});
  `,
  allowedTools: ['mcp__filesystem__read_file']
});

发现功能

AI 代理可以按需探索可用工具:

// 查找所有工具
const tools = await discoverMCPTools();

// 搜索特定功能
const fileTools = await searchTools('文件读写');

// 检查模式
const schema = await getToolSchema('mcp__filesystem__read_file');

零令牌成本 - 发现功能不会显示在 AI 代理的工具列表中。

MCP 采样:循环内大语言模型执行

允许 AI 在沙箱代码中自主调用其他 AI,以实现迭代问题解决、多智能体协作和复杂工作流。

关键特性

  • 多供应商支持:Anthropic、OpenAI、Gemini、Grok、Perplexity
  • 混合模式:免费的 MCP 采样,自动回退到付费 API
  • 简单 APIllm.ask(prompt)llm.think(messages) 辅助函数
  • 安全保障:速率限制、内容过滤、仅本地访问的桥接服务器

设置

# 1. 创建 .env 文件
cp .env.example .env

# 2. 添加 API 密钥
echo "CODE_EXECUTOR_SAMPLING_ENABLED=true" >> .env
echo "CODE_EXECUTOR_AI_PROVIDER=gemini" >> .env
echo "GEMINI_API_KEY=your_key_here" >> .env

# 3. 使用包装脚本(在启动前加载 .env)
# 更新 .mcp.json:
{
  "code-executor": {
    "command": "/path/to/start-with-env.sh"
  }
}

请参阅 SAMPLING_SETUP.md 以获取完整的设置指南。

基本用法

// 简单问题
const answer = await llm.ask('2 + 2 等于多少?');
console.log(answer); // "4"

// 多轮推理
const analysis = await llm.think([
  { role: 'system', content: '你是一名代码审查员' },
  { role: 'user', content: '审查这段代码:...' }
]);

高级示例 - 多智能体代码审查: 5 个 AI 智能体协作审查、保障安全、重构、测试和文档化代码:

// 智能体 1:代码审查员
const review = await llm.ask('审查这段代码并列出 5 个问题...');

// 智能体 2:安全分析师
const security = await llm.ask('分析安全漏洞...');

// 智能体 3:重构专家
const refactored = await llm.ask('使用 ES6+ 进行重构...');

// 智能体 4:测试生成器
const tests = await llm.ask('生成 3 个 Vitest 测试用例...');

// 智能体 5:文档编写员
const docs = await llm.ask('编写 JSDoc 注释...');

实际结果

  • 5 个 AI 智能体,10 秒,约 2600 个令牌
  • 完整的代码转换:审查 → 保障安全 → 重构 → 测试 → 文档化
  • 请参阅 examples/multi-agent-code-review.ts 以获取完整的工作示例

用例

  • 🤖 多智能体系统(代码审查、规划、执行)
  • 🔄 迭代优化(生成 → 验证 → 改进循环)
  • 🧪 自主测试(生成测试用例、运行测试、修复失败)
  • 📚 自动文档化(分析代码、编写文档、验证示例)

多动作工作流

在一次工具调用中实现复杂的自动化:

// 启动浏览器 → 导航 → 交互 → 提取数据
await callMCPTool('mcp__code-executor__run-typescript-code', {
  code: `
    await callMCPTool('mcp__playwright__launch', { headless: false });
    await callMCPTool('mcp__playwright__navigate', { url: 'https://example.com' });
    const title = await callMCPTool('mcp__playwright__evaluate', {
      script: 'document.title'
    });
    console.log('页面标题:', title);
  `,
  allowedTools: ['mcp__playwright__*']
});

状态在调用之间保持持久 - 无需上下文切换。

Python 执行(Pyodide WebAssembly)

使用 Pyodide 沙箱实现安全的 Python 执行:

启用 Python

# 设置环境变量(必需)
export PYTHON_SANDBOX_READY=true

# 在配置中启用
# .code-executor.json
{
  "executors": {
    "python": {
      "enabled": true
    }
  }
}

示例 - 使用 MCP 工具的 Python 代码

import asyncio

async def main():
    # 发现可用工具
    tools = await discover_mcp_tools()
    print(f'找到 {len(tools)} 个工具')

    # 调用 MCP 工具读取文件
    content = await call_mcp_tool('mcp__filesystem__read_file', {
        'path': '/tmp/data.json'
    })
    print(f'文件内容: {content}')

    # 处理数据
    import json
    data = json.loads(content)
    result = [x * 2 for x in data['numbers']]
    print(f'处理结果: {result}')

asyncio.run(main())

安全保障

  • ✅ WebAssembly 沙箱(与 Deno 具有相同的安全性)
  • ✅ 虚拟文件系统(无主机文件访问)
  • ✅ 网络访问仅限于经过身份验证的 MCP 代理
  • ✅ 无子进程生成
  • ✅ 内存受 V8 堆限制

限制

  • 仅支持纯 Python(除非经过 WASM 编译,否则不支持原生 C 扩展)
  • 首次加载约 2 - 3 秒(Pyodide npm 包),缓存后 <100ms
  • 不支持多进程/线程(使用 async/await)
  • 比原生 Python 慢 10 - 30%(为了安全,WASM 开销可以接受)

请参阅 SECURITY.md 以获取完整的安全模型。

📄 许可证

本项目采用 MIT 许可证,请参阅 LICENSE 了解详细信息。

常见问题解答

Q:是否需要为每个 MCP 服务器进行配置? A:不需要。Code-executor 会自动从 ~/.claude.json(全局)和 .mcp.json(项目)中发现 MCP。只需将 MCP 添加到任一位置即可。

Q:全局配置和项目配置如何合并? A:Code-executor 会找到并合并两者:

  • 全局 (~/.claude.json):可在所有项目中使用的个人 MCP
  • 项目 (.mcp.json):版本控制中团队共享的 MCP
  • 结果:所有 MCP 都可用,项目配置会覆盖全局配置中重复的名称

Q:验证是如何工作的? A:AJV 会根据实时模式验证所有工具调用。发生错误时,你会收到一条详细的消息,显示预期的参数。

Q:Python 支持情况如何? A:通过 Pyodide WebAssembly 提供完整的 Python 沙箱。需要设置 PYTHON_SANDBOX_READY=true 环境变量。与 Deno 具有相同的安全模型(WASM 隔离、虚拟文件系统、网络受限)。仅支持纯 Python - 除非经过 WASM 编译,否则不支持原生 C 扩展。请参阅 SECURITY.md 了解详细信息。

Q:是否可以在生产环境中使用? A:可以。有 606 个测试用例,覆盖率达 95% 以上,支持 Docker,有审计日志和速率限制。

Q:它是否仅适用于 Claude Code? A:它是为 Claude Code 构建的。虽然未在其他 MCP 客户端上进行测试,但根据 MCP 规范应该可以正常工作。

贡献

欢迎贡献代码!请参阅 CONTRIBUTING.md 了解贡献指南。

代码质量标准

  • ✅ TypeScript 严格模式
  • ✅ 业务逻辑的测试覆盖率达 90% 以上
  • ✅ ESLint + Prettier
  • ✅ 所有拉取请求都必须通过测试

链接

  • npm:https://www.npmjs.com/package/code-executor-mcp
  • Docker Hub:https://hub.docker.com/r/aberemia24/code-executor-mcp
  • GitHub:https://github.com/aberemia24/code-executor-MCP
  • 问题反馈:https://github.com/aberemia24/code-executor-MCP/issues

使用 Claude Code 构建 | 基于 Anthropic 的 MCP 代码执行

星标历史

Star History Chart

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端