mcp-server-cloudflare

mcp-server-cloudflare
官方

允许您使用 Claude Desktop 或任何 MCP 客户端,通过自然语言在您的 Cloudflare 帐户上完成任务。

云平台
TypeScript
访问服务器

README

Cloudflare MCP 服务器

模型上下文协议 (MCP) 是一种新的标准化协议,用于管理大型语言模型 (LLM) 和外部系统之间的上下文。 在此存储库中,我们提供了一个安装程序以及一个用于 Cloudflare API 的 MCP 服务器。

这使您可以使用 Claude Desktop 或任何 MCP 客户端,通过自然语言来完成 Cloudflare 帐户上的操作,例如:

  • 请为我部署一个新的 Worker,其中包含一个示例持久对象。
  • 你能告诉我关于我的名为“...”的 D1 数据库中的数据吗?
  • 你能将我的 KV 命名空间“...”中的所有条目复制到我的 R2 存储桶“...”中吗?

演示

<div align="center"> <a href="https://www.youtube.com/watch?v=vGajZpl_9yA"> <img src="https://img.youtube.com/vi/vGajZpl_9yA/maxresdefault.jpg" alt="演示新发布的 MCP 服务器,以探索 Cloudflare 属性,如 Workers、KV 和 D1。" width="600"/> </a> </div>

设置

  1. 运行 npx @cloudflare/mcp-server-cloudflare init

    注意: 如果您尚未通过 Cloudflare 身份验证,MCP 服务器将自动运行 npx wrangler login。 如果需要,系统将提示您在浏览器中完成身份验证过程。

<div align="left"> <img src="https://github.com/user-attachments/assets/163bed75-ec0c-478a-94b2-179969a90923" alt="示例控制台输出" width="300"/> </div>

  1. 重新启动 Claude Desktop,您应该会看到一个小的 🔨 图标,显示以下工具可供使用:

<div align="left"> <img src="https://github.com/user-attachments/assets/a24275b1-1c6f-4754-96ef-dd7b9f0f5903" alt="示例工具图标" height="160"/> <img src="https://github.com/user-attachments/assets/4fb8badb-6800-4a3f-a530-a344b3584bec" alt="示例工具列表" height="160"/> </div>

付费功能

此 MCP 服务器中的某些功能需要付费的 Cloudflare Workers 计划:

  • 可观测性和分析analytics_get 工具和相关的分析功能需要付费的 Workers 计划才能访问这些指标
  • 其他高级 Cloudflare 功能,如高级 D1 数据库功能和更高的使用限制,也需要相应的付费计划

请确保您的 Cloudflare 帐户具有您打算使用的功能所需的订阅级别。

功能

KV 存储管理

  • get_kvs: 列出您帐户中的所有 KV 命名空间
  • kv_get: 从 KV 命名空间获取一个值
  • kv_put: 在 KV 命名空间中存储一个值
  • kv_list: 列出 KV 命名空间中的键
  • kv_delete: 从 KV 命名空间中删除一个键

R2 存储管理

  • r2_list_buckets: 列出您帐户中的所有 R2 存储桶
  • r2_create_bucket: 创建一个新的 R2 存储桶
  • r2_delete_bucket: 删除一个 R2 存储桶
  • r2_list_objects: 列出 R2 存储桶中的对象
  • r2_get_object: 从 R2 存储桶获取一个对象
  • r2_put_object: 将一个对象放入 R2 存储桶
  • r2_delete_object: 删除 R2 存储桶中的一个对象

D1 数据库管理

  • d1_list_databases: 列出您帐户中的所有 D1 数据库
  • d1_create_database: 创建一个新的 D1 数据库
  • d1_delete_database: 删除一个 D1 数据库
  • d1_query: 对 D1 数据库执行 SQL 查询

Workers 管理

  • worker_list: 列出您帐户中的所有 Workers
  • worker_get: 获取 Worker 的脚本内容
  • worker_put: 创建或更新 Worker 脚本
  • worker_delete: 删除 Worker 脚本

