Methodology

How we decide whether an MCP server is likely to work with Microsoft Copilot Studio. Last data build: 2026-10-20. Entries evaluated: 45,721.

What we actually did: each listed remote server received one read-only, unauthenticated MCP initialize request and, if it asked for credentials, a fetch of its public OAuth metadata. We did not list or call any tools, and no server was tested in Copilot Studio. Verdicts are rule-based estimates; always confirm with the vendor's docs.

Corrections, takedown requests or questions: hello@mcp4copilot.dev.

What Copilot Studio supports (Microsoft's own docs)

Data sources

  1. Official MCP Registry (registry.modelcontextprotocol.io/v0/servers): the latest version of every active server, with declared remotes (transport + URL + required headers) and packages.
  2. Microsoft Learn: the certified MCP connector list, plus each connector's page (description, auth types, badges).
  3. Endpoint check: for each remote Streamable HTTP URL we send one MCP initialize request with no credentials (no tools are listed or called). If the server asks for credentials, we read its public OAuth metadata (RFC 9728 protected-resource metadata, then RFC 8414/OIDC authorization-server metadata) to see whether it offers Dynamic Client Registration. Re-checked weekly.
  4. GitHub: stars, last push, archived flag and README keyword hints for linked repos.

Verdict rules

R1 · likely compatibleListed as a Microsoft-certified MCP connector. (81)
R2a · likely compatibleRemote Streamable HTTP endpoint answered initialize without credentials → auth None. (16,414)
R2b · likely compatibleRemote Streamable HTTP; the registry declares a secret/auth header → auth API key → Header. (4,242)
R2c · likely compatibleRequires OAuth, publishes discovery metadata, and its authorization server offers DCR → OAuth 2.0 → Dynamic discovery. (5,131)
R2d · needs workOAuth metadata but no DCR → OAuth 2.0 → Manual; you register your own app. (245)
R2e · needs workAsks for credentials but publishes no OAuth metadata and declares no header; check vendor docs. (245)
R2f · needs workEndpoint URL is a template (per-tenant values) and wasn't checked. (267)
R2g · needs workDeclares Streamable HTTP but didn't give a valid MCP answer at the last check (timeout, error, or non-MCP response). (2,307)
R3 · not compatibleOnly an SSE endpoint is listed. (729)
R4 · needs workLocal package only (stdio, or an HTTP server you must host). Host it behind a Streamable HTTP endpoint first. Counted, not listed individually. (15,571)
R5 · not compatibleNo remote endpoint or package listed. Counted, not listed. (489)

How we count

Known limits