Cloudflare MCP 服务器
示范背景协议(MCP)是一种 新的标准化协议 用于管理大语言模型和外部系统之间的上下文。 在这个寄存器中,我们提供一个安装器和一个MCP服务器,用于 云飞的API。 。 。 .
您可以使用 Claude Desktop 或任何 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 '...'?
演示
设置
-
确保您通过Wrangler登录到Cloudflare:
npx wrangler loginMCP 服务器在本地测试时访问 Cloudflare 资源需要此认证 .
-
运行
npx @cloudflare/mcp-server-cloudflare init
- 重新启动 Claude 桌面, 您应该看到一个小的 QQ 图标, 显示以下可用的工具 :
付费特征
MCP服务器中的一些功能需要支付Cloudflare工人计划:
- 观察和分析编号:
analytics_get工具和相关分析功能要求有带薪的工人计划才能获得这些计量标准 - 其他溢价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 查询
工人管理
worker_list: 列出账户中的所有工人worker_get: 获取工人脚本内容worker_put: 创建或更新工作者脚本worker_delete: 删除工人脚本
持久对象
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_list_models: 列出可用的AI模型workers_ai_get_model:获取特定AI模型的细节workers_ai_run_inference: 使用工人AI进行推论workers_ai_list_tasks: 列出 AI 任务
工作流量
workflows_list: 列出账户中的所有工作流程workflows_create: 创建新工作流程workflows_delete: 删除工作流程workflows_get:获取特定工作流程的细节workflows_update更新工作流程workflows_execute: 执行工作流程
模板
templates_list: 列出可用的工人模板templates_get: 获取特定模板的细节templates_create_from_template: 从模板创建新工作者
工人促进平台
w4p_list_dispatchers: 列出平台调度员的所有工人w4p_create_dispatcher: 创建新调度器w4p_delete_dispatcher: 删除调度器w4p_get_dispatcher: 获取特定调度器的细节w4p_update_dispatcher: 更新调度器配置
服务约束
bindings_list: 列出对工人的所有服务绑定bindings_create: 创建新服务绑定bindings_update: 更新服务绑定bindings_delete: 删除服务绑定
URL 运行
routing_list_routes: 列出工人的所有路线routing_create_route: 创建新路径routing_update_route: 更新路径routing_delete_route: 删除路由
克龙触发器
cron_list: 列出一个工人的所有克龙触发器cron_create: 创建新克龙触发器cron_update: 更新克龙触发器cron_delete: 删除克龙触发器
区域( D)
zones_list: 列出账户中的所有区域zones_create: 创建新区域zones_delete: 删除区域zones_get:获取特定区域的细节zones_check_activation: 检查区域激活状态
秘诀
secrets_list: 列出工人的所有秘密secrets_put: 创建或更新一个秘密secrets_delete: 删除一个秘密
版本管理
versions_list: 列出一个工作者的所有版本versions_get:获取特定版本的细节versions_rollback: 回滚到上一个版本
朗格勒配置
wrangler_get_config: 获取当前 Wrangler 配置wrangler_update_config: 更新Wrangler配置
分析
analytics_get: 为您的域获取分析数据- 包括请求、带宽、威胁和页面浏览等衡量标准
- 支持日期范围过滤
发展中国家
在当前工程文件夹中, 运行 :
pnpm install
pnpm build:watch
然后,在第二个终点站:
node dist/index.js init
这将将 Claude Desktop 与您本地安装的版本连接, 供您测试 .
测试
该项目使用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: 全局测试设置配置
每个工具测试文件都遵循一个一致的模式,既测试成功操作,也测试出错处理方案.
克劳德以外的使用
要在本地运行服务器, 请运行 node dist/index run <account-id>。 。 。 .
如果您正在使用替代的 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"
})
持久对象
// List Durable Objects namespaces
durable_objects_list()
// Create a new Durable Objects namespace
durable_objects_create({
name: "my-durable-object",
script_name: "my-worker",
class_name: "MyDurableObjectClass"
})
// Delete a Durable Objects namespace
durable_objects_delete({
id: "your_namespace_id"
})
// List instances for a namespace
durable_objects_list_instances({
namespaceId: "your_namespace_id",
limit: 100 // optional
})
// Get details about a specific instance
durable_objects_get_instance({
namespaceId: "your_namespace_id",
instanceId: "your_instance_id"
})
// Delete a specific instance
durable_objects_delete_instance({
namespaceId: "your_namespace_id",
instanceId: "your_instance_id"
})
队列
// List all queues
queues_list()
// Create a new queue
queues_create({
name: "my-queue",
settings: {
delivery_delay: 0,
dead_letter_queue: "dead-letter-queue" // optional
}
})
// Delete a queue
queues_delete({
name: "my-queue"
})
// Get queue details
queues_get({
name: "my-queue"
})
// Send a message to a queue
queues_send_message({
queue: "my-queue",
messages: [
{ body: JSON.stringify({ key: "value" }) }
]
})
// Get messages from a queue
queues_get_messages({
queue: "my-queue",
batchSize: 10, // optional
visibilityTimeout: 30 // optional, in seconds
})
// Update a queue consumer
queues_update_consumer({
queue: "my-queue",
consumer: "my-consumer",
settings: {
dead_letter_queue: "dead-letter-queue",
batch_size: 10,
max_retries: 3
}
})
大赦国际
// List available AI models
workers_ai_list_models()
// Get details about a specific model
workers_ai_get_model({
model: "@cf/meta/llama-2-7b-chat-int8"
})
// Run inference using 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
}
})
// List AI tasks
workers_ai_list_tasks()
工作流量
// List all workflows
workflows_list()
// Create a new workflow
workflows_create({
name: "my-workflow",
content: "// Workflow script content here"
})
// Delete a workflow
workflows_delete({
name: "my-workflow"
})
// Get workflow details
workflows_get({
name: "my-workflow"
})
// Update a workflow
workflows_update({
name: "my-workflow",
content: "// Updated workflow script content"
})
// Execute a workflow
workflows_execute({
name: "my-workflow",
input: { key: "value" }
})
模板
// List available templates
templates_list()
// Get details about a specific template
templates_get({
template: "worker-typescript"
})
// Create a worker from a template
templates_create_from_template({
name: "my-new-worker",
template: "worker-typescript",
options: {
// Template-specific options
}
})
工人促进平台
// List dispatchers
w4p_list_dispatchers()
// Create a new dispatcher
w4p_create_dispatcher({
name: "my-dispatcher",
script: "// Dispatcher script content"
})
// Delete a dispatcher
w4p_delete_dispatcher({
name: "my-dispatcher"
})
// Get dispatcher details
w4p_get_dispatcher({
name: "my-dispatcher"
})
// Update dispatcher
w4p_update_dispatcher({
name: "my-dispatcher",
script: "// Updated dispatcher script content"
})
服务约束
// List all service bindings for a worker
bindings_list({
workerName: "my-worker"
})
// Create a new service binding
bindings_create({
workerName: "my-worker",
bindingName: "MY_SERVICE",
serviceEnvironment: "production",
serviceName: "target-worker"
})
// Update a service binding
bindings_update({
workerName: "my-worker",
bindingName: "MY_SERVICE",
serviceEnvironment: "staging",
serviceName: "target-worker"
})
// Delete a service binding
bindings_delete({
workerName: "my-worker",
bindingName: "MY_SERVICE"
})
URL 运行
// List all routes for a worker
routing_list_routes({
workerName: "my-worker"
})
// Create a new route
routing_create_route({
workerName: "my-worker",
pattern: "example.com/*",
zoneId: "your_zone_id"
})
// Update a route
routing_update_route({
routeId: "your_route_id",
pattern: "api.example.com/*",
zoneId: "your_zone_id"
})
// Delete a route
routing_delete_route({
routeId: "your_route_id"
})
克龙触发器
// List all cron triggers for a worker
cron_list({
workerName: "my-worker"
})
// Create a new cron trigger
cron_create({
workerName: "my-worker",
schedule: "*/5 * * * *",
timezone: "UTC" // optional
})
// Update a cron trigger
cron_update({
triggerId: "your_trigger_id",
schedule: "0 */2 * * *",
timezone: "America/New_York"
})
// Delete a cron trigger
cron_delete({
triggerId: "your_trigger_id"
})
区域( D)
// List all zones
zones_list()
// Create a new zone
zones_create({
name: "example.com",
account: {
id: "your_account_id"
}
})
// Get zone details
zones_get({
zoneId: "your_zone_id"
})
// Delete a zone
zones_delete({
zoneId: "your_zone_id"
})
// Check zone activation status
zones_check_activation({
zoneId: "your_zone_id"
})
秘诀
// List all secrets for a worker
secrets_list({
workerName: "my-worker"
})
// Create or update a secret
secrets_put({
workerName: "my-worker",
secretName: "API_KEY",
secretValue: "your-secret-api-key"
})
// Delete a secret
secrets_delete({
workerName: "my-worker",
secretName: "API_KEY"
})
版本管理
// List all versions of a worker
versions_list({
workerName: "my-worker"
})
// Get details about a specific version
versions_get({
workerName: "my-worker",
versionId: "your_version_id"
})
// Rollback to a previous version
versions_rollback({
workerName: "my-worker",
versionId: "your_version_id"
})
朗格勒配置
// Get current wrangler configuration
wrangler_get_config()
// Update wrangler configuration
wrangler_update_config({
config: {
name: "my-worker",
main: "src/index.ts",
compatibility_date: "2024-03-11",
workers_dev: true
}
})
捐款
欢迎捐款! 请随意提交拉力请求.