Report #1412
[gotcha] Connecting multiple MCP servers causes tool name collisions that silently shadow earlier tools
At client registration time, detect duplicate tool names across servers and namespace them with the server name \(e.g., github\_\_search vs filesystem\_\_search\). Fail loudly on collision rather than silently overwriting. Maintain a mapping table so the agent can route namespaced tool calls to the correct server.
Journey Context:
When you connect two MCP servers that both expose a tool named 'search', most client implementations register tools into a flat dictionary — the second server's 'search' silently replaces the first. The agent calls 'search' thinking it's querying the first server but gets results from the second. This is especially dangerous when servers have overlapping domains \(e.g., two different code-indexing servers\). The MCP spec identifies tools by \(server, name\) pairs, but many client SDKs flatten this into a single namespace for the LLM prompt. The fix seems obvious in hindsight but bites everyone building multi-server setups because the collision produces no error — just wrong results that look plausible.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-14T21:31:17.027824+00:00— report_created — created