MCP Practice Exam: Verified Question Content (spike 2026-06-25)¶
Sourced against official/authoritative material only: modelcontextprotocol.io stable
2025-11-25 spec pages, the 2026-07-28 Release Candidate blog, owasp.org MCP Top 10,
the NSA AISC CSI (press release plus PDF summaries; the PDF itself 403s automated
fetchers), IETF RFC 8707, the A2A protocol site, and the AAIF / Linux Foundation
governance posts.
Stable baseline is 2025-11-25. The 2026-07-28 revision is a Release Candidate
(locked 2026-05-21, final 2026-07-28). Every RC-only fact below is labeled [RC] and
must be re-verified at GA before it appears on a published exam.
A label of [CONFIRMED] means the fact is quoted or paraphrased from a primary
normative source. [PARAPHRASE] means the source is authoritative but the wording is a
secondary summary (used only for the NSA CSI, whose PDF cannot be fetched directly).
Domain 1: Fundamentals (message layer, lifecycle, mental model)¶
Load-bearing facts¶
- MCP encodes messages with JSON-RPC 2.0; messages MUST be UTF-8 encoded.
[CONFIRMED]https://modelcontextprotocol.io/specification/2025-11-25/basic/transports - MCP is an open protocol connecting AI applications (hosts) to external tools, data,
and systems through clients and servers. Hosts run one or more clients; each client
connects to one server.
[CONFIRMED]https://modelcontextprotocol.io/ - A client cannot use a capability the server never declared; client and server each
advertise capabilities and commit only to what was negotiated.
[CONFIRMED]https://modelcontextprotocol.io/specification/2025-11-25/server/tools (server MUST declare thetoolscapability) - Over HTTP, the client MUST send
MCP-Protocol-Versionon every request after initialization; if absent, the server SHOULD assume2025-03-26; an invalid version gets400 Bad Request.[CONFIRMED]https://modelcontextprotocol.io/specification/2025-11-25/basic/transports - MCP was created by Anthropic and first released November 2024;
2025-11-25was the first-anniversary stable revision.[CONFIRMED]https://blog.modelcontextprotocol.io/posts/2025-11-25-first-mcp-anniversary/
Misconceptions / near-miss distractors¶
- "MCP uses a custom binary wire format" or "gRPC at the message layer." Wrong: it is JSON-RPC 2.0 over a transport. gRPC is plausible because people associate it with RPC.
- "JSON-RPC messages may use any Unicode encoding." Wrong: UTF-8 is mandated. UTF-16 is the trap because it is also Unicode.
- "MCP is one-to-one host-to-server." Wrong: a host runs multiple clients, each bound to one server; the host aggregates many servers.
- "Capability negotiation is advisory; a client may call any method." Wrong: negotiated capabilities gate what each side may use.
- "The
MCP-Protocol-Versiondefault when missing is2025-11-25." Wrong: the spec says fall back to2025-03-26. This is a precise near-miss.
Scenario questions¶
F-S1 (Medium). A developer's HTTP MCP client omits the MCP-Protocol-Version header
on requests after initialization, and the server has no record of a negotiated version.
Per the 2025-11-25 spec, how should the server behave?
- A. Reject every request with
400 Bad Requestuntil the header is supplied - B. Assume protocol version
2025-03-26and proceed (correct) - C. Assume the latest version it supports
- D. Close the connection and require a fresh
initialize
Rationale: The transport spec says when the server does not receive an
MCP-Protocol-Version header and has no other way to identify the version, it SHOULD
assume 2025-03-26. A is the response to an invalid version, not a missing one. C and
D contradict the documented fallback. Source: 2025-11-25 transports.
F-S2 (Easy/Medium). A server logs human-readable debug lines and also returns JSON-RPC results. Over stdio, where may the server write those debug lines without corrupting the protocol stream?
- A. Interleaved on stdout between JSON-RPC messages
- B. On stderr as UTF-8 strings (correct)
- C. In a
debugfield appended to each JSON-RPC response - D. On stdout, base64-encoded so the client can skip it
Rationale: In stdio the server MUST NOT write anything to stdout that is not a valid MCP message, and MAY write UTF-8 logging to stderr. A and D pollute stdout. C invents a field. Source: 2025-11-25 transports (stdio).
Domain 2: Architecture (transports, sessions, scaling, the RC)¶
Load-bearing facts¶
- Two standard transports: stdio and Streamable HTTP. Clients SHOULD support stdio
whenever possible.
[CONFIRMED]https://modelcontextprotocol.io/specification/2025-11-25/basic/transports - Streamable HTTP replaced the HTTP+SSE transport from protocol version 2024-11-05.
It uses one MCP endpoint supporting both POST and GET, with optional SSE.
[CONFIRMED]same page. - Stateful sessions: the server MAY assign a session ID in the
MCP-Session-Idresponse header on theInitializeResult; the client MUST then echo it on all subsequent requests. On HTTP 404 the client MUST start a new session with a freshInitializeRequest(no session ID).[CONFIRMED]same page. (Note: the header name isMCP-Session-Idwith that casing in the spec.) - Resumability: servers MAY attach an
idto SSE events; the client resumes by issuing an HTTP GET with theLast-Event-IDheader; the server replays only on the same stream.[CONFIRMED]same page. [RC]Stateless core: theinitialize/initializedhandshake is removed (SEP-2575) andMcp-Session-Id/protocol-level sessions are removed (SEP-2567). Protocol version, client info, and capabilities travel in_metaper request; a newserver/discovermethod fetches server capabilities. Any request can land on any instance.[CONFIRMED as RC]https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/[RC]Server-to-client requests move from SSE to Multi Round-Trip Requests (SEP-2322,InputRequiredResultwithinputRequests/requestState; client retries withinputResponses).Mcp-Method/Mcp-Namerouting headers (SEP-2243).[CONFIRMED as RC]same blog.
Misconceptions / near-miss distractors¶
- "WebSocket replaced HTTP+SSE." Wrong, and the most attractive distractor: Streamable HTTP is the replacement. WebSocket is not a standard MCP transport.
- "gRPC" or "long-polling" as the replacement transport. Plausible-sounding, both wrong.
- "The session ID rides a URL query string / a JSON-RPC param / the SSE
retryfield." Wrong: it is theMCP-Session-IdHTTP header. - "On a 404 the client retries the same session ID." Wrong: 404 means the session is gone; the client MUST re-initialize without a session ID.
[RC]"In the stateless core, version/capabilities ride theMcp-Session-Idheader on each request." Wrong and self-contradicting: sessions are removed; data rides_meta.[RC]"The RC is the current stable spec." Wrong:2025-11-25is stable; the RC is not final.
Scenario questions¶
A-S1 (Medium). A horizontally scaled Streamable HTTP deployment (2025-11-25) puts several server replicas behind a load balancer. A client initializes, gets a session ID, then its next request is routed to a different replica that has no record of that session and returns 404. What must a spec-compliant client do, and what is the underlying fix for the deployment?
- A. Retry the same request with the same
MCP-Session-Id; the LB will eventually hit the right replica - B. Start a new session with a fresh
InitializeRequestand no session ID; fix the deployment with sticky routing or a shared session store (correct) - C. Downgrade to the HTTP+SSE transport, which is stateless
- D. Move the session ID into a URL query parameter so any replica can read it
Rationale: 404 on a session-bearing request means the client MUST re-initialize without a session ID (2025-11-25 transports). Stateful Streamable HTTP needs sticky routing or a shared session store across replicas. A ignores the spec. C is false (HTTP+SSE is not "stateless" and is deprecated). D is not how the spec carries the session ID. Sources: 2025-11-25 transports; RC blog (which removes sessions precisely to avoid this).
A-S2 (Hard) [RC]. A team wants any MCP request to land on any stateless replica with
no sticky routing and no shared session store. Which 2026-07-28 RC change makes this
possible at the protocol layer?
- A. A mandatory
Mcp-Session-Idheader that every replica validates against a shared store - B. Removal of the initialize handshake and protocol-level sessions; version, client info,
and capabilities travel in per-request
_meta, withserver/discoverfor capabilities (correct) - C. A WebSocket upgrade that pins each client to one replica
- D. TLS client-certificate pinning that encodes the session
Rationale: The RC stateless core (SEP-2575 removes the handshake, SEP-2567 removes
sessions) lets any instance serve any request because per-request _meta carries the
context. A reintroduces the session it removed. C/D are inventions. Label [RC]: not
final. Source: RC blog.
Domain 3: Tooling (primitives, SDK usage)¶
Load-bearing facts¶
- A tool has a unique
name, adescription, and aninputSchema(a valid JSON Schema object, defaulting to 2020-12). Discovery istools/list; invocation istools/call.[CONFIRMED]https://modelcontextprotocol.io/specification/2025-11-25/server/tools - Clients MUST consider tool annotations (for example
destructiveHint,readOnlyHint) to be untrusted unless they come from trusted servers. Annotations describe behavior; they are not enforced guarantees.[CONFIRMED]same page. - Tools are model-controlled, but there SHOULD always be a human in the loop able to
deny invocations.
[CONFIRMED]same page. - Sampling (
sampling/createMessage) lets a server request LLM completions through the client, so the client controls model access and no server API keys are needed. There SHOULD always be a human able to deny sampling requests.[CONFIRMED]https://modelcontextprotocol.io/specification/2025-11-25/client/sampling - Client-side primitives are sampling, roots, and elicitation; each is gated behind
capability declaration (for example clients supporting sampling MUST declare the
samplingcapability).[CONFIRMED]sampling page. [RC]Roots, Sampling, and Logging are annotation-only deprecations under a new lifecycle policy (SEP-2577); they keep working for at least 12 months. Suggested replacements: sampling to direct LLM provider API integration; logging to stderr or OpenTelemetry.[CONFIRMED as RC]https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/
Misconceptions / near-miss distractors¶
- "
destructiveHintis an enforced guarantee the server cannot violate." Wrong, and the best distractor: annotations are advisory and untrusted from untrusted servers. - "Sampling means the server runs its own model with its own API keys." Exactly backwards: the point of sampling is the client owns the model and keys.
- "Resources or Prompts let a server request inference." Wrong primitive: that is Sampling. Resources are read-only URI-addressed context; Prompts are parameterized templates.
- "Roots is how a server requests inference." Wrong: Roots scopes filesystem/URI access.
[RC]"Sampling was removed in the RC." Wrong precision trap: it is deprecated (annotation-only), still functional for at least 12 months, not removed.
Scenario questions¶
T-S1 (Medium). A connected (but not independently audited) MCP server exposes a
delete_records tool whose annotations claim readOnlyHint: true and
destructiveHint: false. How must a well-behaved client treat those annotations?
- A. As guarantees: skip the confirmation prompt because the tool is marked read-only
- B. As untrusted hints, since the server is not trusted; still apply destructive-action safeguards and keep a human in the loop (correct)
- C. As required fields the client validates for schema correctness only
- D. As client-only metadata the server never actually sees
Rationale: Clients MUST consider annotations untrusted unless from trusted servers, and tools SHOULD keep a human in the loop. A trusts attacker-supplied metadata, the exact failure annotations warn against. C and D misstate what annotations are. Source: 2025-11-25 server/tools.
T-S2 (Medium). A server wants to summarize a document using an LLM but must hold no model API keys of its own and must let the user review the prompt first. Which MCP primitive fits, and what control is required?
- A. Resources, with the client auto-approving reads
- B. Sampling via
sampling/createMessage, with a human-in-the-loop able to review and deny the request (correct) - C. Prompts, which execute inference server-side
- D. Roots, which grant the server model access scoped to a directory
Rationale: Sampling routes inference through the client (no server keys) and SHOULD keep a human able to deny the request. Resources are read-only data, Prompts are templates (no inference), Roots is URI scoping. Source: 2025-11-25 client/sampling. (If used on an RC-aligned exam, add a note that sampling is deprecated in the RC.)
Domain 4: Security (authorization, OAuth 2.1, RFC 8707)¶
Load-bearing facts¶
- Authorization is OPTIONAL in MCP; when used over HTTP the MCP server acts as an
OAuth 2.1 resource server and the client as an OAuth 2.1 client.
[CONFIRMED]https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization - MCP clients MUST implement RFC 8707 Resource Indicators: the
resourceparameter MUST be sent on both authorization and token requests, MUST identify the target MCP server, and MUST use the server's canonical URI. The client MUST send it even if the authorization server does not support it.[CONFIRMED]same page. - Servers MUST validate that tokens were issued specifically for them (audience), and
MUST reject tokens not issued for them.
[CONFIRMED]same page. - Token passthrough is explicitly forbidden: servers MUST NOT accept or transit
tokens not issued for them, and when calling upstream APIs MUST NOT pass through the
client's token; clients MUST NOT send tokens other than ones issued by the server's
authorization server. The failure this prevents is audience-validation breakage feeding
a confused-deputy condition.
[CONFIRMED]same page. - RFC 8707 itself: the
resourceparameter is an absolute URI that audience-restricts the issued token, preventing token replay across services.[CONFIRMED]https://datatracker.ietf.org/doc/html/rfc8707 - Clients MUST implement PKCE with
S256; MCP servers MUST implement RFC 9728 Protected Resource Metadata for authorization-server discovery.[CONFIRMED]2025-11-25 authorization.
Misconceptions / near-miss distractors¶
- "RFC 8707 prevents DNS rebinding / prompt injection / SSE replay." Wrong: those are real MCP concerns addressed elsewhere (Origin validation, tool-description trust, stream resumability). RFC 8707 binds token audience to defeat confused-deputy / token reuse. These adjacent-but-wrong options are strong distractors.
- "Token passthrough is forbidden because it bloats payloads / breaks caching / OAuth 2.1 lacks refresh tokens." All false rationales; the real reason is audience validation and least privilege.
- "Authorization is mandatory in MCP." Wrong: it is OPTIONAL; stdio implementations SHOULD NOT use it and instead read credentials from the environment.
- "DNS-rebinding defense is the
resourceparameter." Wrong: that isOriginheader validation plus localhost binding (a transport-layer control, not authorization). - "The MCP server forwards the client's token to upstream APIs." Wrong: the server gets a separate token from the upstream AS; passing the client token through is forbidden.
Scenario questions¶
S-S1 (Hard). An MCP server proxies to a high-privilege internal billing API. An attacker obtains a token that a different, low-privilege service issued and presents it to the billing MCP server. Which spec-mandated control stops this, and how?
- A.
Originheader validation, by rejecting cross-origin browser requests - B. RFC 8707 audience binding plus server-side audience validation: the server MUST reject a token not issued for it as the intended audience (correct)
- C. PKCE
S256, by preventing authorization-code interception - D. SSE resumability, by replaying only on the originating stream
Rationale: The attack is token reuse across audiences (a confused-deputy setup). RFC 8707 binds the token to a resource and the server MUST validate it was issued for itself. A defends against DNS rebinding, not token reuse. C protects the code exchange. D is a transport concern. Sources: 2025-11-25 authorization; RFC 8707.
S-S2 (Medium). An MCP server needs to call an upstream SaaS API on the user's behalf. A developer proposes forwarding the same access token the MCP client presented. Why does the spec forbid this, and what is the compliant alternative?
- A. It is allowed if the token has not expired; just check expiry first
- B. Forbidden: the server MUST NOT pass through the client's token; it must obtain a separate token from the upstream authorization server, acting as an OAuth client to it (correct)
- C. Forbidden only because forwarding inflates the JSON-RPC payload
- D. Forbidden because OAuth 2.1 removed refresh tokens, so the token cannot be reused
Rationale: The server MUST NOT pass through the received token; the upstream call uses a separate token issued by the upstream AS. Passthrough breaks audience validation and can create a confused deputy. A permits the forbidden behavior. C and D give fabricated reasons (OAuth 2.1 keeps refresh tokens). Source: 2025-11-25 authorization.
Domain 5: Security frameworks and ecosystem (OWASP, NSA, governance, A2A)¶
Load-bearing facts¶
- OWASP MCP Top 10 canonical IDs use the
MCP##:2025format. MCP03:2025 is Tool Poisoning, officially defined as occurring "when an adversary compromises the tools, plugins, or their outputs that an AI model depends on" (broader than description-only injection). Project status: Beta / Pilot Testing (Phase 3).[CONFIRMED]https://owasp.org/www-project-mcp-top-10/ - The ten: MCP01 Token Mismanagement & Secret Exposure; MCP02 Privilege Escalation via Scope Creep; MCP03 Tool Poisoning; MCP04 Software Supply Chain Attacks & Dependency Tampering; MCP05 Command Injection & Execution; MCP06 Intent Flow Subversion; MCP07 Insufficient Authentication & Authorization; MCP08 Lack of Audit and Telemetry; MCP09 Shadow MCP Servers; MCP10 Context Injection & Over-Sharing.
- NSA AISC CSI "Model Context Protocol (MCP): Security Design Considerations for AI-Driven
Automation" (U/OO/6030316-26, May 2026 v1.0). Core concern: the protocol reverses the
familiar pattern (servers query and act for clients), authentication is optional, and
RBAC is not part of the protocol.
[CONFIRMED]press release: https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/4496698/ - NSA recommended mitigations: treat every session as untrusted until verified;
least-privilege per-action/per-tool tokens; signed provenance for dynamically discovered
servers; outbound filtering proxy and registry pinning; audit logging on all tool/model
invocations.
[PARAPHRASE](PDF 403s automated fetchers; wording from press release and CSI summaries). PDF: https://media.defense.gov/2026/Jun/02/2003943289/-1/-1/0/CSI_MCP_SECURITY.PDF - Governance: Anthropic donated MCP to the Agentic AI Foundation (AAIF), a directed fund
under the Linux Foundation, announced December 9, 2025. MCP's maintainer-led technical
governance is unchanged; the AAIF board handles strategy/budget/membership.
[CONFIRMED]https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation and https://blog.modelcontextprotocol.io/posts/2025-12-09-mcp-joins-agentic-ai-foundation/ - A2A (Agent2Agent) originated at Google, was donated to the Linux Foundation, and handles
agent-to-agent communication; MCP handles agent-to-tool. They compose rather than
compete.
[CONFIRMED]https://a2a-protocol.org/latest/
Misconceptions / near-miss distractors¶
- "Tool Poisoning means overloading a server with calls / registering duplicate names / exhausting a rate limit." All wrong; those describe DoS or naming collisions, not the OWASP definition (compromising tools, plugins, or their outputs).
- "Tool Poisoning is only malicious text in a tool description." This is the repo's current framing. It is a common instance but narrower than the official MCP03 wording. A defensible exam should not present the narrow definition as the whole of MCP03.
- "MCP remains proprietary to Anthropic." Wrong since December 2025 (AAIF/LF).
- "A2A governs MCP" or "MCP and A2A are the same protocol." Wrong: distinct, complementary LF projects.
- "The NSA CSI says to allow all outbound traffic / disable auth for internal servers / trust TLS alone." All contradict the CSI; they are good distractors precisely because each inverts a real recommendation.
- "MCP has built-in RBAC." Wrong, and a key NSA point: RBAC is not in the protocol.
Scenario questions¶
E-S1 (Medium/Hard). A platform team is hardening external MCP connections per the NSA AISC CSI. The CSI flags that MCP authentication is optional and the protocol has no built-in RBAC. Which posture aligns with the CSI's recommendations?
- A. Allow all outbound traffic so any discovered tool stays reachable
- B. Treat each session as untrusted until verified, issue least-privilege per-tool tokens, pin the server registry, and route egress through a filtering proxy with audit logging (correct)
- C. Disable authentication for servers on the internal network to reduce friction
- D. Rely on TLS for trust, since transport encryption authenticates the server
Rationale: The CSI's mitigations are untrusted-by-default sessions, least-privilege tokens, signed provenance / registry pinning, outbound filtering, and audit logging. A, C, and D each invert one of those. Source: NSA CSI (press release + summaries). Label the verbatim recommendation wording as paraphrase until the PDF is re-read directly.
E-S2 (Medium). An architect must let a specialized internal agent both use a database tool and delegate subtasks to a separate fraud-analysis agent built on another framework. Which protocols fit which job?
- A. MCP for both, since MCP covers agent-to-agent too
- B. MCP to connect the agent to the database tool; A2A to let it collaborate with the other agent across frameworks (correct)
- C. A2A for both, since A2A subsumes tool access
- D. Neither; this requires a single proprietary Anthropic protocol
Rationale: MCP is agent-to-tool; A2A is agent-to-agent; they compose. A and C overstate one protocol's scope. D is false since MCP is an open LF project and A2A exists. Sources: a2a-protocol.org; AAIF governance posts.
Verdict on the repo's current 12 questions¶
Scored for answer defensibility, distractor plausibility, recall-vs-application, and RC-currency risk.
| ID | Domain | Verdict | Reason |
|---|---|---|---|
| q-transport-streamable | architecture | Keep | Answer (Streamable HTTP replaced HTTP+SSE) is directly confirmed; distractors (WebSocket/gRPC/long-polling) are plausible and all wrong. Solid. |
| q-rfc8707-purpose | security | Keep | Confused-deputy / audience-binding answer is confirmed; distractors are real adjacent MCP concerns (DNS rebinding, prompt injection, SSE replay). One of the best items in the bank. |
| q-token-passthrough | security | Revise (minor) | Answer is correct and confirmed. But add that authorization is OPTIONAL in MCP so the stem is not misread as "always required." Distractor "OAuth 2.1 has no refresh tokens" is factually false (OAuth 2.1 keeps refresh tokens) which makes it an implausible throwaway. Consider swapping it for a plausible-but-wrong rationale such as "to keep tokens out of server logs." |
| q-rc-stateless-core | architecture | Keep, keep [RC] label |
Matches the RC blog (SEP-2575/2567, per-request _meta, server/discover). The stem already flags the RC. Re-verify method/field names at GA. Distractor C says Mcp-Session-Id which the RC removes, a clean trap. |
| q-json-encoding | fundamentals | Keep | UTF-8 requirement directly confirmed. Easy recall item, appropriate for the difficulty mix. |
| q-sampling-primitive | tooling | Keep (watch RC note) | Sampling-as-client-delegation is confirmed; distractors (Resources/Prompts/Roots) are the right near-misses. Rationale's "deprecated in the RC" is correct but RC-only; keep it in the rationale, not the answer. |
| q-tool-poisoning | security | Revise | The answer ("embedding malicious instructions in a tool's description") is the narrow reading. OWASP MCP03 is officially broader: "an adversary compromises the tools, plugins, or their outputs that an AI model depends on." Description injection is a common instance, not the definition. Either broaden the correct option to match OWASP wording, or reframe the stem as "Which is an example of tool poisoning (MCP03)?" so the narrow answer is defensible. As written, a knowledgeable test-taker can argue the option is incomplete. |
| q-nsa-egress | security | Keep (flag source) | Posture (filtering outbound proxy/DLP, untrusted-until-verified) matches the CSI summaries and press release. Mark internally that the verbatim CSI wording is paraphrase (PDF 403s fetchers); the recommendation substance is sound. Distractors invert real recommendations. Good item. |
| q-session-id-mechanics | architecture | Keep (fix header casing) | Mechanics confirmed (MCP-Session-Id on InitializeResult, client echoes, 404 to re-init). The spec uses casing MCP-Session-Id; the option text uses Mcp-Session-Id. Harmonize to the spec casing for defensibility. Otherwise strong. |
| q-governance-a2a | ecosystem | Keep | AAIF/LF governance and MCP-vs-A2A composition are confirmed. Distractors are clean. Note "Dec 2025" donation date in the rationale is correct (Dec 9, 2025). |
| q-annotations-untrusted | tooling | Keep | "Advisory, untrusted unless from a trusted server" is a near-verbatim match to the spec MUST warning. Excellent, defensible item. |
| q-streamable-not-sse | fundamentals | Revise (stem date) | The claim is right (HTTP+SSE is the deprecated/legacy transport) but the stem's framing "legacy/deprecated as of 2025-03-26" is loose. HTTP+SSE dates from 2024-11-05 and was superseded by Streamable HTTP introduced in 2025-03-26. Reword to "Which transport did Streamable HTTP (introduced 2025-03-26) supersede?" so the date attaches to the right event. Answer (HTTP+SSE) stays. Also note this item overlaps heavily with q-transport-streamable; consider differentiating or dropping one to avoid redundancy. |
Summary of flags¶
- Revise: q-token-passthrough (weak/false distractor; add OPTIONAL-auth context), q-tool-poisoning (narrow vs official OWASP definition), q-streamable-not-sse (stem date framing plus redundancy with q-transport-streamable).
- Minor fixes: q-session-id-mechanics (header casing to
MCP-Session-Id), q-nsa-egress (mark NSA wording as paraphrase pending direct PDF read). - Drop: none outright. q-streamable-not-sse is the only drop candidate if the bank needs to shed redundancy with q-transport-streamable.
- RC-dependent (re-verify at GA 2026-07-28): q-rc-stateless-core, and the RC notes in q-sampling-primitive.
Not confirmable from a primary source (flag before publishing)¶
- The exact
server/discovermethod name and the precise_metafield layout come from the RC blog summary, not a published normative spec page.[RC] - NSA CSI recommendation wording is paraphrased from the press release and secondary summaries; the defense.gov / nsa.gov PDFs return HTTP 403 to automated fetchers. The substance is corroborated across sources; verbatim quotes need a manual PDF read.
- OWASP MCP Top 10 IDs render as
MCP##:2025on the project page even in 2026; confirm the canonical year label at publish time, since the project is still Beta (Phase 3). - Adoption figures (97M+ monthly SDK downloads, connector counts) are vendor marketing numbers, point-in-time, not spec facts. Do not test them as fixed values.