Feature request for product/service
Cursor IDE
Describe the request
VS Code has APIs that allow extensions to register MCP servers and tools (lm.registerMcpServerDefinitionProvider and lm.registerTool). These APIs are more flexible than only supporting them in a JSON file because:
- The extensions are only activated when certain criteria are met, so an extension like Dart can register the MCP server such that it’s only started when a Dart project is open. With mcp.json you either have to have it global (so it’ll be used even if you open Python projects, for example) or locally (which means duplicating in every project and raises questions about whether to commit)
- The servers can be dynamic based on the workspace. For example if you have multiple versions of the Dart/Flutter SDKs (because you may have different apps pinned to different versions), with the APIs the extension can register the MCP server from the correct version of the SDK being used within that workspace
- We don’t need to pick between using a command like “dart mcp-server” and hoping the user has
dartonPATH, or hard-coding a full path that might change (or be incorrect in the case of multiple versions)
It would be nice if Cursor supported these APIs, so users of extensions that use them just get automatic registration like they do in VS Code.
Related issues:
- Support VS Code's registerMcpServerDefinitionProvider() API · Issue #3549 · cursor/cursor · GitHub (I originally raised this on GH not realising it should be here)
- Wish for when I install Flutter VS Code extention into Cursor, it automatically sets up our MCP server inside of Cursor · Issue #273 · dart-lang/ai · GitHub (some discussion about having the Dart extension prompting to help register the Dart MCP, along with the trade-offs that come with doing it in the json)
PS. Your forum is difficult to use. Having registerMcpServerDefinitionProvider in the title caused the post to be rejected, and all of the text I posted except the first line was wiped. I’ve re-typed the above multiple times just while trying to post ![]()