Cursor MCP client confused by multiple tenants of same system with MCP servers

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Cursor MCP client gets confused when there are multiple tenants of the same system with a MCP server (and tool names are the same). Cursor doesn’t properly route calls, calls get routed to one server.

We develop an erp product with an mcp integration. Every customer has their own tenant (and mcp server). When trying to consolidate access to multiple tenants in my cursor IDE (so I can make edits, update settings, monitor activity), it only accesses data and performs actions in one tenant.

Steps to Reproduce

Create multiple tenants of the same system, and set up and MCP server for each system with the same tool names and definitions. Then set them up in MCP.json, and attempt to perform actions in a particular server.

Expected Behavior

I should be able to perform actions and monitor tenants by the names I have assigned to each tenant.

Screenshots / Screen Recordings

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.3.34 (Universal)
VSCode Version: 1.105.1
Commit: 643ba67cd252e2888e296dd0cf34a0c5d7625b90
Date: 2026-01-10T21:17:10.428Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Darwin arm64 24.2.0

For AI issues: which model did you use?

Claude 4.5 Opus

For AI issues: add Request ID with privacy disabled

7fdf8ae0-35c7-494c-97f3-663d842066b4

Additional Information

Cursor output after debugging session:

“Summary of findings:
This is a Cursor MCP routing bug. When multiple MCP servers expose tools with identical names (like list_documents, get_document, etc.), Cursor doesn’t properly route calls based on the server name prefix (mcp_staging_* vs mcp_harvestmaster_*). All calls get routed to one server.
Current workarounds:
Disable unused servers - Add “disabled”: true to servers you’re not using
Start a fresh chat - Tool routing may be cached per chat session
Use one server at a time - Toggle which server is active in mcp.json
For your immediate need - if you want to use Harvest Master now, I can disable staging:”

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the report. This is a known issue: when multiple MCP servers have tools with the same names, Cursor routes all calls to one server instead of the correct one.

Interesting detail: the bug was fixed in 2.3.21, but all fix confirmations were for local STDIO servers. You’re using remote HTTP servers, so it’s possible the fix didn’t cover that transport.

A couple questions:

  • If you leave only one server in mcp.json, do calls to it work correctly?
  • Can you share a chat example that shows the call going to the wrong server?

Workarounds for now:

  • Rename the tools in the server code: if you have access to the frappe_assistant code, add a suffix like _staging or _harvestmaster to the tool names. Confirmed to work.
  • Start a new chat: routing may be cached per session.

I’ll pass the info about the HTTP transport issue to the team.

This is interesting - I tested this in a 2.3.* version using multiple identically-named tools on different servers, and it worked fine for me.

tell Claude to list the full name of each tool (it will say something like user-staging-mytool, user-harverstmaster-mytool, user-vegdepot-mytool) and then see if it can make calls to each those? it might not be an IDE bug, but rather, an “AI not knowing what to do” bug, solvable by being 100% specific?

Note that I’m on Windows.

1 Like