这是一个运行在 Cloudflare Workers 和 Durable Objects 上的 Model Context Protocol (MCP) 服务器实现。它提供了一个沙箱化的容器环境,允许与之连接的 LLM 客户端执行代码和管理文件。
项目简介
该项目旨在为大型语言模型 (LLM) 提供一个安全的沙箱环境,使其能够与外部世界进行有限的交互,例如运行脚本或处理文件。它通过实现 MCP 协议,将这些功能以标准化的方式暴露给 LLM 客户端。
主要功能点
- 容器管理: 允许 LLM 请求初始化、ping 或销毁一个临时的沙箱容器实例。
- 代码执行: 支持在沙箱容器内执行命令行指令,并返回标准输出。预装了 Python 3, Node.js, Git 等工具。
- 文件系统交互: 提供了读、写、列出和删除沙箱容器工作目录内文件的工具。支持文本和 Base64 编码的二进制文件内容。
- OAuth 认证: 使用 Cloudflare OAuth 进行用户认证和授权。
- 基于 Durable Objects: 利用 Cloudflare Durable Objects 实现用户会话状态和容器实例的持久化管理。
安装步骤
该项目需要部署到 Cloudflare Workers 和 Durable Objects 环境中。您需要一个 Cloudflare 账号和安装了 Wrangler CLI。
- 克隆此仓库。
- 使用 Wrangler CLI 进行部署。具体部署步骤可能因您的 Cloudflare 项目配置而异,通常涉及 'wrangler.toml' 文件配置(包括 Durable Objects 绑定、KV 存储绑定、Analytics Engine 绑定等)和运行 'wrangler deploy' 命令。
- 配置 Cloudflare OAuth 应用程序,并将其客户端 ID 和密钥配置为 Workers 的环境变量。
- 根据需要配置其他环境变量(如 MCP 服务器名称、版本等)。
注意: 成功部署需要正确的 Cloudflare 账号设置和权限。
服务器配置(供 MCP 客户端使用)
MCP 客户端需要知道如何连接到此服务器。由于此服务器部署为 Cloudflare Worker,客户端将通过 HTTP 或 SSE 连接到您部署的 Worker 的 URL。
以下是 MCP 客户端可能需要的配置信息示例:
- 服务器名称: 一个描述性名称,例如 'Cloudflare Sandbox Container'
- 连接命令 (command): 您部署的 Cloudflare Worker 的 URL,后接 '/mcp' 或 '/sse' 路径。
- 示例 (JSON-RPC over HTTP): 'https://your-worker-name.your-subdomain.workers.dev/mcp'
- 示例 (JSON-RPC over SSE): 'https://your-worker-name.your-subdomain.workers.dev/sse'
- 连接参数 (args): 可能为空,或者包含 OAuth 流程所需的客户端 ID 等信息,具体取决于您的 MCP 客户端如何处理 OAuth 认证。
重要: 连接时需要进行 OAuth 认证。MCP 客户端需要支持 Cloudflare OAuth 流程以获取访问令牌并将其用于后续的 MCP 请求。
基本使用方法
连接成功后,LLM 客户端可以通过 JSON-RPC 调用服务器暴露的工具。例如:
- LLM 可以调用 'container_initialize' 工具来启动一个沙箱容器。
- LLM 可以调用 'container_file_write' 工具创建一个 Python 脚本文件(例如,路径为 'main.py')。
- LLM 可以调用 'container_exec' 工具执行该脚本(例如,参数为 'python3 main.py')。
- LLM 可以调用 'container_file_read' 工具读取脚本的输出文件或日志文件。
- LLM 可以调用 'container_files_list' 查看工作目录中的文件。
服务器会处理这些请求,与底层的沙箱容器服务交互,并将结果或错误通过 JSON-RPC 响应返回给 LLM 客户端。
信息
分类
AI与计算