作为基础的隧道 — Cloudflare + MCP
Cloudburrow 允许在桌面“桥接器”和启用 MCP 的客户端(例如移动应用或其他代理)之间建立安全的、基于设备的 Cloudflare 隧道连接。它专注于一键配对流程、稳定的 wss:// 端点以及在 Cloudflare Worker 上暴露的可选 MCP 工具,用于监控和远程控制——与任何特定客户端无耦合。
用简单的话来说,你现在可以做到以下几点:
wss:// URL。wss://…/ws)。bun 和 JSON-RPC 脚本;易于嵌入工作流、CI 或代理运行时。wss://tunnel-<rand>.openagents.com/ws 用于桥梁。cloudflared,从经纪人请求凭证,运行连接器,并打印配对二维码/深度链接。/ws),以强制认证连接。Worker(经纪人 + MCP)
cloudflared)和 MCP 工具(供代理/应用驱动生命周期而不查看秘密)。桥梁(桌面)
cloudflared 使隧道指向你的本地应用程序(例如 http://127.0.0.1:8787)。wss://<hostname>/ws,该 URL 转发到你的本地服务。/ws 端点添加身份验证,以便只有授权客户端连接。客户端(代理/应用)
wss://…/ws 链接,检查状态并在完成时撤销。https://cloudburrow-broker.openagents.com(自定义域名绑定到 Worker)。POST /tunnels → 返回 { tunnelId, hostname, token }GET /tunnels/:id/statusDELETE /tunnels/:id/mcp 启用带有工具:tunnel.create_named, tunnel.status, tunnel.revoke, tunnel.announce_link。bun run tunnel 来生成并运行连接器并打印公共 wss://…/ws URL。简单语言概述
cloudflared 连接器运行时,管道变得活跃)。wss://<hostname>/ws “链接”只是客户端用来通过该隧道连接到你的应用程序的 URL。tunnel.announce_link
{ hostname: string }wss://<hostname>/ws 作为结构化的链接供客户端显示或使用。tunnel.create_named
{ deviceHint?: string }{ tunnelId: string, hostname: string, createdAt: string }token 从未由 MCP 返回(设计如此)。使用经纪人 REST 来运行连接器。tunnel.status
{ tunnelId: string }{ connected: boolean, lastSeen?: string }tunnel.revoke
{ tunnelId: string, hostname?: string }hostname)。{ ok: true }。隧道生成 + DNS
curl -s -X POST https://cloudburrow-broker.openagents.com/tunnels -H 'content-type: application/json' -d '{}' | jq{ tunnelId, hostname, token }。dig +short <hostname> 解析到 Cloudflare 边缘 IP(例如 104.18.14.36,1104.18.15.36)通常在约 5-10 秒内完成。连接器注册(HTTP/2)
cloudflared tunnel --no-autoupdate run --protocol http2 --proxy-keepalive-connections 1 --token "<TOKEN>" --url http://127.0.0.1:8787Registered tunnel connection ... protocol=http2(边缘注册)。短暂的 QUIC/UDP 警告是可以接受的。公共 HTTP 可达性
127.0.0.1:8787(例如 bun -e "Bun.serve({port:8787, fetch(){return new Response('ok\n')}}); await new Promise(()=>{})"),curl -i https://<HOSTNAME>/ 返回来自你的本地服务的 HTTP 响应(根据路径的不同,响应为 2xx/4xx)。WebSocket 握手到 /ws
bun -e "Bun.serve({port:8787, fetch(r,s){ if(new URL(r.url).pathname==='\/ws') return s.upgrade(r); return new Response('ok');}, websocket:{ open(ws){ws.send('hello');}, message(ws,msg){ws.send('echo:'+msg)} } }); await new Promise(()=>{})"bun -e "let u='wss://'+process.argv[2]+'/ws'; const ws=new WebSocket(u); ws.addEventListener('open',()=>{console.log('OPEN'); ws.send('ping')}); ws.addEventListener('message',ev=>{console.log('MSG '+ev.data); ws.close();}); ws.addEventListener('close',()=>process.exit(0));" <HOSTNAME>OPEN 然后 MSG echo:ping。安装依赖项:
bun install
本地运行(占位符):
bun run index.ts
此仓库目前搭建了项目和文档。经纪人、客户端集成和 MCP 端点将逐步增加,首先使用 Bun 工具。
使用包含的脚本来测试运行在 Cloudflare Worker 上的 MCP 服务器。
https://cloudburrow-broker.openagents.com/mcpscripts/test-mcp.ts使用 Bun 运行:
# 列出工具并宣布一个链接(无变更)
bun scripts/test-mcp.ts --url https://cloudburrow-broker.openagents.com/mcp \
--hostname cloudburrow-broker.openagents.com
# 完整生命周期:创建 → 状态 → 撤销(通过 Worker 触发 Cloudflare API 调用)
bun scripts/test-mcp.ts --url https://cloudburrow-broker.openagents.com/mcp \
--hostname cloudburrow-broker.openagents.com --create --revoke
我们测试了什么以及它的表现:
2025-06-18 成功握手。tunnel.announce_link, tunnel.create_named, tunnel.status, tunnel.revoke。wss://<hostname>/ws 链接。connected=false(直到连接器附加之前预期如此),lastSeen 缺失或 n/a。注意事项:
MCP-Protocol-Version 头为服务器支持的版本。--create 和 --revoke 通过 Worker 触发真实的 Cloudflare API 调用;确保 Worker 配置了 CF_API_TOKEN, CF_ACCOUNT_ID, 和 CF_ZONE_ID。--tunnelId <id> 来检查现有隧道的状态而不创建新的隧道。部署/开发命令(通过 Bun 的 Wrangler):
bun run dev:workerbun run deploy:workerWorker 上所需的秘密:
CF_API_TOKEN — 对帐户/区域具有隧道 + DNS 写权限的 API 令牌CF_ACCOUNT_ID — Cloudflare 账户 IDCF_ZONE_ID — 你的域的区域 ID(例如 openagents.com)BROKER_KEY — 如果设置,则经纪人端点需要 Authorization: Bearer <BROKER_KEY>设置秘密的一行命令(无需传递 --name):
bun run cf:secret:api-tokenbun run cf:secret:account-idbun run cf:secret:zone-idbun run cf:secret:broker-key注意事项:
worker/wrangler.jsonc。脚本传递 --config worker/wrangler.jsonc 所以你不必这样做。cloudburrow-broker.openagents.com → Worker。创建一个隧道(返回令牌 + 主机名):
curl -s -X POST https://cloudburrow-broker.openagents.com/tunnels -H 'content-type: application/json' -d '{}' | jq本地运行连接器(HTTP/2 + 最小保活):
env -u HTTP_PROXY -u HTTPS_PROXY -u http_proxy -u https_proxy -u ALL_PROXY -u all_proxy \
cloudflared tunnel --no-autoupdate run --protocol http2 --proxy-keepalive-connections 1 --token "<TOKEN>" --url http://127.0.0.1:8787探测公共主机:
curl -i https://<HOSTNAME>/cloudflared 正在运行。今天可行的
bun run tunnel(需要安装 cloudflared)。计划增强
bun test 覆盖 MCP 流程和经纪人边缘情况的自动化测试。