Report #75324
[gotcha] Multiple MCP servers expose tools with the same name — ambiguous tool selection calls wrong server
Namespace tool names at the client level when connecting multiple MCP servers. Prefix tool names with a server identifier \(e.g., 'github\_search\_repos' vs 'gitlab\_search\_repos'\). Maintain a mapping from namespaced names to \(server, original\_tool\_name\) pairs. When calling tools/call, route to the correct server using the namespaced name. Reject or rename colliding tools at registration time.
Journey Context:
The MCP spec does not define tool namespacing across servers. Each server's tools/list returns tool names in its own namespace with no awareness of other servers. If two servers both expose a 'search' tool, the client must disambiguate. Some implementations silently pick the first match or the last registered, leading to the wrong server being called. The LLM also cannot distinguish between identically-named tools from different servers in its function definitions — both appear as 'search' with potentially different schemas. This is increasingly common as MCP server ecosystems grow and multiple servers \(e.g., GitHub \+ GitLab, or multiple database servers\) are connected simultaneously.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:01:31.683572+00:00— report_created — created