01Tool Poisoning
Manipulated Tool descriptions or metadata can contain hidden instructions that lure the model into unintended actions or data exfiltration. Countermeasures include signed Tool manifests, a formal approval process, and reconciling the advertised function against the actual runtime behavior. Only the minimally necessary fields are exposed to the model.
02Dynamic Tool Instability ("Rug Pulls")
Because Tool definitions are loaded dynamically and rarely strictly versioned, a previously reviewed definition can later be swapped out for malicious behavior. Cryptographic signatures and version pinning, with verification of signature and hash at load time, prevent such unnoticed changes.
03Code Injection & unsafe execution
If model-supplied inputs are passed unchecked into system commands, APIs, or database queries, injection and unintended code execution become a risk. Enforce JSON-Schema validation for inputs and outputs, structured JSON Tool calls instead of free text, as well as sanitization and size limits. For high-risk actions, Human-in-the-Loop approvals apply in addition.
04Credential & token abuse
MCP-Servers often manage API keys and OAuth tokens; insecure storage, cleartext logging, or overly long caching enable theft and identity takeover. Secrets belong in secrets vaults, never in environment variables, logs, or within the LLM's reach. In addition, short-lived, tightly scoped tokens apply, along with avoiding Token Passthrough to downstream services.
05Excessive Permissions
Over-privileged Tools and broad access scopes increase the damage of a single compromised Tool and violate the Least Privilege principle. The guide calls for OAuth 2.1/OIDC with short-lived, tightly scoped tokens, token delegation (RFC 8693) instead of passthrough, and central policy enforcement via a dedicated gateway layer.
06Insufficient isolation
Shared sessions, shared identities, or a common execution environment lead to cross-tenant leaks, identity confusion, and resource conflicts. Isolate user, session, and compute contexts strictly, avoid shared state for user data, and enforce per-session quotas with deterministic cleanup. Operation is containerized, as non-root, and network-segmented.