MCP Canary

Synthetic monitoring for MCP servers

MCP monitoring your coding agent sets up by itself.

MCP Canary calls your MCP server on a schedule: handshake, tools/list, and a real read-only tool call with assertions. It tells you the moment it breaks. Your agent installs one binary and does the rest. No signup form, no dashboard, no runtime.

$ curl -fsSL https://mcpcanary.com/install.sh | sh

One ~8 MB native binary. macOS, Linux, Windows. 72-hour trial, no card.

agent session
$ canary inspect https://api.acme.dev/mcp
https://api.acme.dev/mcp: PASSED (412 ms)
Server: acme-mcp 2.4.0 (streamable_http, protocol 2026-07-28)
TOOL             SIDE EFFECTS         DESCRIPTION
search_customer  read_only            Find a customer by email.
create_invoice   explicitly_mutating  Create and send an invoice.

$ canary monitor set acme-prod \
    --url https://api.acme.dev/mcp \
    --tool search_customer \
    --args '{"email":"[email protected]"}' \
    --assert '$.customers[0].email == "[email protected]"'
Created workspace 0199f2c4-…; token saved.
Created monitor 'acme-prod'.
First check: PASSED (538 ms)

# in CI, after each deploy
$ canary monitor test acme-prod --json
{ "status": "failed", …,
  "failure": { "code": "ASSERTION_FAILED",
    "details": { "path": "$.customers[0].email",
                 "found": false, … } } }
exit 3▍

Give this to your coding agent

Set up continuous external monitoring for the production MCP endpoint in this repository with MCP Canary (https://mcpcanary.com/llms.txt). Choose a safe deterministic canary, keep the configuration in the repository, and verify that it works.

Uptime checks see a 200. Your users' agents see a broken tool.

Many MCP servers answer tools/list from code, so the server looks fine while the database behind the tool is dead. MCP Canary checks at three levels.

What brokeL1 handshake + toolsL2 tool callL3 call + assertions
Server down, DNS, TLS, 5xx caught caught caught
Protocol or transport broken caught caught caught
Tool removed or schema changed caught caught caught
Backend dead: database down, upstream key expired missed caught caught
Tool answers with wrong data missed missed caught

From "monitor this" to a running check in four commands

  1. 01

    Install

    One native binary from https://mcpcanary.com/install.sh. No Node, Python, .NET, or Docker.

    curl … | sh
  2. 02

    Inspect

    The agent lists the tools and their safety hints, and picks one marked read-only.

    canary inspect URL
  3. 03

    Set

    Create or update by name. Idempotent, so the same line goes into your deploy workflow.

    canary monitor set NAME …
  4. 04

    Gate

    Run a check after each deploy. Exit 0 passes the pipeline; anything else fails it with JSON evidence.

    canary monitor test NAME

Between deploys, scheduled checks run on your interval (as often as every 30 seconds). An incident opens only after a confirming re-check and resolves on the next passing check. A CI test never pages anyone. Signed webhooks tell you, or your agent, what changed.

Built for agents, not for dashboards

JSON everywhere

Every command takes --json and prints only the API's JSON, errors included. Nothing else on stdout.

Stable exit codes

0 passed, 3 target unhealthy, 31 target unreachable, 40 payment needed. A CI step needs no parsing.

Never calls a risky tool

A tool without readOnlyHint is never called unless you pass --allow-side-effects. Silence is not consent.

Evidence, not a red dot

A failed assertion returns the path, the expected value, and what the tool really returned.

Contract change alerts

Tool added, argument removed, type changed: each check diffs the tool schemas against the last one.

Secrets stay secret

Target tokens come from environment variables only, are encrypted at rest, and are never returned.

Errors that say what to do

Every error has a stable code, a message with the fix, and retryable: true or false.

No account needed

The first monitor creates an anonymous workspace and saves its token. There is no login step.

Everything is an API

Anything the CLI does is an HTTP call. The OpenAPI document is public.

Pricing

The first monitor starts a 72-hour trial of the real product. After it, a human pays from a link that the agent hands over. Nothing is deleted when access ends; checks pause until someone pays.

Trial

The real product for 72 hours. No card.

$0 for 72 h

  • 3 monitors
  • Checks every 5 minutes
  • 7 days of incidents and failed checks
  • 50 on-demand checks per day
  • 1 webhook

starts with canary monitor set

Solo

One person, a few production MCP servers.

$24 / month

  • 10 monitors
  • Checks every minute
  • 30 days of incidents and failed checks
  • 500 on-demand checks per day
  • 5 webhooks

canary billing upgrade --plan solo

Pro

A team that ships MCP servers every week.

$49 / month

  • 50 monitors
  • Checks every 30 seconds
  • 90 days of incidents and failed checks
  • 5,000 on-demand checks per day
  • 20 webhooks

canary billing upgrade --plan pro

Prices in USD, monthly, cancel any time. Payments by Polar, merchant of record. Agents with a wallet will be able to pay by themselves with USDC (x402); this is coming soon.

Questions

Will a check change data on my server?+

Not unless you allow it. MCP Canary calls only tools that declare readOnlyHint: true. Any other tool needs --allow-side-effects, and the rule is checked again on every check, because a server can change its hints.

Which MCP servers can it check?+

Public HTTPS endpoints with Streamable HTTP or the legacy HTTP+SSE transport. Target auth is a bearer token or custom headers today; OAuth comes later. Private and local addresses are blocked.

Where do checks run from?+

From one region today. Multi-region checks are on the roadmap.

Where is the configuration?+

On the server, which is the one source of truth. Keep the canary monitor set line in your deploy workflow: it is idempotent, so each deploy re-applies the same monitor. canary monitor list --json shows the true state.

What happens when the trial ends?+

Checks and alerts pause, and writes answer 402 with payment links. Your monitors, history, and webhooks stay. A payment restores everything at once.

Which platforms does the CLI support?+

macOS (Apple Silicon and Intel), Linux x64 and arm64 (glibc 2.34 or later), and Windows x64. Binaries are on GitHub Releases with SHA-256 checksums.

Put a canary in front of your MCP server

Install, then ask your agent to set it up. Or read the docs first.

curl -fsSL https://mcpcanary.com/install.sh | sh