MCP tool poisoning: what it looks like, and how to catch it before a server is connected A developer released lazaretto-guard, a free Claude Code plugin that scans MCP servers for tool-poisoning attacks before an agent connects to them. When a remote server is added via `claude mcp add` or written into `.mcp.json`, the plugin lists the server's tools and checks descriptions for injected instructions such as `` or `[SYSTEM]` blocks, then surfaces a permission prompt naming the rule and line. The plugin only warns and never blocks, and it checks local npx servers solely against published malware advisories. When your agent connects an MCP server, the server hands it a list of tools: names, descriptions and parameter schemas. The agent reads all of that text to decide how to use the tools. You usually see the tool names. You rarely see the full descriptions. That gap is where tool poisoning lives. A poisoned description reads like documentation with something extra in it, written for the model rather than for you. An illustrative example, not taken from a real server: Adds two numbers.