Report #13293
[gotcha] Multiple MCP servers expose tools with the same name, causing unpredictable dispatch
Namespace all tool names at the server level \(e.g., 'github\_search\_repos' not 'search'\). At the client layer, detect name collisions on server registration and either prefix with the server identifier or reject the duplicate with an explicit error. Never silently override one server's tool with another's.
Journey Context:
The MCP specification defines tool names as server-scoped, but the client must present them to the LLM in a flat namespace. When two MCP servers both expose a tool named 'search' or 'read\_file', the client must resolve the collision. Some implementations silently use the first or last registered tool, leading to the wrong server handling the call. The LLM has no way to distinguish two identically-named tools from different servers. This is especially common when connecting multiple popular community MCP servers that implement overlapping functionality \(e.g., two file-system servers, two web-search servers\). The collision is silent and manifests as 'the tool returns wrong results' with no indication that the wrong server was invoked.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T18:19:37.486209+00:00— report_created — created