MCP Observatory
Real-time dashboard of the Model Context Protocol ecosystem.
- Astro
- TypeScript
- SQLite
- Node
- Semgrep
What it does
The MCP ecosystem grows faster than anyone can keep track of. Servers appear on npm, on PyPI, in the official registry, on Smithery and on mcp.so, often all five at once and under slightly different names. Wanting to know what a server is allowed to do, where its code comes from and whether anything is wrong with it means comparing a handful of tabs.
MCP Observatory collects those sources, folds duplicate listings into one canonical server, and analyses the source statically. What comes out is a dashboard: releases, a dependency graph, capability and permission analytics, composite risk grades and a live event stream. It is a site, not a tool you install.
What you see
The core is the dashboard page with the KPIs, the leaderboard and the stream. Around it sit the pages you actually search in: a faceted browser over capabilities and permissions, a per-server detail with tabs for overview, capabilities, dependencies, releases, activity and a security dossier, and profiles per maintainer.
The security section is the largest: CVEs, a risk leaderboard, supply chain, hijack targets, tool safety, capability drift, naming and impersonation, licences, abandonment, trends over time and the results of the code analysis.
How it works
Ten pollers each fetch their own source, with a supervisor that staggers the first ticks, wraps every run in a try/catch and records the outcome with exponential backoff. That table is open at /feeds, so you can see which source last succeeded and when.
Identity resolution folds a server listed in five places into one id, in a fixed order: explicit overrides, a cross-source repo_url match, an exact fold on source and normalised slug, and otherwise source:name. Servers sharing a repo within one source are monorepo siblings and are deliberately not merged. Retired ids keep forwarding, so old URLs 301 rather than 404.
The code analysis runs in a separate sidecar. Semgrep gets its own container, so a heavy scan cannot stall the worker's event loop. Enrichment never blocks: if the scanner is away, the rest carries on.
Capabilities
| Section | What you find there |
|---|---|
| Dashboard | KPIs, leaderboard, live stream, graph and capabilities on one page |
| Servers | Faceted browser over capabilities and permissions, with per-server detail |
| Graph | Dependency and relatedness graph, nodes coloured and sized by risk grade |
| Security | CVEs, supply chain, hijack, drift, naming, licences, abandonment and trends |
| Maintainers | Index and profile per maintainer |
| Feeds | Health of every poller, as public accountability |
| API | SSE stream, stats, server lookup, batch and search |
Sources
npm, PyPI, GitHub, Smithery, the official MCP registry, mcp.so, a client registry and CVE feeds. The site explains its own pipeline at /methodology, what it is built on at /colophon, and which sources are healthy right now at /feeds.