持久对象

  • durable_objects_list: 列出所有持久对象命名空间
  • durable_objects_create: 创建一个新的持久对象命名空间
  • durable_objects_delete: 删除一个持久对象命名空间
  • durable_objects_list_instances: 列出特定持久对象命名空间的所有实例
  • durable_objects_get_instance: 获取有关特定持久对象实例的详细信息
  • durable_objects_delete_instance: 删除特定的持久对象实例

队列

  • queues_list: 列出您帐户中的所有队列
  • queues_create: 创建一个新的队列
  • queues_delete: 删除一个队列
  • queues_get: 获取有关特定队列的详细信息
  • queues_send_message: 向队列发送消息
  • queues_get_messages: 从队列获取消息
  • queues_update_consumer: 更新队列消费者

Workers AI

  • workers_ai_list_models: 列出可用的 AI 模型
  • workers_ai_get_model: 获取有关特定 AI 模型的详细信息
  • workers_ai_run_inference: 使用 Workers AI 运行推理
  • workers_ai_list_tasks: 列出 AI 任务

工作流

  • workflows_list: 列出您帐户中的所有工作流
  • workflows_create: 创建一个新的工作流
  • workflows_delete: 删除一个工作流
  • workflows_get: 获取有关特定工作流的详细信息
  • workflows_update: 更新一个工作流
  • workflows_execute: 执行一个工作流

模板

  • templates_list: 列出可用的 Worker 模板
  • templates_get: 获取有关特定模板的详细信息
  • templates_create_from_template: 从模板创建一个新的 Worker

Workers for Platforms

  • w4p_list_dispatchers: 列出所有 Workers for Platforms 调度器
  • w4p_create_dispatcher: 创建一个新的调度器
  • w4p_delete_dispatcher: 删除一个调度器
  • w4p_get_dispatcher: 获取有关特定调度器的详细信息
  • w4p_update_dispatcher: 更新调度器配置

服务绑定

  • bindings_list: 列出 Worker 的所有服务绑定
  • bindings_create: 创建一个新的服务绑定
  • bindings_update: 更新一个服务绑定
  • bindings_delete: 删除一个服务绑定

URL 路由

  • routing_list_routes: 列出 Worker 的所有路由
  • routing_create_route: 创建一个新的路由
  • routing_update_route: 更新一个路由
  • routing_delete_route: 删除一个路由

Cron 触发器

  • cron_list: 列出 Worker 的所有 cron 触发器
  • cron_create: 创建一个新的 cron 触发器
  • cron_update: 更新一个 cron 触发器
  • cron_delete: 删除一个 cron 触发器

区域和域名

  • zones_list: 列出您帐户中的所有区域
  • zones_create: 创建一个新的区域
  • zones_delete: 删除一个区域
  • zones_get: 获取有关特定区域的详细信息
  • zones_check_activation: 检查区域激活状态

密钥

  • secrets_list: 列出 Worker 的所有密钥
  • secrets_put: 创建或更新一个密钥
  • secrets_delete: 删除一个密钥

版本管理

  • versions_list: 列出 Worker 的所有版本
  • versions_get: 获取有关特定版本的详细信息
  • versions_rollback: 回滚到以前的版本

Wrangler 配置

  • wrangler_get_config: 获取当前的 Wrangler 配置
  • wrangler_update_config: 更新 Wrangler 配置

分析

  • analytics_get: 检索您域的分析数据
    • 包括请求、带宽、威胁和页面浏览量等指标
    • 支持日期范围过滤

开发

在当前项目文件夹中,运行:

pnpm install
pnpm build:watch

然后,在第二个终端中:

node dist/index.js init

这将把 Claude Desktop 链接到您本地安装的版本,以供您测试。 如果您尚未通过 Wrangler 身份验证,服务器将自动提示您在浏览器中完成身份验证过程。

测试

该项目使用 Vitest 作为测试框架,并使用 MSW (Mock Service Worker) 进行 API 模拟。

运行测试

要运行所有测试:

pnpm test

要运行带有覆盖率的测试:

pnpm test:coverage

要运行特定的测试文件:

pnpm test -- tests/tools/queues.test.ts

