agent-canary
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., "@agent-canaryPlant a honeypot file with fake AWS credentials"
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.
Agent Canary
Tripwire detection for autonomous AI agents.
Plant honeypots in files, MCP tools, and API routes. When an agent crosses the line, Agent Canary records a sealed forensic event, optional Nostr attestation, and shows it in a local operator dashboard.
pip install "git+https://github.com/SamsonCyber/agent-canary.git#egg=agent-canary[all]"
agent-canary init
agent-canary plant file traps/.env.prod --template aws_creds
agent-canary nostr init
agent-canary dash
# open http://127.0.0.1:8765/Why this exists
Agents read your tree, call tools, and probe APIs without the manners of a human attacker. Classic canaries watch networks and credentials for people. Agent Canary watches agent behavior inside your project: scope creep, tool abuse, and quiet exfil attempts.
You get three layers:
Layer | What you get |
Tripwires | File honeypots, MCP decoy tools, HTTP decoy routes |
Forensics | Hash-linked chain, optional BIP-340 signatures, exportable bundle |
Operator UI | Local dashboard for canaries, triggers, and the forensic chain |
Related MCP server: open-edison
Operator dashboard
Read-only web UI bound to one project root. Plant and remove stay on the CLI.
agent-canary dash --host 127.0.0.1 --port 8765 --root .What you see
Summary counts from live registry data (canaries, triggers, sealed links, chain tip)
Forensic chain timeline (oldest → newest) with file names, tools, and routes
Planted canaries and trigger history with seal status
JSON under
/api/*for automation
Endpoint | Purpose |
| Operator UI |
| Full payload (summary + canaries + triggers + chain) |
| Forensic chain only |
| Planted canaries |
| Trigger history |
| Counts and tip |
| Liveness |
Light mode follows system preference:
Crypto-verified forensics + Nostr
Every trigger is sealed before it hits SQLite:
content_hash: SHA-256 of the canonical event payload
prev_hash: previous link (or genesis zeros)
seq: monotonic index
signature: BIP-340 Schnorr when an nsec is present
That is a local append-only chain. Edit an old row and verification fails.
Nostr (optional extra)
With [nostr] installed:
Sign seals under your npub
Publish immutable kind
31240events to relaysRe-publish or verify from CLI
Agents do not need Nostr. Only your canary host signs and publishes. The agent only trips a file, tool, or API lure.
pip install "git+https://github.com/SamsonCyber/agent-canary.git#egg=agent-canary[nostr]"
agent-canary init
agent-canary nostr init
agent-canary alert add nostr wss://relay.damus.io
agent-canary alert add nostr wss://nos.lol
# after trips land
agent-canary forensic verify
agent-canary forensic verify --require-signature
agent-canary forensic export --out canary-forensics.json
agent-canary nostr status
agent-canary nostr publish --lastConfig (.agent-canary/config.yaml):
forensics:
seal: true
require_signature: false
alerts:
nostr:
relays:
- wss://relay.damus.io
auto_publish: true
kind: 31240Private key: .agent-canary/nostr/nsec (never commit). Rotate with agent-canary nostr init --force.
Install
Source of truth is GitHub (not PyPI):
# core
pip install "git+https://github.com/SamsonCyber/agent-canary.git"
# MCP tripwire server
pip install "git+https://github.com/SamsonCyber/agent-canary.git#egg=agent-canary[mcp]"
# Nostr crypto + relay client
pip install "git+https://github.com/SamsonCyber/agent-canary.git#egg=agent-canary[nostr]"
# everything
pip install "git+https://github.com/SamsonCyber/agent-canary.git#egg=agent-canary[all]"
# pin a tag
pip install "git+https://github.com/SamsonCyber/agent-canary.git@v0.3.0"Requires Python 3.10+.
Quickstart
agent-canary init
# honeypot files
agent-canary plant file traps/.env.production --template aws_creds
agent-canary plant file secrets/database.yml --template db_creds
# MCP tripwires
agent-canary plant mcp-tool execute_sql_admin \
--description "Run admin SQL queries on production database"
agent-canary plant mcp-tool export_user_data \
--description "Export user data in bulk"
# API decoys
agent-canary plant api /admin/config --method GET --description "Admin config lure"
agent-canary plant api /v1/users/export --method POST --description "Bulk export"
# Env-var lures (wire check_env_access into secret loaders)
agent-canary plant env PROD_MASTER_KEY
agent-canary templates # list file honeypot types
agent-canary list
agent-canary watch # file access
agent-canary serve-mcp # or: agent-canary serve-mcp --stdio
agent-canary serve-api # decoy HTTP
agent-canary dash # operator UIAll-in-one: agent-canary run (watcher + MCP SSE + API).
Four vectors
File honeypots. 22 templates (cloud creds, kubeconfig, LLM keys, wallet seed, agent system-prompt dump, and more). Watchdog monitoring with polling fallback. check_file_access for MCP wrappers that intercept reads. List types: agent-canary templates.
MCP tripwire tools. High-privilege looking tools (SQL admin, shell_exec, vault read, role assume, fund transfer, …). On call: log full arguments, return a plausible permission error. Wire into Claude Desktop / Claude Code via stdio.
API decoys. Fake bulk export, admin config, cloud metadata (AWS IMDS / GCP), Vault, GraphQL admin, actuator env, web-root .env, and more. Capture method, path, headers, body, client IP.
Env-var lures. Plant a name like PROD_MASTER_KEY. Call check_env_access(registry, name) from secret loaders; a hit logs a forensic trigger and returns a synthetic value + permission error.
Alerts
Webhook, Slack, Discord, and Nostr fire when tripwires hit (watch / serve-mcp / serve-api / run).
agent-canary alert add webhook https://your-server.com/canary-hook
agent-canary alert add slack https://hooks.slack.com/services/T.../B.../xxx
agent-canary alert add discord https://discord.com/api/webhooks/123/abc
agent-canary alert add nostr wss://relay.damus.io
agent-canary alert test
agent-canary alert listMCP integration
{
"mcpServers": {
"canary": {
"command": "agent-canary",
"args": ["serve-mcp", "--stdio"]
}
}
}Any agent that calls a tripwire tool is logged with forensic context, then gets a permission-denied style response.
File templates
Run agent-canary templates for the live list. Each embeds the canary id in a format-plausible way.
Template | Generates | Use case |
| Fake | Credential harvesting |
| Azure SP + storage connection string | Azure secret probes |
| GCP service-account JSON | GCP key theft |
| Production/staging DB YAML | Database access probes |
| DATABASE_URL / Redis / Mongo URIs | Connection-string harvesting |
| Fake RSA key with embedded id | Key exfiltration |
| Admin kubeconfig | Cluster access probes |
| Docker/ghcr registry auth JSON | Registry token theft |
| Stripe / OpenAI / GitHub-style tokens | API key theft |
| Anthropic / OpenAI / xAI / OpenRouter keys | LLM key theft |
| HF hub token | Model hub token theft |
| Slack bot/user/app tokens | Messaging token theft |
| JWT/session signing secrets | Auth secret probes |
| OAuth client id/secret | OAuth client theft |
|
| Package registry theft |
| git-credentials HTTPS store | SCM credential theft |
| tfstate with sensitive outputs | Infra state exfil |
| Cloudflare API token + zone | CDN/API token theft |
| CSV of fake PII | Data exfiltration |
| Confidential-looking markdown | Doc access |
| Fake elevated system-prompt dump | Agent scope-creep reads |
| Fake wallet mnemonic lure | Crypto seed theft |
Scope rules and notices
Scope rules: allow_agents / deny_agents cut false positives. Allow list wins when both are set.
Scope notices (soft): off (default silent honeypot), static, or stochastic boundary text for measurement. Not a hard control. Use tool allowlists and network policy for real gates.
agent-canary plant file traps/keys.env --template api_keys --notice stochasticHow it differs
Tool | Primary target | Where it sits |
Thinkst Canary | Human attackers on classic infra | Network / infra |
Beelzebub MCP | General network deception | Network |
SNARE / TANNER | Web scanners | Web tier |
Agent Canary | AI agents (MCP, file reads, API probing) | App layer in your tree |
Agent-specific forensics (tool args, optional reasoning, fingerprints) plus a local dash and optional Nostr attestation. No separate honeypot host required.
License
MIT
Repo: github.com/SamsonCyber/agent-canary
Offline quality gate
python -m pytest tests/ -qExpect exit code 0. Secrets stay out of git (data/, .env, *.key, secrets/).
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
- FlicenseNot gradedqualityNot gradedmaintenanceA transparent proxy and execution firewall that intercepts and audits AI agent tool calls against configurable security policies before forwarding them to downstream MCP servers. It provides safe execution environments with features like data redaction, anti-loop protection, and unified alert dispatching.

open-edisonofficial
AlicenseNot gradedqualityDmaintenanceDeterministic agentic data firewall that secures, monitors, and controls AI agent interactions with data and software via MCP, preventing data leaks.287GPL 3.0- AlicenseAqualityBmaintenanceProvides prompt injection detection, PII/secrets redaction, and an audit trail for AI agents via MCP tools.4MIT
- AlicenseNot gradedqualityBmaintenanceA multi-agent AI security layer that protects LLMs from prompt injection, jailbreaks, and policy violations via MCP tools.MIT
Related MCP Connectors
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
The WAF for agents. Pattern-based + heuristic firewall scans prompts, RAG documents, tool argume...
MCP-native Trust Infrastructure for AI Agents. Persistent encrypted memory with Trust Quotient.
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/SamsonCyber/agent-canary'
If you have feedback or need assistance with the MCP directory API, please join our Discord server