关于 Cloudflare MCP Server for IDE
Cloudflare MCP Server for IDE 将 MCP 客户端连接到 Cloudflare API,供开发者通过自然语言管理账户资源,涵盖 Workers、KV、R2、D1 和域名分析。
主要功能
- 01管理 Workers 脚本
- 02读取和写入 KV 条目
- 03管理 R2 存储桶与对象
- 04创建并查询 D1 数据库
- 05获取域名分析数据
适用场景
- 01部署或更新 Worker
- 02查看或修改 KV 数据
- 03将 KV 条目转移到 R2
- 04查询 D1 或查看分析数据
MCP 相关
它将 Cloudflare API 操作作为工具提供给 MCP 客户端,包括资源管理和分析数据获取。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
面向 IDE 的 Cloudflare MCP 服务
模型上下文协议(MCP)是一种新型标准化协议,用于管理大语言模型(LLM)与外部系统之间的上下文。在此代码仓库中,我们提供了一个安装程序,以及一个用于 Cloudflare API 的 MCP 服务。
这样,你就可以使用 Claude Desktop、VSCode(Cline)和 Windsurf 等 IDE,或任何 MCP 客户端,通过自然语言在 Cloudflare 账户中完成操作,例如:
Please deploy me a new Worker with an example durable object.Can you tell me about the data in my D1 database named '...'?Can you copy all the entries from my KV namespace '...' into my R2 bucket '...'?
演示
设置
- 运行
npx @gutmutcode/mcp-server-cloudflare init
- 重启 Claude Desktop,你应该会看到一个小 🔨 图标,其中显示以下可用工具:
- 查看 Cline 配置文件,你应该能看到一个包含 Cloudflare 账户 ID 的
cloudflare部分。
- 查看 Windsurf MCP 配置文件,你也应该能看到一个
cloudflare部分。Windsurf 对 MCP 工具的使用有限制,因此不能同时使用太多工具。(Cline 和 Claude 则没有此限制)
功能
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:列出账户中的所有 Workerworker_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
// List workers
worker_list()
// Get worker code
worker_get({ name: "my-worker" })
// Update 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"]
})
// Delete worker
worker_delete({ name: "my-worker" })
KV 存储
// List KV namespaces
get_kvs()
// Get value
kv_get({
namespaceId: "your_namespace_id",
key: "myKey"
})
// Store value
kv_put({
namespaceId: "your_namespace_id",
key: "myKey",
value: "myValue",
expirationTtl: 3600 // optional, in seconds
})
// List keys
kv_list({
namespaceId: "your_namespace_id",
prefix: "app_", // optional
limit: 10 // optional
})
// Delete key
kv_delete({
namespaceId: "your_namespace_id",
key: "myKey"
})
R2 存储
// List buckets
r2_list_buckets()
// Create bucket
r2_create_bucket({ name: "my-bucket" })
// Delete bucket
r2_delete_bucket({ name: "my-bucket" })
// List objects in bucket
r2_list_objects({
bucket: "my-bucket",
prefix: "folder/", // optional
delimiter: "/", // optional
limit: 1000 // optional
})
// Get object
r2_get_object({
bucket: "my-bucket",
key: "folder/file.txt"
})
// Put object
r2_put_object({
bucket: "my-bucket",
key: "folder/file.txt",
content: "Hello, World!",
contentType: "text/plain" // optional
})
// Delete object
r2_delete_object({
bucket: "my-bucket",
key: "folder/file.txt"
})
D1 数据库
// List databases
d1_list_databases()
// Create database
d1_create_database({ name: "my-database" })
// Delete database
d1_delete_database({ databaseId: "your_database_id" })
// Execute a single query
d1_query({
databaseId: "your_database_id",
query: "SELECT * FROM users WHERE age > ?",
params: ["25"] // optional
})
// Create a table
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
)
`
})
分析
// Get today's analytics
analytics_get({
zoneId: "your_zone_id",
since: "2024-11-26T00:00:00Z",
until: "2024-11-26T23:59:59Z"
})
贡献
欢迎贡献!请随时提交 Pull Request。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。