How to Add a Remote MCP Server to Cursor
Where Cursor keeps its MCP settings after the 3.9 move to Customize, the config that connects a remote server over Streamable HTTP, and the two failures that account for most broken connections.
Last verified September 15, 2026
How do I add a remote MCP server to Cursor?
Open Customize from the Cursor sidebar, find the MCP section, and add the server with its URL. On Cursor 3.9 and later that is where MCP servers live; older builds keep the same controls under Cursor Settings. Remote servers connect over native Streamable HTTP, so there is nothing to install in between, and because Cursor supports dynamic client registration, it triggers the browser authorization on its own the first time it connects — there is no token to paste.
Where the setting actually lives
Cursor consolidated MCP servers, plugins, skills, and rules into a single Customize page in version 3.9, released June 2026. Before that, the same controls sat under Cursor Settings.
That move is a common reason a setup walkthrough stops matching what is on screen. If your sidebar has no Customize entry, you are on an older build — updating Cursor is the reliable way to land on the layout this guide describes. You can also skip the UI entirely and edit mcp.json by hand, which works on every build.
The config
Cursor reads remote servers from an mcpServers object, keyed by the name you want the server to appear under, with a url field:
{
"mcpServers": {
"my-server": {
"url": "https://mcp.example.com/mcp"
}
}
}
That block goes in .cursor/mcp.json in your project, or ~/.cursor/mcp.json to make the server available everywhere. Cursor merges both, and the project file wins where they overlap. A remote server needs no command and no arguments; Cursor connects over native Streamable HTTP with no proxy in between.
Worth knowing if you are moving between editors: url is the right key here, but the shape is not universal. VS Code nests servers under a servers root key rather than mcpServers; Gemini CLI and Qwen Code want httpUrl for Streamable HTTP, treating plain url as legacy SSE; and Antigravity specifies serverUrl. Devin Desktop (formerly Windsurf) accepts either serverUrl or url, so that one is more forgiving than it is often described. Copying a working Cursor block into another editor is still a reliable way to produce a server that saves cleanly and never appears — check the target's own key names first.
Authorization
When Cursor first connects to the server, it triggers that server's authorization flow in your browser. Approve the request and setup is complete.
Cursor supports dynamic client registration, so this is zero-config: Cursor registers itself and there is no token to paste.
What usually goes wrong
| Symptom | Cause and fix |
|---|---|
| Can't find where to add an MCP server | Cursor moved this to Customize in the sidebar in version 3.9 (June 2026). On older builds, look under Cursor Settings instead. |
| The connection drops during a long session | Retry the tool call first — Cursor isolates server failures, so everything else keeps working. If it keeps failing, check MCP Logs in the Output panel (Cmd+Shift+U), then remove the server under Customize and add it back. |
| "Unauthorized" error | The authorization expired rather than the connection dropping. Re-authorize with the server and the OAuth flow will issue fresh tokens. |
The middle row is the one people misread. A dropped connection in a long session is not a broken config — Cursor's per-server isolation means you will see one server go quiet while everything else keeps working. MCP Logs in the Output panel will tell you what that one server reported, which saves you from rewriting a config that was never wrong.
A worked example
To make the above concrete, here is what it looks like with a real server. Tempreon is a hosted MCP server that gives whichever AI tool you are working in a persistent memory of how you work, so the example is a single URL with no credentials:
{
"mcpServers": {
"tempreon": {
"url": "https://api.tempreon.com/functions/v1/tempreon-mcp/mcp"
}
}
}
Add that under Customize, and Cursor opens a browser tab to approve the connection the first time it connects. There is also a one-click install link and a full account-holder walkthrough in the Cursor setup doc.
Any other MCP server follows the same shape — swap the name and the URL.
Sources
The dated claims on this page were checked against these vendor documents. Client UIs move constantly, so if one of these has changed since the date shown, trust the vendor over this page — and tell us.
- Model Context Protocol (MCP) — Cursor Docs — read 2026-09-15
- Customize Cursor — Cursor changelog (3.9, Jun 22 2026) — read 2026-09-15
Frequently asked questions
- Where is the MCP setting in Cursor?
- Open Customize from the Cursor sidebar and choose MCPs. That is where Cursor manages MCP servers as of version 3.9, released 22 June 2026, alongside plugins, skills, subagents, rules, commands, and hooks. If there is no Customize entry in your sidebar, you are on an older build: update Cursor, or skip the UI and edit mcp.json directly, which works on every build. Cursor reads .cursor/mcp.json in your project and ~/.cursor/mcp.json globally.
- Do I need a proxy or a special transport to use a remote MCP server in Cursor?
- No. Cursor connects to remote MCP servers over native Streamable HTTP, with no proxy or shim in between. You add the server with its URL, and Cursor triggers the browser authorization by itself the first time it connects.
- My MCP connection dropped partway through a long Cursor session. How do I fix it?
- Cursor marks the failed tool call and leaves your other servers running, so start by retrying. If it keeps failing, open the Output panel with Cmd+Shift+U and select MCP Logs to see what the server reported. Cursor's own fix for a stuck server is to remove it under Customize and add it back, and to restart Cursor after any edit to mcp.json. If the log says the request was unauthorized, the authorization expired rather than the connection dropping, so re-authorize with the server and the OAuth flow will issue fresh tokens.