{
  "title": "MCP Multi-Client Compatibility Matrix",
  "updatedAt": "2026-09-15",
  "liveBehavior": "Not measured",
  "scope": "This matrix records documented client entry points and a repeatable test plan. It is not a live compatibility certification: no multi-client run has been measured in this repository, so transport, discovery, policy, and runtime behavior remain not-measured or test-required for the named client version, server version, operating system, configuration, and authorization.",
  "statusLegend": {
    "documented": "The cited documentation names the entry point or configuration surface; it is not proof of a current live run.",
    "not-measured": "No controlled live run is recorded for this client and context.",
    "test-required": "Run the listed client-specific test before making a compatibility claim."
  },
  "rows": [
    {
      "id": "claude-code",
      "clientName": "Claude Code",
      "documentedSurface": "Claude Code /mcp status panel and tool count",
      "configScope": "documented",
      "stdio": "not-measured",
      "streamableHttp": "not-measured",
      "toolsList": "test-required",
      "clientPolicy": "test-required",
      "liveBehavior": "not-measured",
      "testRequired": "Record the Claude Code version; connect the same server in MCP Inspector and Claude Code, compare initialize, tools/list, tool count, authentication, scope, and deferred Tool Search behavior.",
      "sourceUrls": [
        "https://code.claude.com/docs/en/mcp",
        "https://modelcontextprotocol.io/docs/tools/inspector"
      ]
    },
    {
      "id": "cursor",
      "clientName": "Cursor",
      "documentedSurface": "Cursor MCP settings and installed-version logs; interface labels can vary",
      "configScope": "test-required",
      "stdio": "not-measured",
      "streamableHttp": "not-measured",
      "toolsList": "test-required",
      "clientPolicy": "test-required",
      "liveBehavior": "not-measured",
      "testRequired": "Record the Cursor version and client surface; compare the same server and authorization in Inspector and Cursor settings/logs, including enabled-tool filters, refresh, and invocation.",
      "sourceUrls": [
        "https://docs.cursor.com/context/mcp",
        "https://modelcontextprotocol.io/docs/tools/inspector"
      ]
    },
    {
      "id": "github-copilot",
      "clientName": "GitHub Copilot",
      "documentedSurface": "Copilot CLI /mcp or copilot mcp get <name>",
      "configScope": "documented",
      "stdio": "not-measured",
      "streamableHttp": "not-measured",
      "toolsList": "test-required",
      "clientPolicy": "test-required",
      "liveBehavior": "not-measured",
      "testRequired": "Record the Copilot surface and version; compare the same server in Inspector and Copilot, then check enabled-tool filters, custom-agent policy, authentication, refresh, and schema errors.",
      "sourceUrls": [
        "https://docs.github.com/en/copilot/how-tos/copilot-sdk/troubleshooting/mcp-debugging",
        "https://modelcontextprotocol.io/docs/tools/inspector"
      ]
    },
    {
      "id": "other",
      "clientName": "Other MCP client",
      "documentedSurface": "Client-specific connection status, logs, policy, and refresh controls",
      "configScope": "test-required",
      "stdio": "not-measured",
      "streamableHttp": "not-measured",
      "toolsList": "test-required",
      "clientPolicy": "test-required",
      "liveBehavior": "not-measured",
      "testRequired": "Record client and server versions, OS, transport, authorization, config scope, and expected tools; compare the client result with the same server in Inspector.",
      "sourceUrls": [
        "https://modelcontextprotocol.io/docs/tools/inspector"
      ]
    }
  ]
}
