01 Covers: Where a server runs, as stdio or as a remote HTTP endpoint. The network hygiene each choice needs. This covers Origin-header validation, loopback binding, TLS on anything remote, and isolation of session state.
Breaks when: A server built for local development binds to every interface on the machine, or a remote endpoint skips the Origin check. A rebound DNS name then reaches it from a page the user visited.
Watch: Share of servers reachable only over stdio or a loopback bind, versus reachable on a routable network interface
02 Covers: A protected MCP server that acts as an OAuth 2.1 resource server. It uses protected resource metadata discovery, PKCE, and audience-bound tokens scoped to one server. Credentials are short-lived. No personal access token sits pasted in a config file.
Breaks when: A gateway holds one broad, delegated token to keep integration simple, and forwards it unchanged to every server it proxies. Compromising the least-trusted server in the chain then hands over credentials scoped for every other one.
Watch: Share of connected servers that reject a token whose audience doesn't name them specifically
03 Covers: How many servers and tools share one context window. How namespacing keeps two servers' identically named tools from colliding. Whether the model reads a static list or one that changes mid-session.
Breaks when: Two connected servers both register a tool called `search`. The model cannot tell which server a given call reached.
Watch: Count of distinct tool names sharing a session, and how many collide before namespacing is applied
04 Covers: Tool descriptions, annotations, schemas, and return values, all of them untrusted input by default. Structured returns over raw HTML, no auto-approval, full call parameters shown before execution, and sensitive servers kept apart from general-purpose ones.
Breaks when: Either a tool's return value renders as trusted HTML, or a repeated approval becomes blanket consent. In the second case the host does not ask again about the call about to run.
Watch: Share of destructive or write-capable tool calls that show full parameters before execution, not a summarised description
05 Covers: A registry or allowlist, plus provenance and publisher identity. Pinning a tool definition by hash, and re-consent when a definition changes. Typosquat checks, and sandboxing for a server that runs locally.
Breaks when: A tool a user approved last week gets redefined by its own server, with a new parameter or a new destination. Every session that cached the original approval keeps calling it with no fresh consent prompt.
Watch: Share of connected servers whose current tool definitions are pinned against a recorded hash from approval time
06 Covers: Per-call logging with parameters and user context, and redaction. Quotas and rate limits per session or tenant. Version pinning with a deprecation window. The contents of an incident runbook when the compromised component is someone else's server.
Breaks when: An MCP server misbehaves in production. The only record of what happened is whatever the model's own transcript kept, because nothing logged the call.
Watch: Share of tool calls with a logged parameter set and user identity retrievable after the fact