返回市场
MCP服务器Cloudflare

MCP服务器Cloudflare

作者:GutMutCode9 星标更新:2025-04-16

项目介绍

Cloudflare MCP Server for IDE

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

这使您可以使用Claude Desktop,IDE如VSCode(Cline)和Windsurf或任何MCP客户端,通过自然语言来完成Cloudflare账户上的任务,例如:

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

演示

<div align="center"> <a href="https://youtube.com/shorts/SmN-I3XBO0g?si=bg4PqM5TJTMWdtGJ">短演示视频</a> </div>

安装

  1. 运行 npx @gutmutcode/mcp-server-cloudflare init
<div align="left"> <img src="https://gips2.baidu.com/it/u=1620058480,4258554362&fm=3081&app=3081&f=PNG?w=1268&h=579" alt="示例控制台输出" width="300"/> </div>
  1. 重启Claude Desktop,您应该会看到一个小锤子图标,显示以下可用工具:
<div align="left"> <img src="https://gips2.baidu.com/it/u=1779775896,3115500258&fm=3081&app=3081&f=PNG?w=231&h=111" alt="示例工具图标" height="160"/> <img src="https://gips2.baidu.com/it/u=3806843740,2997797940&fm=3081&app=3081&f=PNG?w=540&h=349" alt="示例工具列表" height="160"/> </div>
  1. 查看Cline配置文件,您应该会看到一个带有您的Cloudflare账户ID的cloudflare部分。
<div align="left"> <img width="292" alt="示例配置文件" src="https://gips1.baidu.com/it/u=1939535064,1502296859&fm=3081&app=3081&f=PNG?w=584&h=262"/> </div>
  1. 查看您的Windsurf MCP配置文件,您也应该会看到一个cloudflare部分。Windsurf对MCP工具的使用有限制,因此您不能同时使用太多工具。(与Cline和Claude不同)
<div align="left"> <img width="445" alt="2025-02-22 下午10:28:09截图" src="https://gips0.baidu.com/it/u=1925172234,687598865&fm=3081&app=3081&f=PNG?w=890&h=320" /> </div>

功能

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脚本

分析

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

开发

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

pnpm install
pnpm build:watch

然后,在第二个终端中运行:

node dist/index.js init

这将把Claude Desktop链接到您本地安装的版本,以便进行测试。

在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"
})

贡献

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