The docs mention that deep links should work for installing MCP servers - but in the latest cursor version, it looks like it doesn’t work. Could we fix this?
Root cause confirmed. The link is fine; Cursor’s Customize migration broke the MCP deeplink install card.
The chain, all in workbench.desktop.main.js:
function LXf(e,t){ if(e===“mcp”) return {kind:“manage”, tab:“mcps”, scope:PXf(t?.mcpTarget)} … }
function NXf(e,t,n){
const i = LXf(t,n);
return i===undefined || getExperimentParam(“customize_migration”,“stage”) !== “full”
? false
: (cIe(e,i), true); // ← redirect to Customize, report “handled”
}
// aiSettings.action.open:
if (r!==undefined && NXf(t,r,…) || getContextKeyValue(“isSettingsPaneOpen”)) return;
You’re on customize_migration = full — your end-state screenshot is {kind:“manage”, tab:“mcps”}, the Customize → MCPs pane. So:
aiSettings.action.open(“mcp”) → NXf returns true → cIe() routes you to Customize, and run() returns early. The legacy AI-Settings MCP pane never opens.
mcp.deeplinkInstall still runs and sets proposedServer on MCPInstallationService.
But proposedServer_reactive has exactly one renderer in the entire bundle — oGi → AFb — and it’s mounted only in the legacy pane (J(oGi,{}) under h()===“status” || h()===“scope”). Customize doesn’t render it.
Nothing to fix on your side — file it against Cursor.