MCPwell

Home › State of MCP 2026

State of MCP 2026

41,997 MCP servers in the MCPwell catalog. Every count on this page is computed from those rows. Checked 2026-10-17.

Download the CSV (63 rows). The file is the same tally as the tables.

Indexed pages and the vault

236 servers clear the index score and keep a fact sheet in the sitemap. 41,761 do not. Those URLs stay up with noindex, follow when a fact sheet exists, and every one of them is listed in The MCP Vault. A server is indexed only when it has a pinned install and a score of at least 40. A pinned install is a package with a version, an OCI image tag other than latest, a remote URL, or a reference install command. The score adds 16 points for a unique description of at least 60 characters (plus 6 at 100 characters and 4 at 140). Harvest text that says “official registry” or “Declared transport” scores zero for description. Install is 18 points, plus 4 when two install forms are present, plus 4 when a secret or required header, environment variable, or argument is declared. Vendor is 8 points and reference is 10. GitHub stars add 4 at 50, 8 at 200, 16 at 1,000, and 22 at 5,000. A verified initialize and tools/list probe is 16 points. Any other recorded probe is 6. Repository, license, last commit, and website add 1 each. One substance signal is also required: the unique description, at least 1,000 GitHub stars, a verified probe, or reference-server status. At most 300 servers are indexed. Past that line, the highest scores stay, with ties broken by GitHub stars, then description length, then slug. Payment, Featured, and Sponsored are not part of this score and do not add points. A paid server that does not clear the score stays in the vault. Paid listings (Sponsored, then Featured) are still displayed first on every list that includes them, marked Advertisement. Organic listings follow, sorted by GitHub stars. Paying doesn't change a server's GitHub stars, third-party ratings, Verified status, or listing data.

Category

One category is stored on each listing. The total of this table is 41,997.

CategoryServers
Developer Tools34,069
Databases359
Search & Web Data1,114
Productivity & Project Management212
Cloud & Infrastructure334
Observability928
Payments & Commerce434
Automation92
Browser Automation57
Websites & CMS81
Design225
Maps & Location441
Security & Identity538
Product Analytics127
AI & Memory1,313
Media & Video384
Documents351
Communication456
Finance479
Reference & Testing3

Transport

Primary transport, one per server, using the directory filter order: SSE when the label contains SSE, else HTTP when the label contains HTTP or the row has a remote endpoint, else stdio, else not declared. The total is 41,997.

TransportServers
HTTP23,051
stdio13,446
Not declared4,394
SSE1,106

Language

Language is inferred from the package registry type on the listing. It is not a scan of the repository. A server with both an npm package and a PyPI package is counted in both language rows, so this table can sum to more than 41,997. Servers with no package are the separate row. OCI is counted as a container image, not a programming language. MCPB is a bundle, not a language.

Package languageServers
JavaScript (npm)9,377
Python (PyPI)4,008
Container image (OCI)972
MCPB bundle820
.NET (NuGet)143
Rust (Cargo)77
No package registry27,015

Auth

Auth is the credential the registry entry declares, grouped from the auth line on each listing. One bucket per server. The total is 41,997.

Declared authServers
Vendor account, no secret declared19,449
No secrets declared12,747
Secret environment variable5,657
Header credential (API key or token)3,856
Header credential and secret environment variable288

Official vendor, reference, and community

Kind is the field stored on the row. Vendor means a registry namespace that is not io.github.*, or a publisher already treated as a vendor. Reference means the modelcontextprotocol/servers tree or Microsoft MarkItDown. Everything else is community. The total is 41,997.

KindServers
Vendor (official namespace or known publisher)15,232
Reference (modelcontextprotocol/servers or MarkItDown)8
Community26,757

Last commit month

This is the month of last_commit when the row stores one. It is not the date MCPwell discovered the server and it is not a sign-up curve. Every row in this build was checked on 2026-10-17. Rows with no last commit are counted on their own line. The total of this table is 41,997.

MonthServers
2021-011
2025-0424
2025-0530
2025-0644
2025-0750
2025-0831
2025-09100
2025-1085
2025-1163
2025-1276
2026-01129
2026-02249
2026-03555
2026-04744
2026-05798
2026-06866
2026-071,230
2026-082,700
2026-094,706
2026-109,722
No last commit stored19,794

Methodology

Computed during the static build from data/catalog.json after install labels are generated, plus GitHub star counts cached through 2026-10-17, plus data/probes.json for the index score only. The checked date shown above is the newest checked value on a row, which is 2026-10-17. No count is typed by hand. The CSV at data.csv is written from the same function as these tables. Category names are the directory's category labels. Transport uses the primary-transport rule in this section. Language uses the registry map npm → JavaScript, pypi → Python, nuget → .NET, cargo → Rust, oci → container image, mcpb → MCPB bundle. Auth uses the grouped auth line. Kind uses the stored kind field. Last-commit month uses the first seven characters of last_commit when it matches YYYY-MM-DD.