项目简介
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镜像进行安装,简单快捷:
- 拉取镜像: 打开终端,执行以下命令获取最新的服务器镜像:
docker pull ghcr.io/timlikesai/code-sandbox-mcp:latest - 直接运行: 拉取完成后,可以通过以下命令直接运行服务器,通常用于测试或临时使用('--rm'表示容器停止后自动删除):
如果您需要从源代码构建,请参考仓库的README文件。docker run --rm --interactive ghcr.io/timlikesai/code-sandbox-mcp:latest
服务器配置
要让您的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请求与服务器通信。主要支持以下工具:
-
'execute_code' (执行代码): 用于在指定语言环境中执行代码。 例如,执行Python代码:
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "execute_code", "arguments": { "language": "python", "code": "print(\"Hello World!\")" } } }(将此JSON发送到MCP服务器的标准输入,服务器将在标准输出返回结果。)
-
'validate_code' (验证代码): 用于验证代码语法而不执行它,提供快速的错误反馈。 例如,验证JavaScript代码:
{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "validate_code", "arguments": { "language": "javascript", "code": "console.log(\"Hello\");" } } } -
'reset_session' (重置会话): 用于清除指定语言(或所有语言)的执行会话状态。 例如,重置Python会话:
{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "reset_session", "arguments": { "language": "python" } } }若要重置所有语言会话,可将'language'参数设为'"all"'或省略。
信息
分类
开发者工具