mcp-host-canary
MCP Host Canary
创建一个一次性的远程 MCP 服务器,将其连接到 Claude、ChatGPT、Cursor 或其他托管主机,并获取一份关于它实际到达的最后一个协议边界的安全回执。
运行一个 30 分钟的金丝雀测试——无需注册或安装 · 查看一份已定稿的示例回执
瀑布流演示

MCP Host Canary 创建一个已知的测试服务器,并且只记录它观察到的协议边界。它区分以下情况:未识别到任何 MCP 流量、不完整的 manifest 响应、返回了工具列表但没有哨兵调用、以及有调用请求但没有注册的回调执行。它仅在现代发现或旧版初始化实际到达时才记录它们。它不会根据未收到的事件推断成功。
MCP Inspector 和 MCPJam 连接服务器进行直接调试。MCP Host Canary 记录已知测试服务器从 Claude、ChatGPT、Cursor 或其他主机观察到的最后一个协议边界。
不保留任何令牌、提示词、请求体、工具参数、IP 地址或原始 User-Agent 字符串。
一份已定稿的回执设计为仅在其一次性端点关闭后才可共享:
profile limits
status finalized
last observed tools/call.executed
tools listed 258
called tool sentinel_257查看一份完整的隐私安全 Markdown 回执。它是一个受控的本地示例,不是托管主机的证据。
从匹配的症状开始:Claude 已连接但工具未显示、已连接但没有工具调用、有 tools/list 但没有 tools/call、258 个工具边界、或 MCP Inspector 与 MCP Host Canary 的对比。
为正常路径创建一个
baseline运行,或为 258 个工具边界创建一个limits运行。仅将临时 MCP URL 提供给你正在测试的托管主机;按照 Claude、ChatGPT 或 Cursor 设置指南 操作。
观察服务器观察到的瀑布流,然后定稿并导出安全回执。
要贡献独立的托管主机观察结果,请遵循安全回执贡献路径。
这是一个实验性的、免费的、单实例试点——不是 MCP 一致性测试套件、安全扫描器、代理或生产网关。重启或免费实例暂停会删除活动运行和回执。
Related MCP server: Local Model Workers MCP
它观察什么
每次运行有两种配置之一:
baseline:三个紧凑的、零输入的工具,用于正常的发现和调用路径。limits:258 个工具,包括位于排序边界的sentinel_257和一个具有 16,385 字节描述的模式边界夹具。
瀑布流只包含观察到的无认证 MCP 事实。它覆盖两个协议时代,而不是要求一个通用序列:
2026-07-28: server/discover? (optional)
2025-11-25 and earlier: initialize.request -> initialize.response -> initialized
tools/list.request -> tools/list.response
tools/call.request -> tools/call.executedMCP 2026-07-28 移除了 initialize / initialized 握手,现代客户端不要求调用 server/discover。较早的修订版本使用握手路径。在可用时,根据观察到的协议版本来解释缺失的发现或初始化;两者都不是现代 tools/list 或 tools/call 观察的先决条件。
请求回执和实际回调执行是分开的观察。只有在 manifest 响应成功生成后才记录工具数量。
初始托管主机证据
初始 limits 运行到达了两个不同的服务器观察边界:Claude Web 获取了 258 个工具的 manifest 但没有哨兵回调;ChatGPT Developer 模式到达了实际的 sentinel_257 回调执行。尝试次数并不一致,因此这些是边界案例说明——不是正面比较的比率、兼容性等级或对主机内部原因的断言。
阅读托管主机边界证据页面了解范围和限制。其机器可读源 managed-host-observations.v1.json 是一个规范化的少量样本摘要,不是一组重建的回执。
托管主机 | 配置 | 保留的操作者协议 | 服务器观察结果 |
Claude Web |
| 直接 ×1;间接 ×1;阴性 ≥1(未保留确切阴性次数) |
|
ChatGPT Developer 模式 |
| 直接 ×3;间接 ×3;阴性 ≥1(未保留确切阴性次数) |
|
Claude Web |
| 显式 |
|
ChatGPT Developer 模式 |
| 未保留确切的 |
|
阴性对照在两次 baseline 运行中都使回调计数保持不变,但其确切的重复次数未被保留。不要根据这四行历史数据计算主机成功率。
复现主机边界
创建一个新的
baseline运行,并使用 Claude、ChatGPT 或 Cursor 设置指南 连接其一次性 URL。在三个新的主机对话中,每个提示词恰好发送一次:直接——
Call canary_ping exactly once and return only its tool result.;间接——Use the connected MCP server to retrieve its fixed canary value without naming a tool yourself. Return only that value.;阴性——Do not use any MCP tool. Reply with exactly: control-only。在每个提示词之后记录回调计数增量。直接或间接增量记录主机调度;阴性增量应保持为零。这些是观察结果,不是通过/失败等级。
对于排序边界,创建一个单独的
limits运行并使用该运行的新一次性 URL 连接主机,并在一个新对话中发送一次:Call sentinel_257 exactly once and return only its tool result.定稿每次运行并导出其安全回执。定稿会禁用一次性 MCP 端点。
相同的精确提示词在运行创建后可作为实时 UI 中的复制操作使用。
如果金丝雀测试产生了可复现的边界,请使用安全支持工单模板或托管主机回执表单。如果它节省了调试时间,请给仓库加星标,以便其他 MCP 开发者能找到它。切勿包含实时能力 URL 或仅所有者可访问的回执 URL。
本地快速开始
使用 Node.js 22.x。
npm ci
npm run typecheck
npm test
npm run build
npm start打开 http://127.0.0.1:4317。本地非生产配置使用仅限开发环境的会话密钥;生产环境在没有显式密钥和 HTTPS 公共 URL 的情况下拒绝启动。
在服务器仍在运行时,从另一个终端使用官方 MCP 客户端执行两个受控的本地运行:
npm run demo演示在一次运行中列出并调用最终的哨兵,然后在另一次运行中列出工具并停止。这验证了回执差异,而不声称与托管主机兼容。
部署隔离试点
Blueprint 会在新加坡创建一个免费实例,生成一个 256 位会话密钥,运行完整的验证构建,并保持自动部署禁用。它使用与公共测试版相同的 30 分钟、50 次运行、仅内存的试点边界。免费计算实例不保证 $0 工作区账单:超出包含带宽或构建管道配额的使用量在启用计费后可能会被收费。在部署前请查看 Render 的免费实例限制、检查工作区使用量,并配置构建管道支出限制。冷启动或重启可能会清除活动运行和回执。
API
所有 /api/* 运行操作都隔离到签名的匿名浏览器会话中。其他所有者收到与缺失运行相同的 404。只有高熵的 /mcp/:id 能力 URL 可以在没有该会话的情况下有意使用。
方法 | 路径 | 用途 | |
|
| 签发或刷新匿名会话 | |
|
| 结束浏览器会话 | |
|
| 创建 `{ "profile": "baseline" | "limits" }` |
|
| 列出当前所有者的运行 | |
|
| 读取仅所有者可访问的运行;支持 | |
| `/api/tests/:id/receipt?format=json | markdown` | 导出安全回执 |
|
| 禁用 MCP 访问并冻结回执 | |
|
| 立即撤销并删除运行 | |
|
| 进程健康 | |
|
| 就绪状态 |
浏览器有条件地轮询最多三个选定的活动运行。当标签页隐藏或运行已定稿或过期时,轮询停止,错误使用指数退避。
试点边界
运行存在于单个进程中,最多 30 分钟后过期。
部署、重启或免费实例暂停会删除活动运行和回执。
最多 50 个活动运行,每个所有者 3 个,每个所有者每小时创建 6 次,全局每小时创建 60 次。
MCP 流量按运行限制;
tools/list有更严格的限制,limits 夹具有一个四次请求的执行信号量。容量压力返回
429或503并带有Retry-After;现有运行永远不会被驱逐以接纳新运行。/api/*请求体限制为 2 KiB,/mcp/*请求体限制为 64 KiB,JSON-RPC 批处理在应用处理前限制为 16 个条目。MCP 订阅和 OAuth 有意缺席。工具是只读的、幂等的,并带有无认证兼容性元数据进行通告。
结果显示此服务器观察到的最后一个边界。它们无法确定封闭主机内部的根本原因。
有关保留字段,请参阅 PRIVACY.md;有关能力 URL 和报告指南,请参阅 SECURITY.md。
生产配置
预期的试点形态是 HTTPS 后面的一个 Node 22.x 进程。在生产环境中:
使用
CANARY_BIND_HOST绑定到0.0.0.0;从
RENDER_EXTERNAL_URL派生公共基础 URL 和允许的主机,或设置服务器支持的显式公共 URL;将
CANARY_SESSION_SECRET设置为至少 32 字节的随机生成值;可选地将
CANARY_INDEXNOW_KEY设置为单独的、随机生成的 8-128 字符 ASCII 字母、数字或连字符值,以公开/<key>.txt用于手动 IndexNow 所有权验证;将 TTL 设置为
1800000毫秒,最大测试数设置为50;保持自动部署禁用,以便源代码推送不会静默清除正在运行的测试。
切勿提交会话密钥或 IndexNow 密钥。仅复制 .env.example 用于本地配置。密钥文件未列在 robots.txt 或站点地图中,此服务不会自动提交 URL。仅当同源公共页面被添加、更新、重定向或删除时,才通知 IndexNow。
命令
npm run typecheck
npm test
npm run build
npm start
npm run demo
npm audit --audit-level=low验证门
本地测试是必要的,但还不够。试点仅在最多七天内满足以下条件时继续:
两个独立的托管主机产生不同的回执;
五名独立开发人员从自己的主机完成一次运行;
两张回执用于真实的支持工单或 GitHub issue;并且
密钥不保留检查持续通过。
如果托管主机连接失败、证据需要保留密钥、用户主要请求代理或自动修复,或者官方工具提供相同的托管主机证据流程,则项目不会扩展。只有在试点证据证明有必要时,才会进行付费托管和版本化发布。
许可证
This server cannot be deployed
Maintenance
Related MCP Connectors
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Paid remote MCP for LLM security scans, jailbreak checks, analytics, checkout, and readiness.
A paid remote MCP for AI agent browser MCP session, built to return verdicts, receipts, usage logs,
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceLocal MCP servers that give Claude Code access to other tools mid-session.GPL 3.0
- AlicenseNot gradedqualityAmaintenanceA local MCP server that lets Claude Code and Codex delegate repository exploration and test proposals to a remote LM Studio model, while enforcing security boundaries by keeping all repository access read-only and never applying patches or running commands remotely.11 npm1MIT
- AlicenseAqualityBmaintenanceLocal MCP server that lets Claude Code delegate bounded, read-only tasks to external AI models (Codex, Grok, local OpenAI-compatible servers) via CLIProxyAPI.6MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for safely continuing long Claude Code sessions by cleaning transcripts, removing runtime noise, and generating verified resumable sessions with rollback support.MIT