Live cadence
The /api/events stream emits as the pollers ingest upstream activity; their
poll intervals and last-fetched times are published on the feeds page, and the same events render human-readable on activity.
Querying server details
For the /api/servers/{id} endpoint, URL-encoding is not required! You can pass the full unencoded string (e.g. npm:@org/svr) because it uses a catch-all route. Bare names without a source prefix will
automatically fall back through npm:, pypi:, then github: to find a match. To find an id to query, browse servers.
Every server also has a stable 12-character hex short id (shown on
its detail page) that needs no URL-encoding — handy when several ids share one URL.
Both
/api/servers/{id} and the batch endpoint accept short ids interchangeably
with canonical ids, and the server detail response echoes the canonical id back as
canonicalId so a caller can normalise whatever handle it looked up. Short
ids minted before the id was widened are 8 characters; those still resolve, as a prefix
of the current 12-character value — deterministic today, but a prefix match can in principle
be ambiguous, so new links should use the full 12-character id. Retired ids forward
to their survivor, so old links keep resolving.
Batch lookup
/api/servers?ids={a,b,…} takes a comma-separated ids
list — canonical ids, short ids, or bare names, mixed freely — capped at 100 per call; extras are not processed and are reported back via ignoredCount
(the true total) plus ignoredIds, a sample of at most 20 of those
extras — use
ignoredCount, not the length of ignoredIds, to know how
many were dropped. Ids are de-duplicated after resolution; any that resolve to
nothing come back in
unknownIds rather than failing the batch. An empty
ids param returns 400. Add &format=csv for
a text/csv body (one header row, then one row per server) suited to spreadsheet
or SBOM-tool import; otherwise the response is JSON. The CSV path can't express these
arrays in the body, so the same sample/count pair rides along as headers instead —
X-Ignored-Ids/X-Ignored-Count and X-Unknown-Ids/X-Unknown-Count.
Data licence
The observatory corpus — the observations, canonical identities, and derived signals published through these endpoints — is licensed CC BY 4.0. Use it for anything, including commercially; attribute MCP Observatory and link back to mcpobservatory.com.
This covers our data about the servers, not the servers themselves. Each tracked
project keeps whatever licence its authors chose — that is reported per-server in the
license field and on licences, and
nothing here changes it.
The corpus is also described as a schema.org Dataset in this page’s structured data, carrying the same licence.