mcp-server-cloudflare官方
允许您使用 Claude Desktop 或任何 MCP 客户端,通过自然语言在您的 Cloudflare 帐户上完成任务。
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>
设置
-
运行
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>
- 重新启动 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
: 列出您帐户中的所有 Workersworker_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 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Playwright MCP Server
提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。
Apple MCP Server
通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。
contentful-mcp
在你的 Contentful Space 中更新、创建、删除内容、内容模型和资源。

Supabase MCP Server
一个模型上下文协议(MCP)服务器,它提供对 Supabase 管理 API 的编程访问。该服务器允许 AI 模型和其他客户端通过标准化的接口来管理 Supabase 项目和组织。
serper-search-scrape-mcp-server
这个 Serper MCP 服务器支持搜索和网页抓取,并且支持 Serper API 引入的所有最新参数,例如位置信息。
The Verge News MCP Server
提供从The Verge的RSS feed获取和搜索新闻的工具,允许用户获取今日新闻、检索过去一周的随机文章,以及在最近的Verge内容中搜索特定关键词。
MCP Server Trello
通过 Trello API 促进与 Trello 看板的交互,提供速率限制、类型安全、输入验证和错误处理等功能,以实现对卡片、列表和看板活动的无缝管理。
MCP DuckDB Knowledge Graph Memory Server
一个为 Claude 设计的记忆服务器,它使用 DuckDB 存储和检索知识图谱数据,从而增强了对话的性能和查询能力,并能持久保存用户信息。