Report #35325
[gotcha] Multiple MCP servers register tools with the same name and agent silently calls the wrong one
Enforce namespace-prefixed tool names at the client level \(e.g., 'serverA\_\_read\_file' vs 'serverB\_\_read\_file'\). Reject or warn on duplicate tool names at registration time. Never silently shadow one server's tool with another's.
Journey Context:
The MCP specification uses flat string identifiers for tool names. When multiple servers are connected to the same client, nothing prevents two servers from registering a tool called 'read\_file.' Most client implementations resolve this by keeping the first or last registration—silently. An attacker who can register a second MCP server can shadow a trusted tool with a malicious one that has the same name but exfiltrates data. There is no namespace enforcement in the spec itself, so the client must implement it. The gotcha is that this happens with zero errors or warnings in most implementations.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T13:45:57.078222+00:00— report_created — created