科学工具
科学工具让世界更美好
让世界更美好

LLM代码沙箱服务器 Code Sandbox MCP Server 为AI助手和大型语言模型(LLM)应用提供一个安全隔离的环境

Code Sandbox MCP Server是一个轻量级的、基于标准输入输出(STDIO)的模型上下文协议(MCP)服务器,为AI助手和大型语言模型(LLM)应用提供一个安全且隔离的环境,以便在容器化沙箱中执行Python和JavaScript代码片段,通过启动独立的容器会话,将用户代码写入临时文件并复制到容器中执行,然后捕获并返回执行结果和错误流,确保每次执行后容器被停止并移除,从而实现安全隔离和资源的有效管理。Code Sandbox MCP Server支持高度定制化,允许用户通过环境变量传递秘密信息或自定义容器镜像,可以无缝集成到如Gemini SDK和Gemini CLI等MCP客户端中,作为可信赖的代码执行工具,有效解决LLM在代码执行方面的安全性与隔离性挑战。

Code Sandbox MCP Server工作原理

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代码。

Code Sandbox MCP Server安装

通过pip命令安装,具体如下:

pip install git+https://github.com/philschmid/code-sandbox-mcp.git

Code Sandbox MCP Server使用

示例

• 本地客户端Python示例(用于运行Python代码)

• Gemini SDK示例(用于通过Gemini SDK运行Python代码)

• 从客户端调用Gemini示例(用于运行使用Gemini SDK并传递Gemini API密钥的Python代码)

• 本地客户端Javascript示例(用于运行Javascript代码)

配置MCP客户端

要使用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_IMAGECONTAINER_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"
      }
    }
  }
}

与Gemini相关工具配合使用

与Gemini SDK配合

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())

与Gemini CLI配合

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中,然后重新构建镜像。

测试

使用MCP Inspector

通过streamable-http启动服务器,并使用MCP inspector测试服务器。或者启动inspector并使用stdio运行服务器。

npx @modelcontextprotocol/inspector

要运行code-sandbox-mcp及其组件的测试套件,克隆存储库并运行:

# 可能需要先安装开发依赖
pip install -e ".[dev]"

# 运行测试
pytest tests/