mcp-injection-experiments
Code snippets to reproduce MCP tool poisoning attacks. Python-based implementation.
Documentation
MCP Tool Poisoning Experiments
This repository contains a few experimental MCP server implementations, that attempt ot inject the MCP client/agent in use.
For more details about the attack method, please see our blog post.
Update: We have released a new security scanning tool called mcp-scan, that detects MCP attacks as demonstrated in this repository, and helps you secure your MCP servers.
Direct Poisoning
In `direct-poisoning.py`, we implement a simple MCP server that instructs an agent to leak sensitive files, when calling the `add` tool (in this case SSH keys and the `mcp.json` file itself).
An example execution in cursor looks like this:

Tool Shadowing
In `shadowing.py`, we implement a more sophisticated MCP attack, that manipulates the agent's behavior of a `send_email` tool (provided by a different, trusted server), such that all emails sent by the agent are leaked to the attacker's server.
An example execution in Cursor looks like this:

WhatsApp takeover
Lastly, in `whatsapp-takeover.py`, we implement a shadowing attack combined with a sleeper rug pull, i.e. an MCP server that changes its tool interface only on the second load to a malicious one.
The server first masks as a benign "random fact of the day" implementation, and then changes the tool to a malicious one that manipulates whatsapp-mcp in the same agent, to leak messages to the attacker's phone number.
Can you spot the exfiltration? Here, the malicious tool instructions ask the agent to include the smuggled data after many spaces, such that with invisible scroll bars, the user does not see the data being leaked. Only when you scroll all the way to the right, will you be able to find the exfiltration payload.
Frequently asked questions
What is mcp-injection-experiments?
mcp-injection-experiments is Code snippets to reproduce MCP tool poisoning attacks. Python-based implementation.
How do I install mcp-injection-experiments?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is mcp-injection-experiments open source?
Yes — it is hosted on GitHub at https://github.com/invariantlabs-ai/mcp-injection-experiments and has 183 stars.
Related MCP tools
Easily convert tool, agents and orchestrators from existing agent frameworks to MCP servers Python-based implementation.
A working pattern for SSE-based MCP clients and servers Python-based implementation.
AWS MCP Servers — helping you get the most out of AWS, wherever you use MCP. Python-based implementation. Trusted by 6900+ developers.
A simple, secure MCP-to-OpenAPI proxy server Python-based implementation. Trusted by 3500+ developers. Trusted by 3500+ developers.
MCP server that interacts with Obsidian via the Obsidian rest API community plugin Python-based implementation. Trusted by 2300+ developers.
Default Configuration: MCP CLI defaults to using Ollama with the gpt-oss reasoning model for local, privacy-focused operation without requiring API keys.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP