modelcontextprotocol / modelcontextprotocol/registry

Measurement: 8.6% of listed entries with a remote endpoint answer HTTP but not MCP

Open
#1,626 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
7.3k
Forks
994
Avg merge
4d 12h
Merged PRs (30d)
19

Description

Hello — this is a measurement report, not a bug report or a feature request.
I have been probing the registry nightly and thought the numbers might be
useful. No action requested.

Method

Every night at 03:00 UTC I fetch the full registry, then send a plain
JSON-RPC initialize to every entry that declares a remotes[] endpoint,
followed by tools/list. Failures are recorded with a reason, so "refused
us" is never conflated with "is not there". Both streamable-http and legacy
SSE are attempted, and three protocol versions are tried before an entry is
written off.

Results, 2026-09-07

28,139 registry entries, of which 16,305 declare a network endpoint. Every
one of those 16,305 was probed:

outcome count share
answered tools/list unauthenticated 9,532 58.5%
required authentication 4,135 25.4%
answered HTTP but not MCP 1,401 8.6%
unreachable 1,043 6.4%
timed out 103 0.6%
returned a JSON-RPC error 91 0.6%

149,725 tools were recorded across the servers that answered.

The row worth your attention is the third. Those 1,401 entries respond over
HTTP but do not speak MCP at all: they return HTML, unrelated API errors, or
nothing parseable. They are not auth failures and not outages — both are
counted separately above.

Four of them are expired domains now serving for-sale parking pages, all
through the same ad network, while still listed as active:

  • backlog-forge.arcanum-plus.com
  • toolpipe.dev
  • mcp.TEST-blockscholes.com
  • mcp.tradallo.com

An agent configured from the registry connects to infrastructure the
original publisher no longer controls.

Two smaller observations

  • Declared endpoints grew from 14,426 to 16,305 over the eight days measured
    — roughly 235 per day — so any absolute figure here ages quickly.
  • 24.8% of servers that do speak MCP have no mcp substring anywhere in
    their URL path, across 3,026 distinct paths. Discovery heuristics keyed on
    the path will miss a quarter of working servers.

Reproducing this

Crawler, raw archived responses and analysis:
https://github.com/yassinht/mcp-observatory

Observations go into a signed RFC 6962 Merkle log, so these figures can be
recomputed rather than taken on trust. Corrections welcome — I have had to
correct my own numbers several times and the README records those.

Happy to share the full per-entry breakdown in whatever format is useful, or
to run a specific query against the archive.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the measurement report and the linked mcp-observatory crawler, archived responses, and analysis. No repository file, test, requested change, or completion condition is identified; the report explicitly says that no action is requested.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
10/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.