DocsCapabilitiesMCP server card
MCP server card
Advertises a Model Context Protocol endpoint agents can call.
Why an agent cares
A card is how an agent finds the site's MCP endpoint without being told about it. The card format is still a draft extension: it reserves GET <mcp-url>/server-card, permits any unreserved URI, and considered a /.well-known/ location without recommending it. A card found at the paths we probe is real adoption at a permitted but non-recommended path.
Adoption
Early pilots. Named early adopters exist, behind flags or trials. Nothing has been independently measured yet. For this one in particular, the protocol itself is everywhere; the discovery card we read for it is not.
Direction of travel: ▲ rising, as at .
The protocol is in production at GitHub, Stripe, Atlassian, Linear, Sentry and PayPal, but the card itself is a draft SEP with no published measurement of deployment.
| Adopter | Depth | Evidence |
|---|---|---|
| Cloudflare (remote MCP hosting) | production | blog.cloudflare.com |
| GitHub, Stripe, Linear, Sentry, Asana | production | hidekazu-konishi.com |
| Atlassian (remote server GA) | production | github.com |
What we check
| Check | Severity | Raises | On whose authority |
|---|---|---|---|
| MCP Server Invalid JSON | high | usability | Lumar readiness bar, beyond MCP server card proposal |
Supporting documents: MCP server card proposal Lumar readiness bar: no specification requires this. Bad: the published card doesn't parse as JSON, so agents can't read it at all. Fix: serve valid JSON (check for trailing commas or comments; validate with a JSON linter). | |||
| MCP Server Missing URL | high | usability | Lumar readiness bar, beyond MCP server card proposal |
Supporting documents: MCP server card proposal Lumar readiness bar: no specification requires this. Bad: the card declares an endpoint that is not an absolute http(s) URL (such as "example.com/mcp", missing its scheme), so a client cannot connect to it. A card with no endpoint at all is not flagged: the server-card format makes it optional. Fix: give the full URL, e.g. "remotes": [{ "type": "streamable-http", "url": "https://mcp.example.com/mcp" }]. | |||
| MCP Server Endpoint Not MCP | high | usability | specification: MCP transports, 2025 version (the older connection handshake) |
Supporting documents: MCP transports, 2025 version (the older connection handshake) Related guidance in MCP transports, 2025 version (the older connection handshake). Bad: the endpoint the card advertises answered an MCP handshake with a normal HTTP 2xx page instead of a JSON-RPC reply, so no MCP client can connect to it — the card points somewhere real, but not at an MCP server. Fix: point the card at a working MCP Streamable HTTP endpoint, e.g. "url": "https://mcp.example.com/mcp", or withdraw the card until one exists. Only a 2xx non-JSON-RPC answer sets this: a 401 or 403 (authorization may be required) and an unreachable endpoint never do. | |||
| MCP Server Endpoint Unavailable | high | usability | Lumar readiness bar, beyond MCP server card proposal |
Supporting documents: MCP server card proposal Lumar readiness bar: no specification requires this. Bad: every endpoint the card advertises answered HTTP 404 or 410, so the card points only at addresses that do not exist and an agent has nowhere to connect. Fix: publish a working MCP endpoint at the advertised URL, or remove the declarations that are no longer served. A 401 or 403 is not this (authorization may be required), and neither is a timeout. | |||
| MCP Server Tool Missing Name | high | conformance, usability | specification: MCP tools |
Supporting documents: MCP tools Required by MCP tools. Bad: a tool in the server's tools/list has no name, and the name is the identifier a client calls, so that tool can never be invoked. Fix: give every listed tool a unique name. | |||
| MCP Server Tool Missing Input Schema | high | conformance, usability | specification: MCP tools |
Supporting documents: MCP tools Required by MCP tools. Bad: a listed tool declares no inputSchema, so an agent has no way to build a valid call to it. Fix: give every tool a JSON Schema for its parameters, e.g. {"type":"object","properties":{}} for a tool that takes none. | |||
| MCP Server Duplicate Tool Name | high | usability | specification: MCP tools |
Supporting documents: MCP tools Related guidance in MCP tools. Bad: two listed tools share a name. MCP defines the name as the tool's unique identifier, so a call naming it is ambiguous and a client may invoke the wrong one. Fix: give every tool a distinct name. | |||
| MCP Server Credential Exposed | high | conformance, usability, security (CWE-522) | specification: MCP Server Card discovery and security draft |
Supporting documents: MCP Server Card discovery and security draft Required by MCP Server Card discovery and security draft. Provisional security check; precision has not yet been measured. Bad: the public server card includes a literal credential or a secret input default that readers can use. Fix: remove the value, rotate the credential and prompt authorized users through a secure channel. Exposed identity material or weak authentication can enable identity misuse. OWASP Agentic ASI03 (2026) — Identity & Privilege AbuseOWASP MCP MCP01 (2025 beta) — Token Mismanagement & Secret ExposureCoSAI MCP MCP-T5 (Jan 2026) — Inadequate Data Protection and Confidentiality ControlsOWASP API API2 (2023) — Broken AuthenticationASVS V13.3.2 (5.0.0) — Restrict access to secretsMITRE ATLAS AML.T0083 (2026.09) — Credentials from AI Agent Configuration Actual credential use, permissions and privilege abuse are not tested. Related guidance does not establish exploitation or framework compliance. Security checks are provisional. | |||
| MCP Server Sensitive Header Parameter | high | usability, security (CWE-200) | specification: MCP tools |
Supporting documents: MCP tools Related guidance in MCP tools. Provisional security check; precision has not yet been measured. Bad: a tool parameter named like a credential (password, token, API key) is marked x-mcp-header, so clients on MCP 2026-07-28 or later copy it into an HTTP header every proxy and log can read; MCP says servers should not do this. Fix: remove x-mcp-header from it and take credentials through authorization instead. An MCP declaration exposes or routes credential material unsafely. OWASP MCP MCP01 (2025 beta) — Token Mismanagement & Secret ExposureOWASP API API2 (2023) — Broken AuthenticationASVS V13.3.2 (5.0.0) — Restrict access to secrets Token validity, scope and downstream compromise are not tested. Related guidance does not establish exploitation or framework compliance. Security checks are provisional. | |||
| mcpServer HTTPS Downgrade | medium | usability, security (CWE-319) | Lumar readiness bar |
An advertised HTTP destination permits unencrypted communication. OWASP API API8 (2023) — Security MisconfigurationASVS V12.2.1 (5.0.0) — TLS for external HTTP services Only advertised transport configuration is observed; API deployment security is not fully assessed. Related guidance does not establish exploitation or framework compliance. Security checks are provisional. | |||
| MCP Server Internal Endpoint | medium | usability, security (CWE-200) | Lumar readiness bar |
Public discovery metadata reveals internal service addresses. Reachability, authorization and SSRF exploitation are not tested. Related guidance does not establish exploitation or framework compliance. Security checks are provisional. | |||
| MCP Server Tool Missing Description | medium | usability | Lumar readiness bar, beyond MCP server card proposal |
Supporting documents: MCP server card proposal Lumar readiness bar: no specification requires this. Bad: a listed tool has no description, so an agent can see the tool exists but cannot tell what it does or when to call it, and will skip it. Fix: describe what each tool does and when to use it, e.g. "description": "Look up current order status by order id". | |||
| MCP Server Insecure Endpoint | medium | usability, security (CWE-319) | Lumar readiness bar, beyond MCP Streamable HTTP transport, MCP Authorization |
Supporting documents: MCP Streamable HTTP transport, MCP Authorization Lumar readiness bar: no specification requires this. Provisional security check; precision has not yet been measured. Bad: the card advertises a public MCP endpoint on plain http://, so every tool call and its arguments, and the access token when the server asks for one, travel unencrypted. A Lumar bar: the transport spec states no scheme rule. Fix: serve the endpoint over https and advertise "url": "https://example.com/mcp". An advertised agent communication path lacks confidentiality. OWASP Agentic ASI07 (2026) — Insecure Inter-Agent CommunicationCoSAI MCP MCP-T7 (Jan 2026) — Session and Transport Security FailuresOWASP API API8 (2023) — Security MisconfigurationASVS V12.2.1 (5.0.0) — TLS for external HTTP services Runtime message integrity and authorization are not tested. Related guidance does not establish exploitation or framework compliance. Security checks are provisional. | |||
| MCP Server Unknown Method Accepted | medium | usability | specification: JSON-RPC 2.0 Specification |
Supporting documents: JSON-RPC 2.0 Specification Related guidance in JSON-RPC 2.0 Specification. Bad: the endpoint answered a JSON-RPC method it does not implement with a result rather than an error, so a client cannot tell a supported call from an unsupported one. Fix: return a JSON-RPC error with code -32601 for methods the server does not implement. | |||
| MCP Server Nonstandard Tool Name | informational | nothing | specification: MCP tools |
Supporting documents: MCP tools MCP tools permits this, so it never fails the site. Informational (does not affect mcpServerValid): a tool name falls outside the portable format MCP recommends from revision 2026-07-28 — 1 to 128 characters of ASCII letters, digits, underscore, hyphen or dot, with no spaces or other special characters. Every clause in that section is a SHOULD, and it is only applied to servers declaring that revision or later, so an older server is never judged by guidance written after it. Consider renaming for portability across clients. | |||
| MCP Server Stale Endpoint | informational | nothing | Lumar readiness bar, beyond MCP server card proposal |
Supporting documents: MCP server card proposal Lumar readiness bar: no specification requires this. Informational (does not affect mcpServerValid): the card advertises more than one endpoint, at least one serves MCP and at least one does not, so an agent choosing the wrong entry gets nothing. The card still works, which is why this is not a defect. Consider removing the endpoint that no longer serves MCP so every advertised address is live. | |||
| MCP Server Missing Transport | informational | nothing | Lumar readiness bar, beyond MCP server card proposal |
Supporting documents: MCP server card proposal Lumar readiness bar: no specification requires this. Informational (does not affect mcpServerValid): a reachable endpoint is advertised but declares no transport; the draft may infer it (or use the registry "type"). Consider declaring the transport alongside the url, e.g. "transport": "streamable-http". | |||
| MCP Server Partially Assessed | coverage note | nothing | our own coverage |
Examples
Both run through the same checks as a live scan: the first passes, the second is flagged.
{
"$schema": "https://static.modelcontextprotocol.io/schemas/v1/server.schema.json",
"name": "io.github.example/catalog-mcp",
"description": "Catalog search and account operations for agents.",
"version": "1.0.0",
"remotes": [{ "type": "streamable-http", "url": "https://example.com/mcp" }]
}{
"$schema": "https://static.modelcontextprotocol.io/schemas/v1/server.schema.json",
"name": "io.github.example/broken-mcp",
"description": "Present but not connectable: the remote endpoint isn't an absolute http(s) URL.",
"version": "1.0.0",
"remotes": [{ "type": "streamable-http", "url": "example.com/mcp" }]
}Specifications
| Document | Revision | Kind |
|---|---|---|
| MCP server card proposal | Draft | specification |
| MCP Server Card experimental extension | Living document | specification |
| MCP Server Card discovery and security draft | Draft verified 2026-10-05 | specification |
| MCP Streamable HTTP transport | Version of 28 July 2026 | specification |
| MCP versioning: current and older protocol versions | Version of 28 July 2026 | specification |
| MCP transports, 2025 version (the older connection handshake) | Version of 18 June 2025 | specification |
| MCP tools | Version of 28 July 2026 | specification |
| MCP Authorization | Version of 28 July 2026 | specification |
| MCP server/discover — the one method a modern server must implement | Version of 28 July 2026 | specification |
| JSON-RPC 2.0 Specification | Version 2.0 | specification |
Last re-read against the published documents: .