MCP tools missing after latest Cursor update (works in 2.3.34)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

After updating Cursor to the latest version, MCP tools stopped appearing visible to the agent, even though the MCP server shows green/connected. Downgrading to Cursor 2.3.34 restores MCP tools. The exact in‑between version that introduced the regression is unknown.

Known Good Version
Version: 2.3.34
VSCode Version: 1.105.1
Commit: 643ba67cd252e2888e296dd0cf34a0c5d7625b90

Broken Version
2.3.41

Steps to Reproduce (macOS)

  1. Install Cursor 2.3.34.

  2. Install Qt Creator.

  3. Clone this repo:

    GitHub - davecotter/Qt-Creator-MCP-Plugin: A plugin for Qt Creator that implements Model Context Protocol, allowing AI to talk to the IDE

  4. Build the plugin using the build script (repo is meant to be built via Cursor AI):
    python3 build_main.py

  5. The build script launches Qt Creator with the new Qt MCP Plugin installed.

  6. Configure Cursor MCP with this config in ~/.cursor/mcp.json:
    { “mcpServers”: { “qt-creator”: { “url”: “http://localhost:3001” } } }

  7. Start a new chat/context.

  8. Ask: “is the qt mcp plugin responding”

  9. ← affirmative response

  10. Upgrade Cursor to latest.

  11. Ask again: “is the qt mcp plugin responding”

  12. ← negative response

Expected Behavior

affirmative response

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.3.41
VSCode Version: 1.105.1
Commit: 2ca326e0d1ce10956aea33d54c0e2d8c13c58a30

For AI issues: which model did you use?

gpt 5.2 codex

Does this stop you from using Cursor

No - Cursor works, but with this issue

2 Likes

Hey, thanks for the detailed report. This is a known issue in version 2.3.41. MCP servers connect, but the agent can’t see the tools.

The team is aware of it. I added your report about the Qt Creator MCP Plugin to the ticket to increase visibility.

1 Like

Looking forward to the fix. I’m also experiencing this same issue.

Same here

link to the bug ticket? i’d like to track it as i am REALLY invested

The issue I guess it’s caused by prompt or base function. In my dialog, llm can get mcp. But it cannot list them. I had to list all tool manuelly. I’ve printed the mcp stream, it showed each request was answered rightly. It’s unable to attach the log file so I just put a part of them here.


[2026-01-19 16:29:47.224] READ_ASYNC: {“method”:“notifications/initialized”,“jsonrpc”:“2.0”}

[2026-01-19 16:29:47.225] WRITE_ASYNC_MEMORY: Completed writing 243 bytes
[2026-01-19 16:29:47.225] READ_ASYNC_MEMORY: Read 55 bytes
[2026-01-19 16:29:47.226] FLUSH_ASYNC: Starting async flush
[2026-01-19 16:29:47.227] READ_ASYNC_MEMORY: Reading up to 4096 bytes into Memory
[2026-01-19 16:29:47.228] FLUSH_ASYNC: Async flush completed
[2026-01-19 16:29:47.229] READ_ASYNC: {“method”:“resources/list”,“jsonrpc”:“2.0”,“id”:1}
{“method”:“tools/list”,“jsonrpc”:“2.0”,“id”:2}

[2026-01-19 16:29:47.229] READ_ASYNC_MEMORY: Read 98 bytes
[2026-01-19 16:29:47.230] READ_ASYNC_MEMORY: Reading up to 4096 bytes into Memory
[2026-01-19 16:29:47.234] WRITE_ASYNC_MEMORY: Writing 52 bytes from ReadOnlyMemory
[2026-01-19 16:29:47.235] WRITE_ASYNC_MEMORY_CONTENT: {“jsonrpc”:“2.0”,“id”:1,“result”:{“resources”:
}}

[2026-01-19 16:29:47.236] WRITE_ASYNC_MEMORY: Completed writing 52 bytes
[2026-01-19 16:29:47.236] FLUSH_ASYNC: Starting async flush
[2026-01-19 16:29:47.237] FLUSH_ASYNC: Async flush completed
[2026-01-19 16:29:47.246] WRITE_ASYNC_MEMORY: Writing 3196 bytes from ReadOnlyMemory
[2026-01-19 16:29:47.247] WRITE_ASYNC_MEMORY_CONTENT: {“jsonrpc”:“2.0”,“id”:2,“result”:{“tools”:[{“name”:“open_setting_manager”,“description”:“Open JiraAndP4SettingManager to configure Jira/Confluence credentials”,“inputSchema”:{“type”:“object”,“properties”:{},“required”:
,“additionalProperties”:false}},{“name”:“set_confluence_url”,“description”:“Set Confluence server URL (credentials are managed by JiraAndP4SettingManager)”,“inputSchema”:{“type”:“object”,“properties”:{“serverUrl”:{“type”:“string”,“description”:“Confluence server URL (e.g., https://wiki.garena.com)”}},“required”:
,“additionalProperties”:false}},{“name”:“search_pages_by_title”,“description”:“Search Confluence pages by title containing specific text”,“inputSchema”:{“type”:“object”,“properties”:{“titleText”:{“type”:“string”,“description”:“Text to search for in page titles”},“spaceKey”:{“type”:“string”,“description”:“Optional space key to limit search (e.g., \u0022DEV\u0022, \u0022PROD\u0022). If empty, searches all spaces”},“limit”:{“type”:“number”,“description”:“Maximum number of results to return (default: 25)”}},“required”:
,“additionalProperties”:false}},{“name”:“get_page_content”,“description”:“Get full content of a Confluence page by ID”,“inputSchema”:{“type”:“object”,“properties”:{“pageId”:{“type”:“string”,“description”:“The ID of the page to retrieve”}},“required”:
,“additionalProperties”:false}},{“name”:“search_pages_with_content”,“description”:“Search pages by title and return with full content”,“inputSchema”:{“type”:“object”,“properties”:{“titleText”:{“type”:“string”,“description”:“Text to search for in page titles”},“spaceKey”:{“type”:“string”,“description”:“Optional space key to limit search. If empty, searches all spaces”},“limit”:{“type”:“number”,“description”:“Maximum number of results to return (default: 10)”}},“required”:
,“additionalProperties”:false}},{“name”:“get_confluence_image”,“description”:“Download and return Confluence image as base64 encoded data”,“inputSchema”:{“type”:“object”,“properties”:{“imageUrl”:{“type”:“string”,“description”:“Complete image URL or relative URL from Confluence (e.g., /download/attachments/123/image.png)”}},“required”:
,“additionalProperties”:false}},{“name”:“get_confluence_status”,“description”:“Get current Confluence configuration and connection status”,“inputSchema”:{“type”:“object”,“properties”:{},“required”:
,“additionalProperties”:false}},{“name”:“download_page_html”,“description”:“Download Confluence page HTML to a temporary file for editing”,“inputSchema”:{“type”:“object”,“properties”:{“pageId”:{“type”:“string”,“description”:“The ID of the page to download”},“outputPath”:{“type”:“string”,“description”:“Optional custom output path. If not provided, saves to system temp directory”}},“required”:
,“additionalProperties”:false}},{“name”:“upload_page_html”,“description”:“Upload HTML content from a file to update a Confluence page”,“inputSchema”:{“type”:“object”,“properties”:{“pageId”:{“type”:“string”,“description”:“The ID of the page to update”},“htmlFilePath”:{“type”:“string”,“description”:“Path to the HTML file containing the new content”},“comment”:{“type”:“string”,“description”:“Optional version comment/message”}},“required”:
,“additionalProperties”:false}}]}}

[2026-01-19 16:29:47.248] WRITE_ASYNC_MEMORY: Completed writing 3196 bytes
[2026-01-19 16:29:47.249] READ_ASYNC: {“method”:“prompts/list”,“jsonrpc”:“2.0”,“id”:3}

[2026-01-19 16:29:47.250] READ_ASYNC_MEMORY: Read 49 bytes
[2026-01-19 16:29:47.251] FLUSH_ASYNC: Starting async flush
[2026-01-19 16:29:47.252] READ_ASYNC_MEMORY: Reading up to 4096 bytes into Memory
[2026-01-19 16:29:47.252] FLUSH_ASYNC: Async flush completed
[2026-01-19 16:29:47.255] WRITE_ASYNC_MEMORY: Writing 580 bytes from ReadOnlyMemory
[2026-01-19 16:29:47.256] WRITE_ASYNC_MEMORY_CONTENT: {“jsonrpc”:“2.0”,“id”:3,“result”:{“prompts”:[{“name”:“confluence_search_guide”,“title”:“\u6587\u6863\u641C\u7D22\u6307\u5357”,“description”:“\u6309\u6807\u9898\u3001\u5185\u5BB9\u3001\u7A7A\u95F4\u641C\u7D22\u6587\u6863”},{“name”:“confluence_content_editing”,“title”:“\u5185\u5BB9\u7F16\u8F91\u6700\u4F73\u5B9E\u8DF5”,“description”:“\u4E0B\u8F7D\u3001\u7F16\u8F91\u3001\u4E0A\u4F20\u6587\u6863\u6D41\u7A0B”},{“name”:“confluence_page_management”,“title”:“\u9875\u9762\u7BA1\u7406\u6307\u5357”,“description”:“\u83B7\u53D6\u9875\u9762\u5185\u5BB9\u3001\u9644\u4EF6\u7BA1\u7406”}]}}

[2026-01-19 16:29:47.257] WRITE_ASYNC_MEMORY: Completed writing 580 bytes
[2026-01-19 16:29:47.257] FLUSH_ASYNC: Starting async flush
[2026-01-19 16:29:47.258] READ_ASYNC: {“method”:“resources/list”,“jsonrpc”:“2.0”,“id”:4}