Cloudflare Docs MCP(注:MCP在此处可能代表某个特定的模块、组件或概念,但根据上下文无法确定具体含义,因此直接保留原样)
Cloudflare Docs MCP worker 是一个代理研究平台,用于协调工具的使用, 向量搜索,以及持久对象的长生命周期会话,以回答开发者关于 Cloudflare。该工作程序同时提供了REST和WebSocket接口,以便第一方和 第三方客户端可以与同一个代理运行时进行协作。
架构概述
- ChatSessionActor(聊天会话行为者/聊天会话参与者) – 有状态的持久对象,用于存储对话历史记录,
协调澄清、规划、工具执行和综合工作,并发布(结果/指令等,具体根据上下文确定) WebSocket 更新。
- 可行性代理行为者 – 排队处理长时间运行的可行性研究任务并记录
D1方面的进展。
- 代码摄入行为体(或代码摄入器) – 接受代码或文档以进行处理,并将其分发出去
进入队列以进行异步处理。
- 数据层 – D1存储经过筛选的知识、可行性作业记录以及分析结果
人工制品。Vectorize 在规划过程中维护所引用的语义索引。
- 队列与沙盒 – Cloudflare Queues 协调后台处理,并且
沙箱持久对象在工具计划请求时安全地执行代码。
一个OpenAPI 3.1规范是直接生成的 src/index.ts相同的条目 同时,该点还注册了一个 WebSocket 升级处理器以 /api/chat/ws 用于交互式 会议/会话。
API概述
| 终点(Endpoint) | 方法(Method) | 描述(Description) |
|---|---|---|
/api/chat | POST | 将聊天回合发送给客服代理,并接收综合回复以及可选的计划元数据。 |
/mcp | POST 与MCP兼容的别名 /api/chat 被其他代理使用。 | |
/api/chat/ws | GET | 升级到与聊天代理的 WebSocket 会话。响应头 x-session-id 包含会话标识符。 |
/api/feasibility | POST | 将一项可行性研究任务加入异步分析队列。 |
/api/feasibility/status/:id | GET 通过数字ID或UUID检索作业的最新状态。 | |
/api/jobs | GET 列出可行性任务,并支持可选过滤和排序。 | |
/api/jobs/:id/packet | GET 获取已完成作业的完整信息包,包括仓库分析。 | |
/api/ingest | POST 提交一个URL或原始内容以将其纳入知识库。 | |
/openapi.json | GET 下载生成的OpenAPI模式。 | |
/healthz | GET 用于自动化监测设备的轻量级健康探测器。 |
所有经过身份验证的路由都需要 Authorization 工人检查的内部标题 authMiddleware.
聊天终端示例
curl -X POST https:///api/chat \
-H "Authorization: Bearer " \
-H "content-type: application/json" \
-d '{
"query": "How do I deploy a Hono API to Cloudflare Workers?",
"sessionId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}'成功的回应遵循由……所规定的结构 ChatResponseSchema:
{
"sessionId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"response": "Deploy the Hono app by running `npx wrangler deploy` after configuring wrangler.toml.",
"plan": {
"steps": [
"Check curated knowledge base for Hono guidance.",
"Search GitHub for Workers examples."
],
"toolCalls": [
{ "tool": "cloudflare_docs", "args": { "query": "Hono deployment" } }
]
},
"tool_results": [
{
"tool": "cloudflare_docs",
"result": { "hits": 3 }
}
],
"clarification": { "needed": false }
}如果代理需要更多信息,响应中将包含一个澄清对象:
{
"sessionId": "...",
"response": "Could you clarify which Cloudflare product you plan to deploy to?",
"clarification": {
"needed": true,
"question": "Which Cloudflare product are you targeting?"
}
}WebSocket 会话
要开始一个流式会话,请发送一个WebSocket升级请求:
curl -i -N -H "Authorization: Bearer " \
-H "Connection: Upgrade" \
-H "Upgrade: websocket" \
https:///api/chat/ws握手响应包括 x-session-id发送以下形式的JSON消息: {"query": "..."} 通过套接字。代理流式传输结构化更新,例如 status, plan_created, tool_start, tool_end,和 final_response (直到)事件发生 会议结束。
可行性工作
curl -X POST https:///api/feasibility \
-H "Authorization: Bearer " \
-H "content-type: application/json" \
-d '{ "prompt": "Assess migrating our Express API to Cloudflare Workers" }'工作者返回带有 UUID 支持的作业标识符:
{
"jobId": "cfdc2172-8c15-4ff5-9e1f-9e5b309d75ba",
"status": "QUEUED",
"message": "Feasibility research job has been queued."
}使用 /api/feasibility/status/:id 轮询以获取更新, /api/jobs 探索工作机会 历史,以及 /api/jobs/:id/packet 下载最终报告及附件 作业完成后进行仓库分析。
知识摄入
curl -X POST https:///api/ingest \
-H "Authorization: Bearer " \
-H "content-type: application/json" \
-d '{
"url": "https://github.com/cloudflare/workers-sdk/blob/main/examples/hono-app.ts",
"metadata": { "language": "TypeScript", "framework": "Hono" }
}'该请求已被放入队列以进行异步处理,响应中包含一个跟踪标识 标识符:
{
"documentId": "61a94f6e-6d77-4e58-9151-04a6cc0fc4ad",
"status": "queued",
"message": "Ingestion request received."
}本地运行
npm install
npm run devwrangler dev 本地持久对象、队列和沙箱绑定的条款规定,以便 代理工作流程可以实现端到端的演练。
数据库迁移
# Apply migrations using a local D1 instance
npm run migrate:local
# Apply migrations to the remote production database
npm run migrate:remote测试与代码规范检查
npm run check
npm test环境与绑定
| 绑定 | 描述 |
|---|---|
DB D1数据库存储经过整理的知识、可行性任务以及分析成果。 | |
CHAT_SESSION_ACTOR | 可持续对象命名空间,用于托管聊天会话。 |
CODE_INGESTION_ACTOR 持久化对象命名空间处理摄入请求。 | |
FEASIBILITY_AGENT_ACTOR 持久对象命名空间协调可行性任务。 | |
SANDBOX 持久对象为工具运行提供一个隔离的执行环境。 | |
CODE_INGESTION_QUEUE | 异步摄入处理的队列。 |
FEASIBILITY_QUEUE | 可行性工作线程队列。 |
AGENT_CACHE 用于临时缓存和健康检查的KV命名空间。 | |
VECTORIZE_INDEX | 将研究代理查询的索引向量化。 |
AI 工人AI绑定,助力阐明、规划与综合。 | |
DEFAULT_MODEL_REASONING, DEFAULT_MODEL_STRUCTURED_RESPONSE, DEFAULT_MODEL_EMBEDDING | 环境变量,用于声明工作流中使用的Workers AI模型。 |
诸如……之类的秘密 WORKER_API_KEY, GITHUB_TOKEN, CLOUDFLARE_ACCOUNT_ID,和 CLOUDFLARE_API_TOKEN 被配置为 wrangler secret put。
故障排除
| 症状 | 解决方案 |
|---|---|
401 Unauthorized 在调用REST端点时 | 确保 Authorization 头部存在且与验证的令牌匹配 authMiddleware。 |
| 聊天回复缺少计划或工具结果 | 当需要澄清或工具执行失败时,代理省略了计划元数据;请检查 clarification 并且 error 用于上下文的字段。 |
| 可行性工作仍处于排队状态 | 检查 FEASIBILITY_QUEUE 查看消费者和工作者日志以确认作业已派发。 |
缺少摄入响应 documentId 当摄入操作者未返回ID时,备用UUID生成器会执行;请检查操作者日志以验证上游故障。 |
OpenAPI规范可访问地址为 /openapi.json 并导入到客户端 SDK生成器或文档工具。
