使用说明
代码沙箱mcp
引言
MCP服务器用于创建安全的代码沙箱环境,在Docker容器中执行代码,并为AI应用程序提供代码执行功能。
有关中文版本,请参阅 中文 README.
特性
- 支持多种编程语言(Python、PHP、Golang)的代码执行
- 基于Docker容器的隔离环境,确保代码执行安全
- 提供资源限制(CPU超时、内存限制、磁盘限制)
- 通过SSE(服务器发送事件)提供实时交互功能
- 易于使用的工具界面,可轻松集成到AI应用程序中
快速开始
先决条件
- 达到1.25.1或更高
- Docker环境
初始化
拉取所需的编程语言Docker镜像:
make init-images
构建
根据目标平台将项目编译到bin目录:
- Linux(amd64架构):
make build-linux
- macOS(苹果硅芯片,arm64架构):
make build-darwin
- Windows(amd64架构):
make build-windows
跑
启动MCP服务器:
./bin/code-sandbox-mcp-server
服务器将在端口4000上启动,提供以下端点:
- SSE端点:
/sse - 消息端点:
/message
代码执行工具
服务器注册了一个名为的工具 execute_code_in_sandbox 用于在沙盒环境中执行代码。
刀具参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 语言 | 字符串 | 是 | 编程语言 |
| code | string | Yes | 要执行的代码 |
| version | string | 否 | 编程语言版本 |
用法示例
调用该工具执行Python代码:
{
"tool": "execute_code_in_sandbox",
"parameters": {
"language": "python",
"code": "print('Hello, World!')"
}
}
项目结构
cmd/code-sandbox-mcp/main.go:服务器主入口点sandbox/:沙盒核心功能实现sandbox/docker/:Docker沙盒实现tempfile/:临时文件管理(提供临时文件写入功能,例如WriteFile方法)go.mod/go.sum:Go依赖关系管理Makefile:生成脚本
配置管理
该项目通过以下方式实现配置管理 sandbox/config.go,支持:
- 加载YAML格式的配置文件(默认路径包括
./config.yaml和./config/config.yaml) - 监控配置文件更改和自动重新加载
- 配置项包括服务器信息、运行时资源限制(CPU超时、内存、磁盘)、网络设置、特定语言配置(后缀、映像、入口点等)
清理
清理已编译的文件:
make clean
依赖项
主要依赖关系包括:
- Docker SDK for Go:用于与Docker交互
- trpc-mcp-go:提供mcp服务器框架(版本v0.0.7)
- viper:配置管理
- fsnotify:文件系统通知(用于配置文件监控)
- golang.org/x/sys:系统相关操作支持
- golang.org/x/net:网络相关功能支持
看 go.mod 和 go.sum 文件以获取完整的依赖关系列表。