Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
When multiple MCP servers in ~/.cursor/mcp.json have keys that differ
only in CJK characters (after the same English suffix), Cursor’s
per-workspace MCP cache folder name collides. As a result, the agent
session only sees ONE of those servers; all the others are silently
overwritten on disk despite their stdio processes starting successfully.
Steps to Reproduce
-
Add the following to
~/.cursor/mcp.json:{ "mcpServers": { "甲平台 - API 文档": { "command": "npx -y apifox-mcp-server@latest --project-id=AAA", "env": { "APIFOX_ACCESS_TOKEN": "..." } }, "乙平台 - API 文档": { "command": "npx -y apifox-mcp-server@latest --project-id=BBB", "env": { "APIFOX_ACCESS_TOKEN": "..." } }, "丙平台 - API 文档": { "command": "npx -y apifox-mcp-server@latest --project-id=CCC", "env": { "APIFOX_ACCESS_TOKEN": "..." } } } }
Enable all three in Settings → Tools & MCP. Each shows green (“3 tools enabled”).
Open a workspace, look at ~/.cursor/projects//mcps/.
Only ONE folder user-_-API exists, instead of three.
Logs
2026-05-13 09:54:32.413 [info] CreateClient completed, server stored: true
identifier=“user-甲平台 - API 文档”
2026-05-13 10:00:11.585 [info] Successfully connected to stdio server
identifier=“user-甲平台 - API 文档”
2026-05-13 10:00:11.585 [info] CreateClient completed, server stored: true
Both stdio processes start successfully, but on disk only one survives:
$ ls ~/.cursor/projects//mcps/
plugin-context7-plugin-context7
user--API ← single folder shared by 3 enabled servers
$ cat ~/.cursor/projects//mcps/user–API/SERVER_METADATA.json
{
“serverIdentifier”: “user-甲平台 - API 文档”,
“serverName”: “甲平台 - API 文档”
}
The agent’s CallMcpTool only resolves to whichever server happened to win the race; calling tools meant for the other servers fails with “tool not found”.
Root Cause Hypothesis
Folder name appears to be derived by:
Replace any non [A-Za-z0-9-] char with _
Collapse consecutive _ There is no uniqueness guarantee (e.g. no project-id hash or numeric suffix on collision).
Sanitized examples (all collapse to the same folder):
user-甲平台- API 文档 → user--API
user-乙平台 - API 文档 → user–API
user-丙平台 - API 文档 → user--API
user-丁平台 - API 文档 → user–API
Workaround
Add an English-letter prefix to each colliding key (e.g. Metric-甲平台 - API 文档). Then completely quit Cursor (not just Reload Window) and reopen.
Suggested Fix
Append a short hash of the original identifier (or the project-id) to the sanitized folder name to guarantee uniqueness, e.g. user-_-API-7621063.
Operating System
MacOS
Version Information
Version: 2.6.22
VSCode Version: 1.105.1
Commit: c6285feaba0ad62603f7c22e72f0a170dc8415a0
Date: 2026-03-27T15:59:31.561Z
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 23.5.0
Does this stop you from using Cursor
Sometimes - I can sometimes use Cursor