mcp-host-canary
Creates a disposable canary MCP server for ChatGPT Developer mode to connect to, allowing observation of how far the host progresses through MCP discovery and tool-call boundaries.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-host-canaryCreate a baseline canary run so I can see how far Claude Web gets."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Host Canary
Create a disposable remote MCP server, connect it to Claude, ChatGPT, Cursor, or another managed host, and get a safe receipt of the last protocol boundary it actually reached.
Run a 30-minute canary — no signup or install · View a finalized sample receipt
Waterfall demo

MCP Host Canary creates a known test server and records only the protocol boundaries it observes. It distinguishes no recognized MCP traffic, an incomplete manifest response, a returned tool list without a sentinel call, and a call request without registered callback execution. It records optional modern discovery and legacy initialization only when either actually arrives. It does not infer success from an event it did not receive.
MCP Inspector and MCPJam connect to a server for direct debugging. MCP Host Canary records the last protocol boundary a known test server observed from Claude, ChatGPT, Cursor, or another host.
No tokens, prompts, request bodies, tool arguments, IP addresses, or raw User-Agent strings are retained.
A finalized receipt is designed to be shared only after its disposable endpoint is closed:
profile limits
status finalized
last observed tools/call.executed
tools listed 258
called tool sentinel_257View a complete privacy-safe Markdown receipt. It is a controlled local example, not managed-host evidence.
Start with the matching symptom: Claude connected but tools do not appear, connected but no tool call, tools/list without tools/call, the 258-tool boundary, or MCP Inspector vs MCP Host Canary.
Create a
baselinerun for the normal path or alimitsrun for the 258-tool boundary.Give the temporary MCP URL only to the managed host you are testing; follow the Claude, ChatGPT, or Cursor setup guide.
Watch the server-observed waterfall, then finalize and export the safe receipt.
To contribute an independent host observation, follow the safe receipt contribution path.
This is an experimental, free, single-instance pilot—not an MCP conformance suite, security scanner, proxy, or production gateway. A restart or free-instance suspension removes active runs and receipts.
Related MCP server: Local Model Workers MCP
What it observes
Each run has one of two profiles:
baseline: three compact, zero-input tools for a normal discovery and call path.limits: 258 tools, includingsentinel_257at the ordering boundary and one schema-boundary fixture with a 16,385-byte description.
The waterfall contains only observed no-auth MCP facts. It covers two protocol eras rather than requiring one universal sequence:
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 removed the initialize / initialized handshake, and a modern client is not required to call server/discover. Earlier revisions use the handshake path. Interpret absent discovery or initialization against the observed protocol version when available; neither is a prerequisite for a modern tools/list or tools/call observation.
Request receipt and actual callback execution are separate observations. A tool count is recorded only after a manifest response is successfully produced.
Initial managed-host evidence
The initial limits runs reached two different server-observed boundaries: Claude Web fetched the 258-tool manifest without a sentinel callback; ChatGPT Developer mode reached actual sentinel_257 callback execution. Attempt counts were not uniform, so these are boundary case notes—not head-to-head rates, compatibility grades, or claims about a host's internal cause.
Read the managed-host boundary evidence page for the scope and limitations. Its machine-readable source, managed-host-observations.v1.json, is a normalized small-sample summary, not a set of reconstructed receipts.
Managed host | Profile | Retained operator protocol | Server-observed result |
Claude Web |
| direct ×1; indirect ×1; negative ≥1 (exact negative count not retained) |
|
ChatGPT Developer mode |
| direct ×3; indirect ×3; negative ≥1 (exact negative count not retained) |
|
Claude Web |
| explicit |
|
ChatGPT Developer mode |
| exact |
|
The negative control left callback counts unchanged in both baseline runs, but its exact repetition count was not retained. Do not calculate host success rates from these four historical rows.
Reproduce a host boundary
Create a fresh
baselinerun and connect its disposable URL using the Claude, ChatGPT, or Cursor setup guide.In three fresh host conversations, send each prompt exactly once: direct —
Call canary_ping exactly once and return only its tool result.; indirect —Use the connected MCP server to retrieve its fixed canary value without naming a tool yourself. Return only that value.; negative —Do not use any MCP tool. Reply with exactly: control-only.Record the callback-count delta after every prompt. A direct or indirect delta records host dispatch; the negative delta should remain zero. These are observations, not pass/fail grades.
For the ordering boundary, create a separate
limitsrun and host connection using that run's new disposable URL, and send once in a fresh conversation:Call sentinel_257 exactly once and return only its tool result.Finalize each run and export its safe receipt. Finalize disables the disposable MCP endpoint.
The same exact prompts are available as copy actions in the live UI after a run is created.
If the canary produces a reproducible boundary, use the safe support-ticket template or managed-host receipt form. If it saved debugging time, star the repository so other MCP developers can find it. Never include a live capability URL or owner-only receipt URL.
Local quickstart
Use Node.js 22.x.
npm ci
npm run typecheck
npm test
npm run build
npm startOpen http://127.0.0.1:4317. The local non-production configuration uses a development-only session secret; production refuses to start without an explicit secret and HTTPS public URL.
With the server still running, exercise two controlled local runs from another terminal with the official MCP client:
npm run demoThe demo lists and calls the final sentinel in one run, then lists tools and stops in the other. That validates receipt differences without claiming compatibility with a managed host.
Deploy an isolated pilot
The Blueprint creates one Free instance in Singapore, generates a 256-bit session secret, runs the complete verification build, and keeps auto-deploy disabled. It uses the same 30-minute, 50-run, memory-only pilot boundary as the public beta. A Free compute instance does not guarantee a $0 workspace bill: usage beyond included bandwidth or build-pipeline allowances can be charged when billing is enabled. Review Render's Free instance limits, check workspace usage, and configure the build-pipeline spend limit before deploying. A cold start or restart can erase active runs and receipts.
API
All /api/* run operations are isolated to a signed anonymous browser session. Other owners receive the same 404 as a missing run. Only the high-entropy /mcp/:id capability URL is intentionally usable without that session.
Method | Path | Purpose |
|
| Issue or refresh an anonymous session |
|
| End the browser session |
|
| Create `{ "profile": "baseline" |
|
| List the current owner's runs |
|
| Read an owner-only run; supports |
| `/api/tests/:id/receipt?format=json | markdown` |
|
| Disable MCP access and freeze the receipt |
|
| Revoke and remove a run immediately |
|
| Process health |
|
| Readiness |
The browser conditionally polls at most three selected active runs. Polling stops when the tab is hidden or a run is finalized or expired, and errors use exponential backoff.
Pilot boundaries
Runs live in one process and expire after at most 30 minutes.
A deploy, restart, or free-instance suspension removes active runs and receipts.
There are at most 50 active runs, three per owner, six creations per owner per hour, and 60 creations globally per hour.
MCP traffic is limited per run;
tools/listhas a tighter limit and the limits fixture has a four-request execution semaphore.Capacity pressure returns
429or503withRetry-After; an existing run is never evicted to admit a new one./api/*bodies are limited to 2 KiB,/mcp/*bodies to 64 KiB, and JSON-RPC batches to 16 entries before application processing.MCP subscriptions and OAuth are intentionally absent. Tools are read-only, idempotent, and advertised with no-auth compatibility metadata.
Results show the last boundary observed by this server. They cannot establish the root cause inside a closed host.
See PRIVACY.md for retained fields and SECURITY.md for capability-URL and reporting guidance.
Production configuration
The intended pilot shape is exactly one Node 22.x process behind HTTPS. In production:
bind to
0.0.0.0withCANARY_BIND_HOST;derive the public base URL and allowed host from
RENDER_EXTERNAL_URL, or set the explicit public URL supported by the server;set
CANARY_SESSION_SECRETto a randomly generated value of at least 32 bytes;optionally set
CANARY_INDEXNOW_KEYto a separate, randomly generated 8-128 character ASCII letter, digit, or hyphen value to expose/<key>.txtfor manual IndexNow ownership verification;set the TTL to
1800000ms and maximum tests to50;keep auto-deploy disabled so a source push cannot silently erase active runs.
Never commit the session secret or an IndexNow key. Copy .env.example only for local configuration. The key file is not listed in robots.txt or the sitemap, and this service does not submit URLs automatically. Notify IndexNow only when a same-origin public page is added, updated, redirected, or deleted.
Commands
npm run typecheck
npm test
npm run build
npm start
npm run demo
npm audit --audit-level=lowValidation gate
Local tests are necessary but not sufficient. The pilot continues only if, within at most seven days:
two independent managed hosts produce distinct receipts;
five independent developers complete a run from their own host;
two receipts are used in a real support ticket or GitHub issue; and
secret non-retention checks remain passing.
The project does not expand if managed-host connection fails, evidence requires retaining secrets, users primarily request a proxy or automatic repair, or an official tool supplies the same managed-host evidence flow. Paid hosting and a versioned release happen only if the pilot evidence warrants them.
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.1,0621MIT
- 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 gradedqualityBmaintenanceMCP server for safely continuing long Claude Code sessions by cleaning transcripts, removing runtime noise, and generating verified resumable sessions with rollback support.MIT
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,
A paid remote MCP for AI agent browser MCP session, built to return verdicts, receipts, usage logs,
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sjh9714/mcp-host-canary'
If you have feedback or need assistance with the MCP directory API, please join our Discord server