代码沙盒执行服务

MCP服务器用于创建安全的代码沙盒环境,在Docker容器中执行代码,并为AI应用程序提供代码执行能力。

  • by lemonlyue
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 lemonlyue/code-sandbox-mcp

使用说明

代码沙箱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 文件以获取完整的依赖关系列表。