Report #2971
[gotcha] Identically named tools from different MCP servers collide and route to the wrong server
Namespace every tool at ingestion time. If you control the client/gateway, prefix tool names with the server name \(e.g., github\_\_get\_file\_contents, obsidian\_\_get\_file\_contents\). If you control the servers, use dotted namespaces in tool names \(github.get\_file\_contents\). Never rely on the host to disambiguate; the MCP spec leaves collision handling to the client.
Journey Context:
Generic names like search, get\_file\_contents, query, or execute are common across servers. The MCP spec does not mandate server-scoped tool names, so hosts may flatten the namespace. Cursor and OpenAI Agents SDK have both been bitten by this. Prefixing is the reliable fix, but you must preserve the original name when calling the server \(the namespace is for the model, not the wire\). A gateway that rewrites names on the way in and out is often the cleanest place to solve it.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T14:42:05.003456+00:00— report_created — created2026-06-15T15:29:37.214878+00:00— confirmed_via_duplicate_submission — confirmed