Cursor MCP servers: how to add one and connect your apps

Add an MCP server to Cursor with mcp.json, a plugin or an install link, sign in with OAuth, and connect Gmail, Slack and Calendar with access you control.

Updated

Short answer

Cursor reaches other apps through MCP servers. Add a remote one to ~/.cursor/mcp.json as {"mcpServers":{"name":{"url":"https://…"}}}, then click Connect next to it under Customize › MCPs to sign in. Or install a plugin from the Cursor Marketplace, which bundles a server with its sign-in. Cursor now has plugins for Gmail, Google Calendar, Outlook and Slack, each signing in on its own. Upsy is one server for all of them, with several accounts per app and the access you choose.

How to add an MCP server to Cursor

Cursor reads two files and merges them. On a name clash, the project's entry wins (Cursor docs).

File Loads in Good for
~/.cursor/mcp.json Every project Your own email, calendar and Slack
.cursor/mcp.json in the repo That project, for everyone who clones it A team's dev tools; each person signs in on their own

A remote server needs only its address. Cursor works out the transport from url or command:

{
  "mcpServers": {
    "upsy": { "url": "https://upsy.ai/connect" },
    "my-api": {
      "url": "https://api.example.com/mcp",
      "headers": { "Authorization": "Bearer ${env:MY_API_TOKEN}" }
    }
  }
}

${env:NAME} keeps a token out of the file. A local server uses command and args instead, such as "command": "npx", "args": ["-y", "some-mcp-server"].

Then open Customize in Cursor's sidebar and find the server under MCPs. In older versions it's under Cursor Settings › Tools & MCP. A server that uses OAuth shows Needs login with a Connect button: click it, sign in in the browser, and Cursor picks up the token on localhost:8787. It refreshes the token itself.

Two other ways in:

  • A plugin. Open the Cursor Marketplace from Customize, or type /add-plugin slack in Agent chat. A plugin bundles a server with skills or rules, and Cursor reviews each one (plugins docs).
  • An install link. Server authors publish links like cursor://anysphere.cursor-deeplink/mcp/install?name=…&config=…, where config is the server's JSON in base64 (install links). Clicking one adds the server for you.

Every Cursor surface uses MCP, with a few differences:

Where How it gets servers What to know
Editor and Agent Window Both mcp.json files and installed plugins The main place to connect and sign in
Cursor CLI (agent) The same mcp.json files Sign in with agent mcp login <name> or /mcp. Its sign-ins are separate from the editor's (CLI docs)
Cloud Agents The MCP menu at cursor.com/agents, or Team MCPs Remote HTTP servers recommended; you sign in again for the cloud (Cloud Agent docs)

What Cursor connects to natively

The Cursor Marketplace lists about 490 plugins. The ones for everyday apps:

App Plugin What it uses and what to know
Gmail Yes, since August 2026 Google's Gmail MCP server: searches, reads, labels and drafts. It has no send tool and no attachment download (Google's tool list)
Google Calendar, Drive Yes Google's own servers. Docs, Sheets and Slides plugins need Cursor 3.22 or later
Outlook, Outlook Calendar, Teams, OneDrive Yes Cursor's own servers on Microsoft's APIs; need Cursor 3.19 or later
Slack Yes, Slack's own Slack's MCP server. A workspace admin has to approve it
GitHub, Linear, Notion, Sentry, Figma, Atlassian Yes Each vendor's own server, with its own sign-in

Separate from MCP, Cursor's Slack, Linear and GitHub integrations work the other way: you mention @Cursor in Slack or Linear to start a Cloud Agent. They don't give the agent in your editor access to those apps.

What's missing

  • Sending email from Gmail. Cursor's Gmail plugin can draft but not send, since Google's server has no send tool. It can't open attachments either.
  • More than one account. Each plugin signs in to one account: one Gmail, one Slack workspace.
  • The CLI and Google. The CLI keeps its own plugin sign-ins, and as of October 2026 it couldn't sign in to the Google Calendar plugin at all (Cursor forum).
  • Sign-ins in worktrees. Windows opened on a git worktree lose OAuth sign-ins and ask again, a known bug as of late September (Cursor forum).
  • One place to control and review. Every plugin signs in separately. Nothing limits a server to read-only, and nothing shows what Cursor did across apps, or carries the same setup to Claude Code or Codex.

Control what Cursor runs

Cursor asks before running MCP tools unless you change its run mode under Cursor Settings › Agents › Approvals & Execution (run modes):