要在监视模式下运行测试(在开发期间很有用):

pnpm test:watch

测试结构

测试套件的组织方式如下:

  • tests/tools/: 包含每个 Cloudflare API 工具的测试
  • tests/mocks/: 包含模拟数据和请求处理程序
  • tests/utils/: 包含测试辅助函数
  • tests/setup.ts: 全局测试设置配置

每个工具测试文件都遵循一致的模式,即测试成功的操作和错误处理场景。

在 Claude 之外使用

要在本地运行服务器,请运行 node dist/index run <account-id>

如果您使用的是替代 MCP 客户端,或者在本地测试,请发出 tools/list 命令以获取所有可用工具的最新列表。 然后,您可以使用 tools/call 命令直接调用这些工具。

Workers

// 列出 workers
worker_list()

// 获取 worker 代码
worker_get({ name: "my-worker" })

// 更新 worker
worker_put({
  name: "my-worker",
  script: "export default { async fetch(request, env, ctx) { ... }}",
  bindings: [
    {
      type: "kv_namespace",
      name: "MY_KV",
      namespace_id: "abcd1234"
    },
    {
      type: "r2_bucket",
      name: "MY_BUCKET",
      bucket_name: "my-files"
    }
  ],
  compatibility_date: "2024-01-01",
  compatibility_flags: ["nodejs_compat"]
})

// 删除 worker
worker_delete({ name: "my-worker" })

KV 存储

// 列出 KV 命名空间
get_kvs()

// 获取值
kv_get({
    namespaceId: "your_namespace_id",
    key: "myKey"
})

// 存储值
kv_put({
    namespaceId: "your_namespace_id",
    key: "myKey",
    value: "myValue",
    expirationTtl: 3600 // 可选,以秒为单位
})

// 列出键
kv_list({
    namespaceId: "your_namespace_id",
    prefix: "app_", // 可选
    limit: 10 // 可选
})

// 删除键
kv_delete({
    namespaceId: "your_namespace_id",
    key: "myKey"
})

R2 存储

// 列出存储桶
r2_list_buckets()

// 创建存储桶
r2_create_bucket({ name: "my-bucket" })

// 删除存储桶
r2_delete_bucket({ name: "my-bucket" })

// 列出存储桶中的对象
r2_list_objects({ 
    bucket: "my-bucket",
    prefix: "folder/", // 可选
    delimiter: "/", // 可选
    limit: 1000 // 可选
})

// 获取对象
r2_get_object({
    bucket: "my-bucket",
    key: "folder/file.txt"
})

// 放置对象
r2_put_object({
    bucket: "my-bucket",
    key: "folder/file.txt",
    content: "Hello, World!",
    contentType: "text/plain" // 可选
})

// 删除对象
r2_delete_object({
    bucket: "my-bucket",
    key: "folder/file.txt"
})

D1 数据库

// 列出数据库
d1_list_databases()

// 创建数据库
d1_create_database({ name: "my-database" })

// 删除数据库
d1_delete_database({ databaseId: "your_database_id" })

// 执行单个查询
d1_query({
    databaseId: "your_database_id",
    query: "SELECT * FROM users WHERE age > ?",
    params: ["25"] // 可选
})

// 创建表
d1_query({
    databaseId: "your_database_id",
    query: `
        CREATE TABLE users (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            email TEXT UNIQUE,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
    `
})

分析

// 获取今天的分析
analytics_get({
    zoneId: "your_zone_id",
    since: "2024-11-26T00:00:00Z",
    until: "2024-11-26T23:59:59Z"
})

持久对象

// 列出持久对象命名空间
durable_objects_list()

// 创建一个新的持久对象命名空间
durable_objects_create({
    name: "my-durable-object",
    script_name: "my-worker",
    class_name: "MyDurableObjectClass"
})

// 删除一个持久对象命名空间
durable_objects_delete({
    id: "your_namespace_id"
})

// 列出命名空间的实例
durable_objects_list_instances({
    namespaceId: "your_namespace_id",
    limit: 100 // 可选
})

