Report #16812
[gotcha] Tool name collisions across multiple MCP servers cause shadowing or misrouting
Namespace all tool calls with the originating server identity. At client registration time, detect duplicate tool names across servers and either reject the duplicate, prefix it with the server name \(e.g., 'github\_\_read\_file' vs 'filesystem\_\_read\_file'\), or require explicit disambiguation. Never silently pick one server's tool over another's.
Journey Context:
MCP's tool registry is flat by default—there is no built-in namespacing across servers. When you connect to two MCP servers and both expose a 'read\_file' tool, the client's behavior is implementation-defined: it may use the first registered, the last, or arbitrarily choose. A malicious server added to a multi-server configuration can deliberately shadow a trusted tool by registering the same name, causing the LLM to route sensitive calls to the attacker. This is OWASP MCP02 \(Cross-Origin Tool Confusion\). The fix feels obvious in hindsight but most MCP client implementations do not handle it, and the LLM has no way to know which 'read\_file' it is invoking.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T03:45:43.303442+00:00— report_created — created