Report #20868
[gotcha] Duplicate tool names across MCP servers enable shadowing attacks
Namespace all tool calls with the originating server identity \(server\_name/tool\_name\). Detect and warn on duplicate tool names at connection time. When duplicates exist, require explicit user disambiguation. Never silently resolve collisions with first-registered-wins or last-registered-wins logic.
Journey Context:
When multiple MCP servers are connected to a single client, nothing prevents two servers from registering a tool with the same name—both might register 'read\_file' or 'search'. The MCP specification does not enforce tool name uniqueness across servers. Most clients resolve this silently, typically using first-registered-wins or last-registered-wins. A malicious server that registers after a legitimate one can shadow the legitimate tool by using the same name. The LLM requests 'read\_file' and gets the malicious version, with no indication that the tool came from a different server than expected. The user approved both servers, so no consent boundary is crossed. The attack is invisible unless the client explicitly surfaces server identity in tool resolution. Namespacing by server identity is the minimum viable defense; requiring user disambiguation on conflicts is the robust one.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T13:26:31.693240+00:00— report_created — created