这是一个运行在 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。

  1. 克隆此仓库。
  2. 使用 Wrangler CLI 进行部署。具体部署步骤可能因您的 Cloudflare 项目配置而异,通常涉及 'wrangler.toml' 文件配置(包括 Durable Objects 绑定、KV 存储绑定、Analytics Engine 绑定等)和运行 'wrangler deploy' 命令。
  3. 配置 Cloudflare OAuth 应用程序,并将其客户端 ID 和密钥配置为 Workers 的环境变量。
  4. 根据需要配置其他环境变量(如 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 调用服务器暴露的工具。例如:

  1. LLM 可以调用 'container_initialize' 工具来启动一个沙箱容器。
  2. LLM 可以调用 'container_file_write' 工具创建一个 Python 脚本文件(例如,路径为 'main.py')。
  3. LLM 可以调用 'container_exec' 工具执行该脚本(例如,参数为 'python3 main.py')。
  4. LLM 可以调用 'container_file_read' 工具读取脚本的输出文件或日志文件。
  5. LLM 可以调用 'container_files_list' 查看工作目录中的文件。

服务器会处理这些请求,与底层的沙箱容器服务交互,并将结果或错误通过 JSON-RPC 响应返回给 LLM 客户端。

信息

分类

AI与计算