使用说明
缟玛瑙
Onyx是一种 MCP(模型上下文协议)服务器 在内部安全地执行代码 Docker沙盒。它支持多种编程语言,并与 克劳德桌面 或其他MCP客户端。Onyx使在 沙盒MCP环境非常适合 克劳德桌面 高级用户或任何使用可执行代码构建AI工作流的人。
特性
-
🔹 多语言支持:
- python
python:3.11) - Java
openjdk:17) - C
gcc:12) - C
gcc:12) - JavaScript/Node.js(
node:20) - 生锈(
rust:1.72)
- python
-
🔹 Docker沙盒:
- 网络已禁用(
--network none) - 带有tmpfs挂载的只读FS用于安全写入
- CPU、内存和进程数有限
- 非根执行(
--user 1000:1000)
- 网络已禁用(
-
🔹 MCP协议:暴露a
run_code用于执行任意代码的工具。 -
🔹 日志记录:所有执行日志都转到
stderr(对MCP客户端安全)。 -
🔹 CI就绪:通过GitHub Actions对执行者进行自动测试。
项目结构
sandbox/
├── .github/
│ └── workflows/ci.yml # GitHub Actions CI
├── cmd/
│ └── server/
│ └── main.go # MCP server entrypoint
├── internal/
│ ├── model/ # Code params, executor interface, result types
│ ├── executor/ # Language-specific executors
│ └── utils/ # Docker availability checks
├── tests/
├── go.mod, go.sum
安装说明
1.先决条件
验证两者:
go version
docker --version
2.拉取所需的Docker镜像
为了避免第一次执行时的延迟,请预拉所有语言运行时:
docker pull python:3.11
docker pull openjdk:17
docker pull gcc:12
docker pull node:20
docker pull rust:1.72
3.构建并运行服务器
从repo的根开始:
# Run directly
go run ./cmd/server/main.go
# Or build a binary (recommended for Claude Desktop)
go build -o sandbox_server ./cmd/server/main.go
你现在应该已经 sandbox_server (或 sandbox_server.exe 在Windows上)。
与Claude Desktop连接
-
找到Claude Desktop的配置文件:
code $env:AppData\Claude\claude_desktop_config.json -
为添加MCP服务器条目 缟玛瑙:
{ "mcpServers": { "onyx": { "command": "<absolute path>/sandbox_server.exe", "args": [] } } } -
重新启动克劳德桌面。
-
现在你应该看到
run_code工具可用。
用法
For a good example of how it can be used, check out this chat: https://claude.ai/share/512e1f5a-77fc-40ca-8c49-b372b2c680f9扩展到新语言
添加对另一种语言的支持需要:
-
选择Docker镜像 使用语言的编译器/运行时。 例子:
golang:1.22对于Go来说,php:8.2-cli对于PHP。 -
实现执行器 在……里面
internal/executor/<lang>.go:-
定义一个结构(例如。,
GoExecutor). -
实施
Execute方法:- 将源代码导入容器。
- 在内部编译/解释它
/workspace. - 运行输出二进制文件/脚本。
-
-
在中注册
main.go:if args.Language == "go" { runtime = executor.GoExecutor{} } -
编写测试 在……里面
internal/executor/go_test.go. -
拉取Docker镜像 提前(
docker pull golang:1.22).
