用于IDE的Cloudflare MCP服务器
模型上下文协议(MCP)是一种 新的标准化协议 用于管理大型语言模型(LLM)和外部系统之间的上下文。在这个存储库中,我们提供了一个安装程序以及一个MCP服务器 Cloudflare的API.
这使您可以使用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 '...'?
演示
Short Demo Video
设置
- 跑
npx @gutmutcode/mcp-server-cloudflare init
- 重启克劳德桌面,你应该看到一个小🔨 显示以下可用工具的图标:
- 查看Cline配置文件,您应该看到
cloudflare使用您的Cloudflare帐户ID。
- 查看您的Windsurf MCP配置文件,您应该看到
cloudflare部分也。Windsurf对MCP工具的使用有限制,因此您不能同时使用太多工具。(与克莱恩和克劳德不同)
特性
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 bucketr2_delete_bucket:删除R2存储桶r2_list_objects:列出R2 bucket中的对象r2_get_object:从R2桶中获取对象r2_put_object:将物体放入R2桶中r2_delete_object:从R2 bucket中删除对象
D1数据库管理
d1_list_databases:列出您帐户中的所有D1数据库d1_create_database:创建新的D1数据库d1_delete_database:删除D1数据库d1_query:对D1数据库执行SQL查询
工人管理
worker_list:列出您帐户中的所有员工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 .
如果您正在使用替代的MCP客户端,或在本地进行测试,请发出 tools/list 命令获取所有可用工具的最新列表。然后,您可以使用 tools/call 命令。
工人
// 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"
})贡献
欢迎投稿!请随时提交拉取请求。
