io.github.KryptosAI/mcp-observatory

Official registry Health

MCP security scanner. CI-native testing, attack simulation, health scoring, and SARIF.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @kryptosai/mcp-observatory
Claude Code
claude mcp add mcp-observatory -- npx -y @kryptosai/mcp-observatory@1.36.1
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "mcp-observatory": {
            "command": "npx",
            "args": [
                "-y",
                "@kryptosai/mcp-observatory@1.36.1"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. MCP Observatory
  2. Get Started
  3. Learn from production usage
  4. Why MCP Observatory
  5. Self-hosted evidence
  6. Free tools for maintainers and teams
  7. How It Compares
  8. Quick Start
  9. Commands
  10. What It Does
  11. Architecture
  12. CI / GitHub Action
  13. MCP Server Mode
  14. Compatibility
  15. How It Compares
  16. Prior Art
  17. Limitations
  18. Works with mcp-seatbelt
  19. Works with agent-obs
  20. Contributors ✨
  21. Contributing

MCP Observatory

More badges

Free, open-source MCP security testing from ClearFrame. MCP Observatory is the CI-native security tool for teams shipping custom MCP servers. Test during development, catch schema drift, simulate attacks, and generate compliance evidence — before agents depend on your servers.

Also available in Simplified Chinese.

Runtime enforcement: Use mcp-seatbelt to block dangerous MCP tool calls at runtime based on observatory scan results.

Get Started

Step-by-step setup guide · macOS, Windows, Linux · Node.js 20+ and npm (install Node.js LTS).

1. Run your first scan

Open Terminal or PowerShell in your project folder and paste:

npx -y @kryptosai/mcp-observatory@latest

This downloads Observatory and checks your first configured MCP server. With no configured server, it uses an included example. To try only that example, run npx -y @kryptosai/mcp-observatory@latest demo --example.

2. Read the result

The terminal shows the target, grade, findings, and saved receipt path. Failed checks are findings to review, not a request to pay. If connection failed, fix the startup command or credentials and rerun. A demo grade describes the example, not your own server.

3. Review locally, then continue in ClearFrame
npx -y @kryptosai/mcp-observatory@latest dashboard
npx -y @kryptosai/mcp-observatory@latest clearframe

The dashboard shows your local scan history, HTML reports, and JSON downloads. No account, upload, subscription, or time-based retention limit. Stop it with Ctrl+C.

The clearframe command writes a private instruction file and prints a read-only CLI command. Review the file, then run that command or paste it into a new ClearFrame Mac chat with your project open. It does not launch ClearFrame or upload evidence automatically.

Get ClearFrame CLI or the Mac app · Currently Apple Silicon Mac. ClearFrame has its own account and usage terms; all Observatory features work without it.

MCP Observatory is free and MIT licensed. Product telemetry is off by default and makes no telemetry network request before explicit opt-in. Use telemetry preview to inspect fields or telemetry enable to opt in. Privacy details.

npx -y @kryptosai/mcp-observatory@latest test npx -y @modelcontextprotocol/server-everything
- uses: KryptosAI/mcp-observatory/action@v1

If this repo is an MCP package, that tests npx -y <package.json name>. Otherwise set command:.

Or generate a full workflow: npx -y @kryptosai/mcp-observatory@latest setup-ci --all --command "npx -y my-mcp-server" --sarif

Install: npx -y @kryptosai/mcp-observatory@latest · brew tap kryptosai/mcp-observatory https://github.com/KryptosAI/mcp-observatory && brew install mcp-observatory · docker pull ghcr.io/kryptosai/mcp-observatory:latest · curl -fsSL https://raw.githubusercontent.com/KryptosAI/mcp-observatory/main/scripts/install.sh | sh

docker run --rm ghcr.io/kryptosai/mcp-observatory:latest demo
docker run --rm ghcr.io/kryptosai/mcp-observatory:latest test npx -y @modelcontextprotocol/server-everything

Scanning a server on the host needs network and, for local files, a volume mount (-v "$PWD:$PWD" -w "$PWD").

Agents: npx -y @kryptosai/mcp-observatory@latest serve

Default-deny connect: npx -y @kryptosai/mcp-observatory@latest protect rewrites every discovered client config (Cursor, Claude, VS Code, .mcp.json, …). Undo: protect --undo. HTTP/SSE servers are left alone.

Runtime deny-default: npx -y @kryptosai/mcp-observatory@latest enforce --start-proxy writes a Seatbelt policy from the scan and starts the proxy. Local scan stays free.

Proof: Safety Index. Local history, evidence export, CI, and remediation task preparation are free.

Learn from production usage

Connect real tool calls to user intent with the usage-learning SDK and CLI: sanitized invocation evidence, opted-in “asked / expected / got” reports, selected conversation excerpts, one-click dissatisfaction flags, intent grouping across captured requests, and regression-case export. Run mcp-observatory usage review --dir private-usage to inspect linked evidence in a loopback-only browser screen. Server logs cannot reveal unshared conversations; observed execution and inferred breakdown signals stay separate. Collection is local and requires explicit integration.

Why MCP Observatory

MCP servers are becoming production dependencies. If agents rely on them, teams need a way to catch broken tools, unsafe schemas, schema drift, slow responses, and security footguns before those failures reach users.

Observatory gives maintainers and teams:

  • One-command CI setup with setup-ci --all
  • Profile-mapped audits with audit --profile nsa-mcp
  • MCP receipts that package target, evidence, verdict, action, and reproduction commands
  • MCP risk graphs that group servers by capability boundary, receipt state, CI posture, and recommended action
  • Action receipts that say allow, gate, rerun, quarantine, or escalate
  • GitHub PR comments for compatibility, drift, and security findings
  • GitHub Code Scanning SARIF for normalized MCP findings
  • Health score badges for public trust signals
  • Record/replay/verify workflows for regression testing
  • MCP server mode so agents can inspect other MCP servers directly
  • Review and remediation with free local history, CI, and optional ClearFrame CLI or Mac tasks

See GitHub Code Scanning for MCP servers, MCP Receipts, Troubleshooting, Safety Methodology, MCP Server Safety Index, MCP Observatory Contributors, hosted client contract, repository boundary, open-source policy, and free project policy.

Self-Assessment

We scan ourselves with mcp-observatory on every release. See results →

Self-hosted evidence

The MIT-licensed hosting source includes private receipt storage, GitHub sign-in, multi-target history, downloads, hosted HTTP checks and retention cleanup. Deploy it with your own configuration; no Observatory subscription is required. The account-free local dashboard is the fastest start.

Free tools for maintainers and teams

All scanner features, source audits, skill scans, package-name review, cross-server capability review, receipts, record/replay, local dashboards, and CI integrations are open source under MIT. No hosted account or private API is needed.

# Inspect local code without executing it
npx -y @kryptosai/mcp-observatory@latest source-audit ./src
# Review a launch package name without running it
npx -y @kryptosai/mcp-observatory@latest package-check -- npx -y your-mcp-package
# Review capability combinations across saved receipts
npx -y @kryptosai/mcp-observatory@latest toxic-flow first-receipt.json second-receipt.json

These checks identify review candidates; they do not prove a server is safe. See coverage and competitor feature evidence, ClearFrame workflow, and project policy.

How It Compares

Featuremcp-observatorySnyk agent-scanCisco mcp-scanneragent-shield
MCP-native✓✓✓✓
Attack simulation✓✗✗✗
Schema drift detection✓✗✗✗
Record/replay/verify✓✗✗✗
Health scoring (0-100)✓✗✗✗
SARIF output✓✓✓✓
CI/CD native (setup-ci)✓✓✓✓
Public Safety Index✓✗✗✗
Runtime enforcement via mcp-seatbelt✓✗✗✗

Quick Start

Run a first check. No arguments starts demo (your servers, or the packaged local demo):

npx @kryptosai/mcp-observatory

Go deeper — also invoke safe tools to verify they actually run:

npx @kryptosai/mcp-observatory scan deep

Test a specific server:

npx @kryptosai/mcp-observatory test npx -y @modelcontextprotocol/server-everything

Add it to Claude Code as an MCP server:

claude mcp add mcp-observatory -- npx -y @kryptosai/mcp-observatory serve

Or add it manually to your config:

{
  "mcpServers": {
    "mcp-observatory": {
      "command": "npx",
      "args": ["-y", "@kryptosai/mcp-observatory", "serve"]
    }
  }
}

Commands

CommandWhat it does
scanAuto-discover servers, check them, and run safe attack-readiness simulation by default
scan deepScan, run safe attack simulation, and also invoke safe tools to verify they execute
test <cmd> / test --target <file>Test one server and emit an action receipt by command or target config
record <cmd>Record a server session to a cassette file for offline replay
replay <cassette>Replay a cassette offline — no live server needed
verify <cassette> <cmd>Verify a live server still matches a recorded cassette
diff <base> <head>Compare two run artifacts for regressions and schema drift
watch <config>Watch a server for changes, alert on regressions
suggestDetect your stack and recommend MCP servers from the registry
serveStart as an MCP server for AI agents
lockSnapshot MCP server schemas into a lock file
lock verifyVerify live servers match the lock file
historyShow health score trends for your MCP servers
setup-ci / init-ciCreate a GitHub Action and badge snippet for MCP compatibility/security checks
setup-ci --sarifGenerate a workflow that uploads normalized findings to GitHub Code Scanning
setup-ci --doctorInspect whether the repository has a complete CI adoption kit
`telemetry status\enable\disable\identify\preview`Inspect or control product telemetry and deliberately provide a contact email
risk-graph --input <path>Merge receipts and run artifacts into JSON, Markdown, and HTML MCP risk graphs
--no-attack-simOpt out of the default safe attack simulation on scan or test
ci-reportGenerate CI report for GitHub issue creation
enterprise-reportGenerate a static production/security report from run artifacts
score <cmd>Score an MCP server's health (0-100)
badge <cmd>Generate an SVG health score badge for README
dashboardBrowse local scan history, reports, and downloads without an account
clearframePrepare a local review task for ClearFrame CLI or Mac
cloudLegacy hosted account compatibility and free local alternatives

Run with no arguments to start demo. Use --menu for the interactive catalog.

What It Does

Check capabilities — connects to a server and verifies tools, prompts, and resources respond correctly.

Invoke tools — goes beyond listing. Actually calls safe tools (no required params / readOnlyHint) and reports which ones work and which ones crash.

npx @kryptosai/mcp-observatory scan deep

Detect schema drift — diffs two runs and surfaces added/removed fields, type changes, and breaking parameter changes.

npx @kryptosai/mcp-observatory diff run-a.json run-b.json

Recommend servers — scans your project for languages, frameworks, databases, and cloud providers, then cross-references the MCP registry to suggest servers you're missing.

npx @kryptosai/mcp-observatory suggest

Or ask your agent "what MCP servers should I add?" when running in MCP server mode.

Security scanning — analyzes tool schemas for dangerous patterns: shell injection surfaces, broad filesystem access, missing auth, and credential leakage in responses.

npx @kryptosai/mcp-observatory test --security npx -y my-mcp-server

Record / replay / verify — capture a live session, replay it offline in CI, and verify nothing changed. Like VCR for MCP.

# Record a session
npx @kryptosai/mcp-observatory record npx -y @modelcontextprotocol/server-everything

# Replay offline (no server needed)
npx @kryptosai/mcp-observatory replay .mcp-observatory/cassettes/latest.cassette.json

# Verify the live server still matches
npx @kryptosai/mcp-observatory verify cassette.json npx -y @modelcontextprotocol/server-everything

Watch for regressions — re-runs checks on an interval and alerts when something changes.

npx @kryptosai/mcp-observatory watch target.json
Scan locations

When you run scan, it looks for MCP configs in:

  • ~/.claude.json (Claude Code)
  • ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop, macOS)
  • %APPDATA%/Claude/claude_desktop_config.json (Claude Desktop, Windows)
  • .claude.json and .mcp.json (current directory)

Architecture

                    ┌─────────────────────────┐
                    │   MCP Observatory CLI    │
                    │  npx @kryptosai/mcp-     │
                    │     observatory scan     │
                    └───────────┬─────────────┘
                                │
                    ┌───────────▼─────────────┐
                    │   Config Discovery       │
                    │  (Claude, Cursor, etc.)  │
                    └───────────┬─────────────┘
                                │
              ┌─────────────────┼─────────────────┐
              ▼                 ▼                  ▼
    ┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
    │   Security Scan  │ │  Attack Sim  │ │  Schema Drift    │
    │  (shell, creds)  │ │ (tool poison)│ │  (version diff)  │
    └────────┬────────┘ └──────┬───────┘ └────────┬─────────┘
             │                 │                   │
             └─────────────────┼───────────────────┘
                               ▼
                    ┌─────────────────────┐
                    │   Health Score       │
                    │  (0-100 + verdict)   │
                    └──────────┬──────────┘
                               │
              ┌────────────────┼────────────────┐
              ▼                ▼                 ▼
    ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
    │  SARIF       │  │  Markdown    │  │  CI Gateway  │
    │  (Code Scan) │  │  Report      │  │  (setup-ci)  │
    └──────────────┘  └──────────────┘  └──────────────┘

CI / GitHub Action

Add Observatory to your MCP server's CI pipeline:

npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y my-mcp-server" --sarif --schedule weekly

Check the adoption kit:

npx @kryptosai/mcp-observatory setup-ci --doctor

Successful test, run, and single-target scan checks also offer to convert the passing result into a CI adoption kit. That automatic conversion enables SARIF/Code Scanning and weekly scheduled checks by default; pass --no-ci-sarif when you only want a conservative workflow without Code Scanning upload.

Or create the workflow manually:

# .github/workflows/observatory.yml
name: MCP Server Check
on: [pull_request]

permissions:
  contents: read

jobs:
  observatory:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: KryptosAI/mcp-observatory/action@v1
        with:
          command: npx -y my-mcp-server
          deep: true
          security: true
          comment-on-pr: false
          set-status: false
GitLab CI

Runs the same test scan on merge requests and on main, publishing the SARIF as a GitLab SAST report so findings appear in the merge request security widget. This matches what setup-ci --ci-provider gitlab-ci generates.

# .gitlab-ci.yml
mcp-observatory:
  image: node:22
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    - if: $CI_COMMIT_BRANCH == 'main'
  script:
    - npx @kryptosai/mcp-observatory test npx -y my-mcp-server --deep --security --sarif mcp-observatory.sarif
  artifacts:
    reports:
      sast: mcp-observatory.sarif

Or let the CLI write it for you:

npx @kryptosai/mcp-observatory setup-ci --ci-provider gitlab-ci --command "npx -y my-mcp-server"

Action inputs:

InputDescriptionDefault
commandServer command to test(optional; omit to scan discovered servers)
targetPath to target config JSON
targetsPath to MCP config file for multi-server matrix scan
deepAlso invoke safe toolsfalse
securityRun security analysisfalse
fail-on-regressionFail the action on issuestrue
fail-on-baseline-driftFail the action when baseline verification detects drifttrue
comment-on-prPost report as PR comment. Requires pull-requests: write.true
set-statusSet a commit status check (green/red) on the HEAD SHA. Requires statuses: write.true
github-tokenToken for PR comments and commit statuses${{ github.token }}

The action can comment on PRs and set commit statuses when the workflow grants write permissions. setup-ci generates read-only third-party-friendly workflows by default and lets maintainers opt into comments/statuses later. init-ci remains available as a backward-compatible alias. See action/README.md for all options.

Observatory is free and open source. Continue with ClearFrame CLI or Mac when you want an agent to help review and repair findings.

Evidence badges for MCP Observatory

MCP server maintainers can add a public compatibility/security signal to their README:

[![MCP Observatory](https://img.shields.io/badge/MCP%20Observatory-enabled-2563eb)](https://github.com/KryptosAI/mcp-observatory)

Or generate a score badge from a live check:

npx @kryptosai/mcp-observatory badge npx -y my-mcp-server --output docs/mcp-health.svg

See the evidence distribution loop for the GitHub Action template, maintainer PR body, and badge rollout playbook. A badge is a public evidence signal, not a certification or endorsement.

Generate a production/security report from local run artifacts:

npx @kryptosai/mcp-observatory enterprise-report \
  --account "Your Company" \
  --format html \
  --output observatory-enterprise-report.html

For clearer internal account attribution in CI, set:

MCP_OBSERVATORY_ORG=your-company.com

To deliberately associate a contact email and optional contact-channel slug with private telemetry analytics, run mcp-observatory telemetry identify --email <address> [--channel <slug>]. Setting an organization or identifying a contact does not authorize outreach.

Testing Feishu/Lark integrations? See the Feishu/Lark MCP guide.

Lock Files
$ npx @kryptosai/mcp-observatory lock              # Snapshot all server schemas
$ npx @kryptosai/mcp-observatory lock verify        # Verify no drift since last lock

Lock files are the package-lock for AI tools: commit the MCP contract, then make every tool, schema, prompt, or resource drift visible in CI. See MCP lock files.

Trend Tracking
$ npx @kryptosai/mcp-observatory history            # Show health trends over time
Nightly Scans
$ npx @kryptosai/mcp-observatory ci-report          # Generate regression report for CI

MCP Server Mode

No other testing tool is itself an MCP server. Add Observatory as a server and your AI agent can autonomously test, diagnose, and monitor your other MCP servers.

claude mcp add mcp-observatory -- npx -y @kryptosai/mcp-observatory serve

Your agent gets 10 tools:

ToolWhen to use it
scanCheck if all your configured MCP servers are healthy
check_serverTest a specific server before installing or after updating
score_serverGet a quick health score and grade for a server
recordCapture a baseline of a working server for future comparison
replayTest against a recorded session — no live server needed
verifyConfirm a server update didn't break anything
watchCheck a server and see what changed since the last check
diff_runsFind regressions between two check results
get_last_runRetrieve previous check results for a server
suggest_serversDiscover MCP servers that match your project stack

An AI tool that checks other AI tools. It is a tool testing tools that serve tools.

Security

The MCP server runs inside AI hosts where an LLM chooses which tools to call. To prevent prompt-injection attacks:

  • Command allowlist: Only npx, node, python, python3, uvx, docker, deno, bun are permitted as base executables. The CLI has no restrictions.
  • Path validation: File-reading tools are constrained to the runs/cassettes directories.
  • No arbitrary execution: Use the CLI for unrestricted commands.
CLI vs MCP: Intentional Differences
FeatureCLIMCP ServerWhy
watchPolling loopSingle check + diffRequest/response doesn't support long-polling
Interactive menuArrow-key navigationNot availableMCP has no interactive UI
Color output--no-color flagAlways plain textMCP returns structured content
reportRenders saved artifactsNot availableAgents read artifacts directly
serveStarts MCP serverN/AIs the MCP server
runReads target config filesInline paramsMCP tools accept params directly
get_last_runNot available (use ls + diff)AvailableConvenience for agents

Compatibility

Works with any MCP server that uses standard transports:

TransportExamplesAdapter
stdio (most servers)filesystem, memory, context7, brave-search, sentry, notion, stripelocal-process
HTTP/SSE (remote)Cloudflare, Exa, Tavilyhttp
DockerAll @modelcontextprotocol/server-* imageslocal-process via docker run -i

Servers needing API keys work via env in the target config. Python servers work via uvx. See the full compatibility matrix for tested servers and known issues.

Target config files

For more control (env vars, metadata, custom timeout):

{
  "targetId": "filesystem-server",
  "adapter": "local-process",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
  "timeoutMs": 15000,
  "skipInvoke": false
}
npx @kryptosai/mcp-observatory run --target ./target.json
HTTP / SSE targets
{
  "targetId": "my-remote-server",
  "adapter": "http",
  "url": "https://mcp.example.com/mcp",
  "authToken": "${MCP_SERVER_TOKEN}",
  "headers": {
    "X-Api-Key": "$MCP_SERVER_API_KEY"
  },
  "timeoutMs": 15000
}

Target configs support ${VAR}, $VAR, and env:VAR references in authToken, headers, and local-process env values.

How It Compares

FeatureObservatorymcp-recorderMCPBenchmcp-jest
Auto-discover servers✅———
Check capabilities✅—✅✅
Invoke tools✅——✅
Schema drift detection✅———
Record / replay✅✅——
Verify against cassette✅———
Response snapshot diffs✅———
Benchmarking / latency——✅—
Jest integration———✅
Works as MCP server✅———

Each tool has strengths. Observatory focuses on regression detection and CI-friendly workflows. mcp-recorder is great as a transparent proxy. MCPBench is the go-to for performance benchmarking. mcp-jest is ideal if you're already in a Jest workflow.

Prior Art

The record/replay/verify pattern is inspired by:

  • VCR (Ruby) — pioneered cassette-based HTTP record/replay
  • Polly.js (Netflix) — HTTP interaction recording for JavaScript
  • mcp-recorder — MCP-specific traffic recording proxy
  • MCPBench — MCP server benchmarking
  • mcp-jest — Jest-style testing for MCP servers

Limitations

  • Servers requiring interactive OAuth (e.g., Google Drive) need pre-authentication before Observatory can connect
  • Custom WebSocket transports (e.g., BrowserTools MCP) are not supported
  • A few servers time out or close before init — see known issues and compatibility

Works with mcp-seatbelt

Scan before you trust. Then run npx -y @kryptosai/mcp-observatory@latest enforce --start-proxy — Observatory writes a deny-default mcp-seatbelt policy and starts the proxy. Observatory validates; seatbelt enforces.

Works with agent-obs

Secure your servers with Observatory. Trace your agents with agent-obs — an open-source agent execution tracer that records every tool call, computes A-F session grades, and shows you exactly where your agents spend time, burn tokens, and hit errors. Observatory tells you if a server is safe. agent-obs tells you what your agent did with it. Free, local-first, npm install -g agent-obs.

Contributors ✨

Thanks to these amazing people who have contributed:

  • leemeo3 — 3 Safety Index targets (Git, Chrome DevTools, Filesystem MCP)
  • albatrossflyon-coder — GitHub MCP Safety Index (#201)
  • tanishxdev — Legacy CLI deprecation warnings (#187)
  • sansynx — CLI format validation (#182)

See all contributors →

Contributing

We welcome contributors! This project follows a Contributor Covenant Code of Conduct. The fastest way to get involved:

git clone https://github.com/KryptosAI/mcp-observatory.git && cd mcp-observatory && npm install && npm test

The most common first contribution is adding an MCP server to the Safety Index (10-15 minutes). See CONTRIBUTING.md for full guidelines, code standards, and the contributor recognition ladder.


If Observatory saved you a broken deploy, consider giving it a star. It helps others find the project.

Frequently asked questions

What is io.github.KryptosAI/mcp-observatory?

MCP security scanner. CI-native testing, attack simulation, health scoring, and SARIF.

How do I install io.github.KryptosAI/mcp-observatory?

It runs on your machine. In Claude Code: claude mcp add mcp-observatory -- npx -y @kryptosai/mcp-observatory@1.36.1. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.KryptosAI/mcp-observatory need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is io.github.KryptosAI/mcp-observatory open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains io.github.KryptosAI/mcp-observatory?

It is published by KryptosAI. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.