{
  "_meta": {
    "title": "The State of the MCP Ecosystem 2026",
    "description": "Aggregated statistics computed over a complete snapshot of the official Model Context Protocol registry.",
    "source": "Official MCP registry (registry.modelcontextprotocol.io), /v0/servers, paginated in full",
    "collected_at": "2026-07-28T10:29:56Z",
    "collection_method": "Full cursor pagination of the public /v0/servers endpoint at limit=100 across 604 pages. No sampling. Per-server statistics are computed over the single version row flagged isLatest for each unique server name.",
    "rows_retrieved": 60374,
    "unique_servers": 18843,
    "earliest_publication": "2025-09-08T23:47:09Z",
    "latest_publication": "2026-07-28T10:29:56Z",
    "licence": "CC BY 4.0",
    "attribution": "Scalix World, The State of the MCP Ecosystem 2026",
    "canonical_url": "https://scalix.world/research/state-of-mcp-2026",
    "limitations": [
      "Covers the official MCP registry only. Servers distributed solely through source repositories, vendor documentation or third-party directories are not represented.",
      "July 2026 is a partial month. The snapshot was taken at 10:29 UTC on 28 July 2026, so 28 July itself is incomplete.",
      "Registry metadata is self-declared by publishers and is not independently verified by this study.",
      "Absence of a declared authentication header is a property of registry metadata, not proof that an endpoint is unauthenticated."
    ]
  },
  "totals": {
    "unique_servers": 18843,
    "version_rows": 60374,
    "distinct_namespaces": 11783,
    "active": 18642,
    "deprecated": 201,
    "deprecated_pct": 1.1
  },
  "growth": {
    "definition": "new_servers_by_month counts each unique server once, in the month of its FIRST published version. active_versions_by_month counts each unique server once, in the month its CURRENT version was published. The first is the correct measure of ecosystem growth.",
    "new_servers_by_month": {
      "2025-09": 456,
      "2025-10": 298,
      "2025-11": 175,
      "2025-12": 279,
      "2026-01": 392,
      "2026-02": 1163,
      "2026-03": 1964,
      "2026-04": 2563,
      "2026-05": 3050,
      "2026-06": 3932,
      "2026-07": 4571
    },
    "active_versions_by_month": {
      "2025-09": 352,
      "2025-10": 237,
      "2025-11": 146,
      "2025-12": 219,
      "2026-01": 319,
      "2026-02": 951,
      "2026-03": 1684,
      "2026-04": 2040,
      "2026-05": 2753,
      "2026-06": 4009,
      "2026-07": 6133
    },
    "july_2026_partial": true,
    "july_2026_new_servers": 4571,
    "july_2026_days_observed": 28,
    "july_2026_mean_new_servers_per_day": 163.2,
    "july_2026_weekly": {
      "Jul 1-7": 1119,
      "Jul 8-14": 1274,
      "Jul 15-21": 1265,
      "Jul 22-28": 913
    },
    "growth_multiple_first_to_latest_month": 10.0
  },
  "deployment_model": {
    "remote_only": 8359,
    "local_only": 9182,
    "both": 982,
    "neither": 320,
    "remote_capable": 9341,
    "package_based": 10164,
    "both_pct": 5.2,
    "note": "Remote-capable servers declare at least one hosted endpoint. Package-based servers declare at least one installable package. Only a small minority declare both."
  },
  "transport": {
    "remote_endpoints_total": 9744,
    "endpoints_by_type": {
      "streamable-http": 9013,
      "sse": 731
    },
    "servers_streamable_http_only": 8635,
    "servers_sse_only": 440,
    "servers_both_transports": 266,
    "sse_adoption_by_cohort": {
      "definition": "Share of that cohort's remote-capable servers whose current version declares an SSE endpoint. Denominator is remote-capable servers first published in the month, not transport declarations.",
      "remote_servers_by_cohort": {
        "2025-09": 239,
        "2025-10": 152,
        "2025-11": 51,
        "2025-12": 75,
        "2026-01": 101,
        "2026-02": 312,
        "2026-03": 605,
        "2026-04": 1304,
        "2026-05": 1497,
        "2026-06": 2311,
        "2026-07": 2694
      },
      "sse_servers_by_cohort": {
        "2025-09": 43,
        "2025-10": 18,
        "2025-11": 6,
        "2025-12": 39,
        "2026-01": 20,
        "2026-02": 42,
        "2026-03": 72,
        "2026-04": 192,
        "2026-05": 155,
        "2026-06": 51,
        "2026-07": 68
      },
      "sse_pct_by_cohort": {
        "2025-09": 18.0,
        "2025-10": 11.8,
        "2025-11": 11.8,
        "2025-12": 52.0,
        "2026-01": 19.8,
        "2026-02": 13.5,
        "2026-03": 11.9,
        "2026-04": 14.7,
        "2026-05": 10.4,
        "2026-06": 2.2,
        "2026-07": 2.5
      },
      "note": "2025-12 is an outlier on a small base of 75 remote arrivals and should not be read as a trend. Excluding it, SSE held a 10.4% to 19.8% band through May 2026 before falling to 2.2% in June 2026."
    }
  },
  "authentication_declaration": {
    "caveat": "These figures describe what publishers declared in registry metadata. They do not measure whether an endpoint enforces authentication. A server using OAuth 2.0 protected-resource metadata discovery (RFC 9728) requires no declared header and is counted under none-declared.",
    "by_server": {
      "total_remote_capable": 9341,
      "none-declared": 7522,
      "authorization-header": 1331,
      "api-key-header": 275,
      "other-header": 213,
      "none_declared_pct": 80.5
    },
    "by_endpoint": {
      "total_endpoints": 9744,
      "none-declared": 7843,
      "authorization-header": 1369,
      "api-key-header": 291,
      "other-header": 241,
      "none_declared_pct": 80.5
    }
  },
  "transport_security": {
    "endpoints_https": 9744,
    "endpoints_total": 9744,
    "https_pct": 100.0,
    "endpoints_plaintext_http": 0,
    "servers_with_loopback_endpoint": 0,
    "servers_with_bare_ip_endpoint": 0,
    "servers_on_ephemeral_tunnel_domains": 53,
    "distinct_endpoint_domains": 5110
  },
  "packaging": {
    "registries": {
      "npm": 6736,
      "pypi": 2927,
      "mcpb": 684,
      "oci": 648,
      "nuget": 88,
      "cargo": 11
    },
    "npm_to_pypi_ratio": 2.3,
    "registry_declarations_by_cohort": {
      "definition": "Servers first published in the month whose current version declares a package in the given registry.",
      "npm": {
        "2025-09": 132,
        "2025-10": 75,
        "2025-11": 73,
        "2025-12": 118,
        "2026-01": 185,
        "2026-02": 603,
        "2026-03": 1044,
        "2026-04": 938,
        "2026-05": 969,
        "2026-06": 1125,
        "2026-07": 1233
      },
      "pypi": {
        "2025-09": 57,
        "2025-10": 43,
        "2025-11": 39,
        "2025-12": 63,
        "2026-01": 90,
        "2026-02": 233,
        "2026-03": 326,
        "2026-04": 370,
        "2026-05": 558,
        "2026-06": 525,
        "2026-07": 609
      },
      "oci": {
        "2025-09": 30,
        "2025-10": 30,
        "2025-11": 17,
        "2025-12": 20,
        "2026-01": 14,
        "2026-02": 33,
        "2026-03": 64,
        "2026-04": 76,
        "2026-05": 159,
        "2026-06": 75,
        "2026-07": 117
      },
      "mcpb": {
        "2025-09": 12,
        "2025-10": 10,
        "2025-11": 6,
        "2025-12": 11,
        "2026-01": 17,
        "2026-02": 22,
        "2026-03": 38,
        "2026-04": 41,
        "2026-05": 41,
        "2026-06": 103,
        "2026-07": 94
      }
    }
  },
  "maintenance": {
    "single_version_servers": 11366,
    "single_version_pct": 60.3,
    "multi_version_servers": 7477,
    "single_version_pct_by_cohort": {
      "2025-09": 59.6,
      "2025-10": 57.7,
      "2025-11": 48.0,
      "2025-12": 54.8,
      "2026-01": 56.6,
      "2026-02": 59.3,
      "2026-03": 59.5,
      "2026-04": 56.9,
      "2026-05": 56.1,
      "2026-06": 64.1,
      "2026-07": 63.7
    },
    "note": "The single-version rate is stable across cohorts, including the oldest. It is therefore not an artefact of recent growth.",
    "updated_within_30_days": 6594,
    "updated_31_to_90_days": 6597,
    "updated_91_to_180_days": 4440,
    "updated_over_180_days": 1212,
    "max_versions_single_server": 1154,
    "servers_with_100_or_more_versions": 25,
    "top_50_servers_share_of_all_version_rows_pct": 12.5
  },
  "concentration": {
    "distinct_namespaces": 11783,
    "namespaces_with_one_server": 10514,
    "namespaces_with_one_server_pct": 89.2,
    "largest_namespace_share_pct": 6.8,
    "top_n_share_pct": {
      "1": 6.8,
      "5": 10.9,
      "10": 13.6,
      "25": 18.1,
      "50": 22.1,
      "100": 25.9
    },
    "top_namespaces": {
      "io.github.pipeworx-io": 1279,
      "io.github.CSOAI-ORG": 305,
      "ai.smithery": 213,
      "io.github.codespar": 126,
      "app.wishpool": 125,
      "io.github.cyanheads": 125,
      "eu.ansvar": 102,
      "io.github.Br0ski777": 101,
      "io.github.Evozim": 99,
      "io.github.mcp-dir": 97,
      "io.usefulapi": 83,
      "com.mcparmory": 76,
      "io.github.nirholas": 69,
      "io.tooloracle": 61,
      "io.github.srotzin": 60,
      "io.github.Servosity": 58,
      "io.github.lazymac2x": 55,
      "io.github.wyre-technology": 53,
      "io.github.daedalus": 50,
      "io.github.ryudi84": 49,
      "io.github.theYahia": 49,
      "io.github.chrischall": 47,
      "io.github.malamutemayhem": 45,
      "io.github.varvararatta": 45,
      "io.github.matematicsolutions": 44
    },
    "july_2026_new_servers_from_distinct_namespaces": 3415,
    "july_2026_top_10_namespace_share_pct": 11.5
  },
  "metadata_quality": {
    "fields": {
      "description": {
        "count": 18843,
        "pct": 100.0
      },
      "repository": {
        "count": 15345,
        "pct": 81.4
      },
      "title": {
        "count": 9642,
        "pct": 51.2
      },
      "websiteUrl": {
        "count": 8122,
        "pct": 43.1
      },
      "icons": {
        "count": 1013,
        "pct": 5.4
      }
    },
    "all_four_optional_fields": 564,
    "all_four_optional_fields_pct": 3.0,
    "icons_pct_by_cohort": {
      "2025-09": 2.0,
      "2025-10": 4.4,
      "2025-11": 6.9,
      "2025-12": 6.5,
      "2026-01": 6.9,
      "2026-02": 4.7,
      "2026-03": 4.9,
      "2026-04": 3.8,
      "2026-05": 4.4,
      "2026-06": 7.1,
      "2026-07": 5.9
    },
    "distinct_descriptions": 18508,
    "servers_sharing_a_description": 611,
    "description_length_median": 87,
    "description_length_max": 100,
    "servers_with_description_under_40_chars": 578,
    "servers_using_template_placeholder_description": 21
  },
  "hosting": {
    "repository_hosts": {
      "github": 15322,
      "gitlab": 23
    },
    "namespace_tld": {
      "io": 14035,
      "com": 2188,
      "ai": 863,
      "app": 308,
      "dev": 226,
      "eu": 125,
      "org": 91,
      "live": 70,
      "net": 62,
      "co": 56,
      "xyz": 51,
      "tech": 30,
      "de": 29,
      "sh": 29,
      "cloud": 21
    },
    "top_endpoint_domains": {
      "pipeworx.io": 1279,
      "workers.dev": 296,
      "smithery.ai": 217,
      "vercel.app": 184,
      "railway.app": 150,
      "onrender.com": 137,
      "wishpool.app": 125,
      "alpic.live": 117,
      "klymax402.com": 100,
      "mcp.ai": 99,
      "usefulapi.io": 83,
      "clauxel.com": 75,
      "caseyjhand.com": 74,
      "tooloracle.io": 57,
      "apify.actor": 55,
      "mcpize.run": 55,
      "lazy-mac.com": 54,
      "fly.dev": 51,
      "trycloudflare.com": 50,
      "supabase.co": 43,
      "apify.com": 43,
      "run.app": 38,
      "olyport.com": 38,
      "dropwatchhq.com": 34,
      "meok.ai": 34
    }
  },
  "cohorts": {
    "2025-09": {
      "new": 456,
      "single": 272,
      "remote_only": 225,
      "local_only": 208,
      "both": 14,
      "neither": 9,
      "sse": 43,
      "streamable_http": 226,
      "deprecated": 2,
      "icons": 9
    },
    "2025-10": {
      "new": 298,
      "single": 172,
      "remote_only": 140,
      "local_only": 133,
      "both": 12,
      "neither": 13,
      "sse": 18,
      "streamable_http": 148,
      "deprecated": 3,
      "icons": 13
    },
    "2025-11": {
      "new": 175,
      "single": 84,
      "remote_only": 44,
      "local_only": 117,
      "both": 7,
      "neither": 7,
      "sse": 6,
      "streamable_http": 49,
      "deprecated": 3,
      "icons": 12
    },
    "2025-12": {
      "new": 279,
      "single": 153,
      "remote_only": 68,
      "local_only": 195,
      "both": 7,
      "neither": 9,
      "sse": 39,
      "streamable_http": 70,
      "deprecated": 1,
      "icons": 18
    },
    "2026-01": {
      "new": 392,
      "single": 222,
      "remote_only": 87,
      "local_only": 275,
      "both": 14,
      "neither": 16,
      "sse": 20,
      "streamable_http": 92,
      "deprecated": 3,
      "icons": 27
    },
    "2026-02": {
      "new": 1163,
      "single": 690,
      "remote_only": 273,
      "local_only": 831,
      "both": 39,
      "neither": 20,
      "sse": 42,
      "streamable_http": 287,
      "deprecated": 79,
      "icons": 55
    },
    "2026-03": {
      "new": 1964,
      "single": 1169,
      "remote_only": 495,
      "local_only": 1337,
      "both": 110,
      "neither": 22,
      "sse": 72,
      "streamable_http": 559,
      "deprecated": 37,
      "icons": 96
    },
    "2026-04": {
      "new": 2563,
      "single": 1458,
      "remote_only": 1147,
      "local_only": 1225,
      "both": 157,
      "neither": 34,
      "sse": 192,
      "streamable_http": 1136,
      "deprecated": 14,
      "icons": 98
    },
    "2026-05": {
      "new": 3050,
      "single": 1712,
      "remote_only": 1310,
      "local_only": 1465,
      "both": 187,
      "neither": 88,
      "sse": 155,
      "streamable_http": 1375,
      "deprecated": 14,
      "icons": 135
    },
    "2026-06": {
      "new": 3932,
      "single": 2521,
      "remote_only": 2087,
      "local_only": 1582,
      "both": 224,
      "neither": 39,
      "sse": 51,
      "streamable_http": 2293,
      "deprecated": 17,
      "icons": 280
    },
    "2026-07": {
      "new": 4571,
      "single": 2913,
      "remote_only": 2483,
      "local_only": 1814,
      "both": 211,
      "neither": 63,
      "sse": 68,
      "streamable_http": 2666,
      "deprecated": 28,
      "icons": 270
    }
  }
}