Code Sandbox MCP Server是一个轻量级的、基于标准输入输出(STDIO)的模型上下文协议(MCP)服务器,为AI助手和大型语言模型(LLM)应用提供一个安全且隔离的环境,以便在容器化沙箱中执行Python和JavaScript代码片段,通过启动独立的容器会话,将用户代码写入临时文件并复制到容器中执行,然后捕获并返回执行结果和错误流,确保每次执行后容器被停止并移除,从而实现安全隔离和资源的有效管理。Code Sandbox MCP Server支持高度定制化,允许用户通过环境变量传递秘密信息或自定义容器镜像,可以无缝集成到如Gemini SDK和Gemini CLI等MCP客户端中,作为可信赖的代码执行工具,有效解决LLM在代码执行方面的安全性与隔离性挑战。
1、启动容器会话(如podman、docker等)并确保会话处于打开状态。
2、在主机上把代码写入临时文件。
3、将该临时文件复制到容器中已配置的工作目录(workdir)。
4、执行特定语言的命令来运行代码,比如Python代码用python3 -u code.py,JavaScript代码用node -u code.js。
5、捕获容器的输出流和错误流。
6、把输出流和错误流返回给客户端。
7、停止并移除容器。
• run_python_code:在安全、隔离的沙箱中执行Python代码片段。其中code(字符串,必填)是要执行的Python代码。
• run_js_code:在安全、隔离的沙箱中执行JavaScript(Node.js)代码片段。其中code(字符串,必填)是要执行的JavaScript代码。
通过pip命令安装,具体如下:
pip install git+https://github.com/philschmid/code-sandbox-mcp.git
• 本地客户端Python示例(用于运行Python代码)
• Gemini SDK示例(用于通过Gemini SDK运行Python代码)
• 从客户端调用Gemini示例(用于运行使用Gemini SDK并传递Gemini API密钥的Python代码)
• 本地客户端Javascript示例(用于运行Javascript代码)
要使用Code Sandbox MCP服务器,需要将其添加到MCP客户端的配置文件中(例如在AI助手的设置里)。该服务器设计为可由客户端按需启动。
在mcpServers配置中添加以下内容:
{
"mcpServers": {
"code-sandbox": {
"command": "code-sandbox-mcp",
}
}
}
可以通过在启动MCP服务器时设置--pass-through-env标志,并在启动服务器时提供环境变量,将环境变量传递到沙箱中。
{
"mcpServers": {
"code-sandbox": {
"command": "code-sandbox-mcp",
"args": ["--pass-through-env", "API_KEY,SECRET_TOKEN"],
"env": {
"API_KEY": "1234567890",
"SECRET_TOKEN": "1234567890"
}
}
}
}
启动MCP服务器时,可以通过设置CONTAINER_IMAGE和CONTAINER_LANGUAGE环境变量来提供自定义容器镜像。这两个变量都是必需的,CONTAINER_LANGUAGE用于确定在容器中运行的命令,CONTAINER_IMAGE用于确定要使用的镜像。
注意:提供自定义容器镜像时,两个工具(run_python_code和run_js_code)将使用相同的容器镜像。
{
"mcpServers": {
"code-sandbox": {
"command": "code-sandbox-mcp",
"env": {
"CONTAINER_IMAGE": "your-own-image",
"CONTAINER_LANGUAGE": "python" // 或者 "javascript"
}
}
}
}
code-sandbox-mcp服务器可以与Gemini SDK配合使用,只需将tools参数传递给generate_content方法。
from fastmcp import Client
from google import genai
import asyncio
mcp_client = Client(
{
"local_server": {
"transport": "stdio",
"command": "code-sandbox-mcp",
}
}
)
gemini_client = genai.Client()
async def main():
async with mcp_client:
response = await gemini_client.aio.models.generate_content(
model="gemini-2.5-flash",
contents="Use Python to ping the google.com website and return the response time.",
config=genai.types.GenerateContentConfig(
temperature=0,
tools=[mcp_client.session], # 传递FastMCP客户端会话
),
)
print(response.text)
if __name__ == "__main__":
asyncio.run(main())
code-sandbox-mcp服务器可以与Gemini CLI配合使用。可以在全局级别(~/.gemini/settings.json文件)配置MCP服务器,也可以在项目的根目录中创建或打开.gemini/settings.json文件。在该文件中,添加mcpServers配置块。
该仓库提供2个容器镜像,已发布到Docker Hub:
• philschmi/code-sandbox-python:latest
• philschmi/code-sandbox-js:latest
构建镜像命令:
docker build -t philschmi/code-sandbox-python:latest -f containers/Dockerfile.python .
docker build -t philschmi/code-sandbox-js:latest -f containers/Dockerfile.nodejs .
该脚本将使用当前用户的账户构建镜像。要更新要使用的镜像,可以在启动MCP服务器时传递--python-image或--js-image标志,也可以更新const.py文件。
要将镜像推送到Docker Hub,需要将镜像重新标记为自己的账户,然后推送。
docker tag philschmi/code-sandbox-python:latest <your-account>/code-sandbox-python:latest
docker push <your-account>/code-sandbox-python:latest
要自定义或安装额外的依赖,可以将它们添加到Dockerfile中,然后重新构建镜像。
通过streamable-http启动服务器,并使用MCP inspector测试服务器。或者启动inspector并使用stdio运行服务器。
npx @modelcontextprotocol/inspector
要运行code-sandbox-mcp及其组件的测试套件,克隆存储库并运行:
# 可能需要先安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest tests/
PowerPoint演示文稿智能生成工具 PowerPoint Slides Skill
金融 AI 新工具 FinClaw,免费提供1000+ 金融专属Skills
PPT Agent 演示文稿生成框架
端到端自主AI科研引擎 NanoResearch
CitationClaw 学术论文智能引用画像和分析报告
pi-autoresearch:pi自动化实验优化循环
OpenClaw Control Center:为OpenClaw用户(包括团队和个人)提供统一的监控和管理界面
OpenClaw Dashboard 仪表盘:让OpenClaw管理更简单
PaperBanana-CN 学术配图助手
996.ICU:工作 996, 生病 ICU