The Model Context Protocol (MCP) is the standard that lets AI agents such as Claude, ChatGPT or Cursor call external tools. Its official registry at registry.modelcontextprotocol.io is where server authors publish their metadata, and it has a public, paginated API.
On 8 November 2026 I walked through the entire registry: 2,295 pages, 229,461 published versions. Here is what that says about where the agent ecosystem stands.
Disclosure: we publish one entry there ourselves (io.github.ichkifokkus/fast-data, Germany/EU business data tools via Apify). That is 1 of almost 60,000, so it does not move any of the numbers below.
The headline numbers
| Metric | Value |
|---|---|
| Published versions (all) | 229,461 |
| Distinct servers (latest version) | 59,603 |
| … with a hosted remote endpoint | 39,789 (67%) |
| … with an npm package | 16,350 |
| … with a PyPI package | 5,280 |
… with an MCP bundle (mcpb) | 2,250 |
| … with a container image (OCI) | 1,713 |
Names under io.github.* | 34,156 (57%) |
A server can have both a remote endpoint and packages, so the package rows overlap.
Growth: first publication per month
I took the earliest publishedAt of each server name as its "first seen" date:
| Month | New servers |
|---|---|
| Sep 2025 | 456 |
| Dec 2025 | 276 |
| Mar 2026 | 1,938 |
| May 2026 | 3,022 |
| Jul 2026 | 5,072 |
| Aug 2026 | 6,518 |
| Sep 2026 | 11,849 |
| Oct 2026 | 16,282 |
| Nov 2026 (1–8) | 5,728 |
October added more than five times as many new servers as May. The first eight days of November are already above the whole of July. The curve has not flattened.
Two caveats: the registry launched in preview in September 2025, so the early months partly reflect adoption of the registry itself, not of MCP. And "first published" only counts servers that are still listed today; anything deleted in between is invisible.
Remote first
Two thirds of all servers advertise a hosted remote endpoint (streamable HTTP or SSE). Local packages are the minority: npm leads with 16,350, PyPI follows with 5,280, and Rust (cargo, 122) and .NET (nuget, 175) are rounding errors.
For anyone building tools for agents, this matters more than it looks. Remote servers need no install, work in browser-based clients and can authenticate with OAuth. The ecosystem has clearly voted for "add a URL" over "install a package".
What the servers are about
I searched the latest descriptions for a few business keywords (case-insensitive substring match, so "search" also counts "research", and one server can match several words):
| Keyword | Servers mentioning it |
|---|---|
| search | 7,277 |
| 1,211 | |
| 1,059 | |
| payment | 1,004 |
| invoice | 695 |
| database | 502 |
| calendar | 413 |
| sales | 397 |
| crm | 333 |
| finance | 298 |
| europe | 219 |
| german / germany | 195 / 71 |
| shopify | 180 |
| e-commerce / ecommerce | 73 / 48 |
Search and retrieval dominate by a wide margin. Payments and invoices are surprisingly strong: over 1,000 servers mention payments and almost 700 mention invoices. Agents that pay and bill are clearly a thing people are building for.
At the other end, regional business data is thin. Fewer than 200 descriptions mention "German", fewer than 250 mention "Europe", and e-commerce shows up in barely more than 100. Given how much of the economy runs on country-specific rules (tax IDs, e-invoicing formats, public tenders, company registers), that gap is where I expect a lot of the next wave of useful servers.
Repeat it yourself
The API is public and needs no key. This script walks all pages, keeps the latest version of each server and counts first appearances per month:
import collections, httpx BASE = "https://registry.modelcontextprotocol.io/v0.1/servers" client = httpx.Client(timeout=30) first_seen, latest, cursor = {}, {}, None while True: params = {"limit": 100} if cursor: params["cursor"] = cursor page = client.get(BASE, params=params).json() for item in page.get("servers", []): meta = (item.get("_meta") or {}).get("io.modelcontextprotocol.registry/official", {}) name = item["server"]["name"] published = meta.get("publishedAt") or "9999" first_seen[name] = min(first_seen.get(name, "9999"), published) if meta.get("isLatest"): latest[name] = item["server"] cursor = (page.get("metadata") or {}).get("nextCursor") if not cursor: break per_month = collections.Counter(v[:7] for v in first_seen.values()) print(len(latest), "servers") for month in sorted(per_month): print(month, per_month[month]) print("with remote:", sum(1 for s in latest.values() if s.get("remotes"))) A full pass takes a few minutes. Please be gentle with the registry: one pass a day is plenty for trend tracking.
What I take from it
- The agent tool layer is growing faster than anyone can curate. At more than 500 new servers a day, discovery and trust (who maintains this, is it alive, is it safe) become the real problem, not supply.
- Remote is the default. If you build a tool for agents in 2026, ship a URL.
- Generic is crowded, specific is open. Search, email and Google integrations are everywhere. Country-specific business data, compliance checks and e-commerce rules are not.
That last point is why we keep a small, curated catalog of agent tools for German and EU business data, re-checked weekly.
Data: official MCP Registry API, full pass on 8 November 2026. Keyword counts are simple substring matches on descriptions and only indicate rough topic size.