// 获取关于特定实例的详细信息
durable_objects_get_instance({
    namespaceId: "your_namespace_id",
    instanceId: "your_instance_id"
})

// 删除一个特定实例
durable_objects_delete_instance({
    namespaceId: "your_namespace_id",
    instanceId: "your_instance_id"
})

队列

// 列出所有队列
queues_list()

// 创建一个新的队列
queues_create({
    name: "my-queue",
    settings: {
        delivery_delay: 0,
        dead_letter_queue: "dead-letter-queue" // 可选
    }
})

// 删除一个队列
queues_delete({
    name: "my-queue"
})

// 获取队列详细信息
queues_get({
    name: "my-queue"
})

// 向队列发送消息
queues_send_message({
    queue: "my-queue",
    messages: [
        { body: JSON.stringify({ key: "value" }) }
    ]
})

// 从队列获取消息
queues_get_messages({
    queue: "my-queue",
    batchSize: 10, // 可选
    visibilityTimeout: 30 // 可选,以秒为单位
})

// 更新一个队列消费者
queues_update_consumer({
    queue: "my-queue",
    consumer: "my-consumer",
    settings: {
        dead_letter_queue: "dead-letter-queue",
        batch_size: 10,
        max_retries: 3
    }
})

Workers AI

// 列出可用的 AI 模型
workers_ai_list_models()

// 获取关于特定模型的详细信息
workers_ai_get_model({
    model: "@cf/meta/llama-2-7b-chat-int8"
})

// 使用 Workers AI 运行推理
workers_ai_run_inference({
    model: "@cf/meta/llama-2-7b-chat-int8",
    input: {
        messages: [
            { role: "system", content: "You are a helpful assistant." },
            { role: "user", content: "Hello, who are you?" }
        ]
    },
    options: {
        temperature: 0.7,
        max_tokens: 100
    }
})

// 列出 AI 任务
workers_ai_list_tasks()

工作流

// 列出所有工作流
workflows_list()

// 创建一个新的工作流
workflows_create({
    name: "my-workflow",
    content: "// Workflow script content here"
})

// 删除一个工作流
workflows_delete({
    name: "my-workflow"
})

// 获取工作流详细信息
workflows_get({
    name: "my-workflow"
})

// 更新一个工作流
workflows_update({
    name: "my-workflow",
    content: "// Updated workflow script content"
})

// 执行一个工作流
workflows_execute({
    name: "my-workflow",
    input: { key: "value" }
})

模板

// 列出可用的模板
templates_list()

// 获取关于特定模板的详细信息
templates_get({
    template: "worker-typescript"
})

// 从模板创建一个 worker
templates_create_from_template({
    name: "my-new-worker",
    template: "worker-typescript",
    options: {
        // 模板特定的选项
    }
})

Workers for Platforms

// 列出调度器
w4p_list_dispatchers()

// 创建一个新的调度器
w4p_create_dispatcher({
    name: "my-dispatcher",
    script: "// Dispatcher script content"
})

// 删除一个调度器
w4p_delete_dispatcher({
    name: "my-dispatcher"
})

// 获取调度器详细信息
w4p_get_dispatcher({
    name: "my-dispatcher"
})

// 更新调度器
w4p_update_dispatcher({
    name: "my-dispatcher",
    script: "// Updated dispatcher script content"
})

服务绑定

// 列出一个 worker 的所有服务绑定
bindings_list({
    workerName: "my-worker"
})

// 创建一个新的服务绑定
bindings_create({
    workerName: "my-worker",
    bindingName: "MY_SERVICE",
    serviceEnvironment: "production",
    serviceName: "target-worker"
})

// 更新一个服务绑定
bindings_update({
    workerName: "my-worker",
    bindingName: "MY_SERVICE",
    serviceEnvironment: "staging",
    serviceName: "target-worker"
})

// 删除一个服务绑定
bindings_delete({
    workerName: "my-worker",
    bindingName: "MY_SERVICE"
})

URL 路由

// 列出一个 worker 的所有路由
routing_list_routes({
    workerName: "my-worker"
})

