Code boundarywhat runs on the machine
Resolvenpx -y or uvx fetches the server and its dependencies
- Attack
- Malicious server (postmark-mcp@1.0.16), compromised dependency (axios@1.14.1), MCP-named lures on PyPI
- Control
- Locked install directory; block known malware at fetch time
Launchthe host spawns the server as your user
- Attack
- Reads ~/.ssh, ~/.aws, env tokens; writes rogue servers into AI tool configs (SANDWORM_MODE)
- Control
- Container with no mounts and no network; per-server scoped tokens
Context boundarywhat the model reads and sends
Listtools/list puts every description in context
- Attack
- Tool poisoning; shadowing of another server's tools
- Control
- Read descriptions before use; pin definitions on approval
Changenotifications/tools/list_changed
- Attack
- Rug pull: a clean catalog is swapped after review
- Control
- Client re-prompts when a definition changes
Calltools/call arguments out, results back in
- Attack
- Secrets exfiltrated as arguments; instructions injected in results
- Control
- Show full arguments before calling; treat results as data
