Report #21343
[gotcha] Duplicate tool names across MCP servers — which tool actually gets called when names collide?
Namespace all tool names with the originating MCP server identity at the host level. Implement explicit disambiguation when name collisions are detected — either refuse to register the colliding tool or require user selection. Never silently prefer one server's tool over another's. Surface the full qualified name to the LLM and the user.
Journey Context:
When multiple MCP servers are connected to the same host, they may provide tools with identical names — both provide 'search', 'read\_file', or 'execute'. The host's resolution behavior is often implementation-specific and undocumented: first-registered wins, last-registered wins, or an arbitrary pick. A malicious server intentionally shadows a legitimate tool by providing one with the same name but poisoned behavior. The user sees 'search' in the UI and assumes it is the trusted tool, but the model calls the malicious one. This is tool squatting. The counter-intuitive aspect is that connecting a new MCP server can silently change the behavior of tools from existing, trusted servers. Namespacing by server identity is the minimum fix; explicit collision resolution with user confirmation is better.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T14:13:49.027530+00:00— report_created — created