// 创建一个新的路由
routing_create_route({
    workerName: "my-worker",
    pattern: "example.com/*",
    zoneId: "your_zone_id"
})

// 更新一个路由
routing_update_route({
    routeId: "your_route_id",
    pattern: "api.example.com/*",
    zoneId: "your_zone_id"
})

// 删除一个路由
routing_delete_route({
    routeId: "your_route_id"
})

Cron 触发器

// 列出一个 worker 的所有 cron 触发器
cron_list({
    workerName: "my-worker"
})

// 创建一个新的 cron 触发器
cron_create({
    workerName: "my-worker",
    schedule: "*/5 * * * *",
    timezone: "UTC" // 可选
})

// 更新一个 cron 触发器
cron_update({
    triggerId: "your_trigger_id",
    schedule: "0 */2 * * *",
    timezone: "America/New_York"
})

// 删除一个 cron 触发器
cron_delete({
    triggerId: "your_trigger_id"
})

区域和域名

// 列出所有区域
zones_list()

// 创建一个新的区域
zones_create({
    name: "example.com",
    account: {
        id: "your_account_id"
    }
})

// 获取区域详细信息
zones_get({
    zoneId: "your_zone_id"
})

// 删除一个区域
zones_delete({
    zoneId: "your_zone_id"
})

// 检查区域激活状态
zones_check_activation({
    zoneId: "your_zone_id"
})

密钥

// 列出一个 worker 的所有密钥
secrets_list({
    workerName: "my-worker"
})

// 创建或更新一个密钥
secrets_put({
    workerName: "my-worker",
    secretName: "API_KEY",
    secretValue: "your-secret-api-key"
})

// 删除一个密钥
secrets_delete({
    workerName: "my-worker",
    secretName: "API_KEY"
})

版本管理

// 列出一个 worker 的所有版本
versions_list({
    workerName: "my-worker"
})

// 获取关于特定版本的详细信息
versions_get({
    workerName: "my-worker",
    versionId: "your_version_id"
})

// 回滚到以前的版本
versions_rollback({
    workerName: "my-worker",
    versionId: "your_version_id"
})

Wrangler 配置

// 获取当前 wrangler 配置
wrangler_get_config()

// 更新 wrangler 配置
wrangler_update_config({
    config: {
        name: "my-worker",
        main: "src/index.ts",
        compatibility_date: "2024-03-11",
        workers_dev: true
    }
})

贡献

欢迎贡献! 请随时提交 Pull Request。

推荐服务器

Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Playwright MCP Server

Playwright MCP Server

提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。

精选
本地
TypeScript
Apple MCP Server

Apple MCP Server

通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。

精选
本地
TypeScript
contentful-mcp

contentful-mcp

在你的 Contentful Space 中更新、创建、删除内容、内容模型和资源。

精选
TypeScript
Supabase MCP Server

Supabase MCP Server

一个模型上下文协议(MCP)服务器,它提供对 Supabase 管理 API 的编程访问。该服务器允许 AI 模型和其他客户端通过标准化的接口来管理 Supabase 项目和组织。

精选
JavaScript
serper-search-scrape-mcp-server

serper-search-scrape-mcp-server

这个 Serper MCP 服务器支持搜索和网页抓取,并且支持 Serper API 引入的所有最新参数,例如位置信息。

精选
TypeScript
The Verge News MCP Server

The Verge News MCP Server

提供从The Verge的RSS feed获取和搜索新闻的工具,允许用户获取今日新闻、检索过去一周的随机文章,以及在最近的Verge内容中搜索特定关键词。

精选
TypeScript
MCP Server Trello

MCP Server Trello

通过 Trello API 促进与 Trello 看板的交互,提供速率限制、类型安全、输入验证和错误处理等功能,以实现对卡片、列表和看板活动的无缝管理。

精选
TypeScript
MCP DuckDB Knowledge Graph Memory Server

MCP DuckDB Knowledge Graph Memory Server

一个为 Claude 设计的记忆服务器,它使用 DuckDB 存储和检索知识图谱数据,从而增强了对话的性能和查询能力,并能持久保存用户信息。

精选
TypeScript