Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
A server defined in a project’s .cursor/mcp.json is never listed in Customize → MCPs, under any entry of the scope dropdown, even while that server is connected and the agent is successfully calling its tools.
The identical server defined in ~/.cursor/mcp.json does appear, so the page works for user scope and fails for project scope.
There is no second surface to cross-check — “Tools & MCP” no longer exists in 3.15.6 — so for a project-scoped server the user has no in-product way to see it, check its status, or open its config.
Steps to Reproduce
- Add a server to
~/.cursor/mcp.jsonand restart Cursor:
{ "mcpServers": { "demoServer": { "url": "http://127.0.0.1:9001/mcp/" } } }
- Open Customize → MCPs. The server is listed. (Works as expected.)
- Remove it from
~/.cursor/mcp.json, put the exact same entry in<project>/.cursor/mcp.json, and restart Cursor. - Confirm the server is live:
%APPDATA%\Cursor\logs\<latest>\window1\workbench.mcp.files.logshowscreateClient ... statusType=initializing, success=true,mcpprocess.logshowsSuccessfully connected to streamableHttp server, and the agent can list and call its tools in chat. - Open Customize → MCPs and step through every entry in the scope dropdown (the user scope and each workspace folder, including the folder that owns the config).
Expected Behavior
The server appears under its owning folder’s scope, with its status and a way to open its config file — the same way the user-scope copy did in step 2.
Actual Behavior
Every scope shows the generic “Connect External Tools with MCP” empty state, including the folder that owns the config. The server is connected and serving tools the entire time.
The row also exists in Cursor’s own persisted snapshot for the workspace. workbench.customize.primitiveSourceSnapshot.mcps.v3 in workspaceStorage/<id>/state.vscdb contains the following, written while the server was connected (name and path replaced with the placeholders used above):
{"kind":"mcp","name":"demoServer","filePath":"...\\.cursor\\mcp.json","scope":"project","sourceLabel":"project","isWorkspaceViewable":true}
So the entry is present, correctly scoped, and flagged isWorkspaceViewable: true — and still never appears on the page.
Worth noting the data appears to reach the UI layer: getMcpDescriptorSources() enumerates mcpService.allServers() — the same list the agent’s tools come from — keeps both user and project scoped entries, and resolves each one’s config path via a folderToKey lookup that succeeds for this server. Since the user-scope path renders and the project-scope path does not, the row looks like it is being dropped by project-specific filtering at render time rather than missing from the source data.
Additional Notes
Observed in a multi-root workspace (a .code-workspace with three folders). I have not confirmed whether a single-folder window behaves the same, so that is worth checking during triage.
Operating System
Windows 10/11
Version Information
Version: 3.15.6 (user setup)
VS Code Extension API: 1.128.0
Commit: a1f686545fd0ce8917bbd2449f733551a9bce420
Date: 2026-08-06T01:41:03.876Z
Layout: IDE
Build Type: Stable
Release Track: Default
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.291
OS: Windows_NT x64 10.0.26200
Does this stop you from using Cursor
No - Cursor works, but with this issue