项目简介

Code Sandbox MCP服务器是一个用Ruby编写的、基于Docker的安全代码执行环境。它实现了Model Context Protocol (MCP),允许LLM(大型语言模型)客户端通过JSON-RPC协议调用外部工具来执行、验证多种编程语言的代码,并管理执行会话。该服务器支持Python、JavaScript、TypeScript、Ruby、Bash、Zsh、Fish、Java、Clojure、Kotlin、Groovy、Scala共12种语言,并提供严格的安全隔离和资源限制。

主要功能点

  • 多语言代码执行: 支持12种主流编程语言的代码执行,结果包含标准输出、错误输出和退出码。
  • 安全沙箱环境: 在隔离的Docker容器中运行代码,具备资源限制、网络隔离、只读文件系统和非特权用户执行等多重安全机制。
  • 语法验证: 快速检查代码语法,提供详细的错误信息和行号,帮助用户提前发现问题。
  • 自动化会话管理: 每种语言都维护独立的会话,保留变量、函数定义和执行历史,支持会话重置。
  • MCP协议兼容: 完全遵循Model Context Protocol,通过JSON-RPC提供服务,易于与LLM客户端集成。

安装步骤

推荐使用预构建的Docker镜像进行安装,简单快捷:

  1. 拉取镜像: 打开终端,执行以下命令获取最新的服务器镜像:
    docker pull ghcr.io/timlikesai/code-sandbox-mcp:latest
  2. 直接运行: 拉取完成后,可以通过以下命令直接运行服务器,通常用于测试或临时使用('--rm'表示容器停止后自动删除):
    docker run --rm --interactive ghcr.io/timlikesai/code-sandbox-mcp:latest
    如果您需要从源代码构建,请参考仓库的README文件。

服务器配置

要让您的MCP客户端(如Claude Desktop或Claude Code)连接并使用此代码沙箱服务器,您需要在客户端的设置中添加服务器配置。以下是配置示例及其参数说明:

{
  "mcpServers": {
    "code-sandbox": {
      "command": "docker",
      "args": [
        "run", "--rm", "--interactive",
        "--network", "none",
        "ghcr.io/timlikesai/code-sandbox-mcp:latest"
      ]
    }
  }
}

参数说明:

  • 'code-sandbox': 这是您为该MCP服务器定义的名称,客户端将通过此名称引用它。
  • 'command': 启动MCP服务器的命令。这里是'docker',表示通过Docker来运行服务器。
  • 'args': 传递给'command'的参数列表。
    • 'run': Docker命令,用于运行一个新的容器。
    • '--rm': 容器停止时自动移除。
    • '--interactive': 保持标准输入(stdin)打开,允许客户端与服务器通信。
    • '--network none': (强烈推荐!) 禁用容器的所有网络访问,防止代码访问互联网或本地网络,极大地增强了安全性。
    • 'ghcr.io/timlikesai/code-sandbox-mcp:latest': 要运行的Docker镜像的名称和标签。

启用网络访问的配置(当您明确需要时):

如果您需要执行需要网络访问的代码(例如安装包、调用API),可以移除'--network none'参数,或者配置一个独立的服务器项:

{
  "mcpServers": {
    "code-sandbox-network": {
      "command": "docker",
      "args": [
        "run", "--rm", "--interactive",
        "ghcr.io/timlikesai/code-sandbox-mcp:latest"
      ]
    }
  }
}

高级安全配置: 为了进一步提高安全性,您可以添加更多Docker参数,例如限制内存、CPU、使用只读文件系统等。请参考仓库README中的"Advanced Configuration"部分。

基本使用方法

MCP客户端通过JSON-RPC请求与服务器通信。主要支持以下工具:

  1. 'execute_code' (执行代码): 用于在指定语言环境中执行代码。 例如,执行Python代码:

    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "execute_code",
        "arguments": {
          "language": "python",
          "code": "print(\"Hello World!\")"
        }
      }
    }

    (将此JSON发送到MCP服务器的标准输入,服务器将在标准输出返回结果。)

  2. 'validate_code' (验证代码): 用于验证代码语法而不执行它,提供快速的错误反馈。 例如,验证JavaScript代码:

    {
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "validate_code",
        "arguments": {
          "language": "javascript",
          "code": "console.log(\"Hello\");"
        }
      }
    }
  3. 'reset_session' (重置会话): 用于清除指定语言(或所有语言)的执行会话状态。 例如,重置Python会话:

    {
      "jsonrpc": "2.0",
      "id": 3,
      "method": "tools/call",
      "params": {
        "name": "reset_session",
        "arguments": {
          "language": "python"
        }
      }
    }

    若要重置所有语言会话,可将'language'参数设为'"all"'或省略。

信息

分类

开发者工具