Run mode What happens
Auto-review (default) Allowlisted tools run; Cursor's classifier reviews the rest
Allowlist Only allowlisted tools run without asking
Run Everything Every call runs without asking

To allow some tools in every project, list them in ~/.cursor/permissions.json as server:tool, with * as a wildcard (permissions):

{ "mcpAllowlist": ["upsy:search_threads", "upsy:get_message", "upsy:calendar_*"] }

Cursor's run mode controls prompts. It doesn't stop a tool from existing: with Upsy, a tool you didn't allow for Cursor isn't listed at all.

How Upsy fills the gap

Upsy is one remote MCP server at https://upsy.ai/connect:

  • Your apps in one server: Gmail with sending and attachments, Google Calendar, Google Drive with Docs and Sheets, Slack and Zoho Mail. Linear, Notion, Atlassian, Sentry and other services connect through their own MCP servers, with their own sign-in, and Cursor reaches them with three tools: app_tools, app_read and app_call.
  • A short tool list. Cursor sees only the tools you allowed it, and apps behind app_call don't add a definition each, which matters for models with a tool cap.
  • Up to five accounts per app, such as work and personal Gmail. The tools take an account argument.
  • Access per assistant: Full access, Read-only, Pick actions (the tools you choose) or No access, enforced by Upsy, not by a prompt.
  • History and alerts: every action is logged under Cursor, and Upsy emails you when one assistant deletes, sends or reads a lot at once.
  • One setup for every assistant: the same connections work in the editor, the CLI, Claude Code, Codex, Claude and ChatGPT, each with its own access.
  • Memory, files and a cloud browser that's signed in to your sites. Upsy's Outlook connector is pending until Microsoft approves Upsy; until then, Cursor can use outlook.com in that browser.

If you only need GitHub or Linear in one repo, the vendor's own plugin is simpler. For Slack, see connect Slack to Cursor, which covers when Slack's own plugin is the better fit.

Add Upsy to Cursor

  1. Sign up free at upsy.ai and connect your apps under Apps.

  2. Add Upsy to ~/.cursor/mcp.json, or click Add Upsy to Cursor to have Cursor add it:

    {"mcpServers":{"upsy":{"url":"https://upsy.ai/connect"}}}
    
  3. In Cursor, open Customize › MCPs and click Connect next to upsy. On the Upsy page that opens, sign in, choose what Cursor can use and click Allow.

  4. Ask the agent: "Use upsy to list my next three calendar events."

There's no API key: Cursor registers itself with Upsy's OAuth server and refreshes its tokens. For the CLI, run agent mcp login upsy once. For Cloud Agents, add the same address in the MCP menu at cursor.com/agents and sign in there.

Troubleshooting

The server shows "Needs login" but nothing opens

Click Connect again and watch for a browser tab. If none opens, or Cursor keeps waiting after you sign in, update Cursor and try once more. The Output panel's MCP Logs channel shows what failed.

A server is missing from Customize

In a multi-root workspace, Cursor may skip a folder's .cursor/mcp.json. Open the project folder on its own, or move the server to ~/.cursor/mcp.json.

"Too many MCP tools are enabled for this model"

That's the model's cap, not Cursor's. Turn off servers or tools you don't use under Customize, or pick a model with a higher cap.

Cursor asks to sign in again in every worktree

A known Cursor bug. Sign in once per worktree window until it's fixed, or use the main window.

FAQ

Where is mcp.json in Cursor?

~/.cursor/mcp.json for every project, and .cursor/mcp.json in a repo for that project. Create the file if it isn't there.

Does Cursor support remote MCP servers with OAuth?

Yes. Cursor supports Streamable HTTP and SSE servers, OAuth with dynamic client registration, and refresh tokens. A server's Connect button starts the sign-in.

Is there an MCP tool limit in Cursor?

Cursor dropped its old cap of 40 tools and now loads tool descriptions as it needs them (Cursor blog). Some models still cap how many tools a request can carry, and Cursor shows "Too many MCP tools are enabled for this model" when you pass it.

Can the Cursor CLI use MCP servers?

Yes. The agent CLI reads the same mcp.json files. Run agent mcp list to see them and agent mcp login <name> to sign in.

Which MCP servers are best for Cursor?

For code: GitHub, Linear or Jira, Sentry, and Figma, each from its vendor's plugin. For your own email, calendar and Slack, one server like Upsy saves a sign-in per app and keeps the access in one place.

Guides