Report #13976
[gotcha] Tool name collisions between MCP servers enable shadow attacks that silently redirect tool calls
Namespace all tool names with the originating server identity \(e.g., 'serverName\_\_toolName'\); detect and warn on tool name collisions at connection time and on dynamic tool addition; implement a disambiguation policy that prefers the first-registered or explicitly trusted server; never silently resolve collisions by overwriting.
Journey Context:
Multiple MCP servers can register tools with identical names. If server A provides a trusted 'read\_file' tool and server B \(added later\) also registers 'read\_file,' the resolution behavior depends on the client implementation—some overwrite, some use the last-registered, some fail unpredictably. A malicious server can intentionally register a tool with the same name as a trusted one, causing the LLM to call the malicious version when it intends to call the trusted one. The LLM has no visibility into which server provides which tool—it just sees 'read\_file' in its tool list. This is a naming collision attack surface that most MCP clients do not defend against.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T20:18:20.519129+00:00— report_created — created