How to Add an MCP Server to ChatGPT, Claude Desktop, and Cursor
Add an MCP server to ChatGPT, Claude Desktop, and Cursor step by step: the exact menus, the transport and auth each client expects, and why ChatGPT rejects a local URL.

On this page
- What you need before you start
- How to connect an MCP server to ChatGPT
- How to add a Claude Desktop custom connector
- Cursor mcp.json: add a remote server in one file
- Which transport and auth do these clients expect?
- Why does ChatGPT say it cannot use my MCP server?
- What can a connected MCP server do inside a chat?
- MCP client setup FAQ
Terms, definedthe jargon, decoded
- MCP
- Model Context Protocol. An open standard that lets a chat client or coding agent discover a server's tools and call them without being hardcoded against each one.
- MCP server
- A process that advertises a list of tools over MCP and runs them on request. It can live on your own machine or on a host somewhere else.
- Remote MCP server
- An MCP server reachable over HTTPS at a public URL, which is the only kind ChatGPT's web app and Claude's custom connectors accept.
- Streamable HTTP
- The current HTTP transport for remote MCP servers, and the option the ChatGPT desktop app's form wants for one.
- SSE
- Server-sent events. The earlier HTTP transport for remote MCP servers, superseded by Streamable HTTP in the protocol specification but still offered by some servers.
- stdio
- The local transport: the client launches the server as a process on your machine and talks to it over standard input and output. Nothing to authenticate, nothing remote.
- OAuth
- The browser sign-in flow a client uses to get a token for a remote server: you approve once, the client stores the token and refreshes it.
- Developer mode
- OpenAI's setting that lets a ChatGPT web account create apps from custom MCP endpoints, found under Settings, Apps, Advanced settings for the accounts it documents.
- Custom connector
- Anthropic's name for a remote MCP server you add to Claude yourself, as opposed to a connector Anthropic ships.
- Tool scan
- The step where a client reads the server's tool list before saving it; ChatGPT's Apps form calls it Scan Tools.
To add an MCP server to ChatGPT, Claude Desktop, or Cursor you need the same three things and three different screens. Here are the exact menu names as the vendors document them as of September 2026; every plan or eligibility fact is the vendor's, never asserted here.
What you need before you start
Three things: a server the client can reach, an account the vendor lets in (the table below quotes the vendors on plans), and a way to authenticate.
A remote MCP server, reachable over HTTPS
An MCP server advertises tools and runs them on request, as a local process (stdio) or as a remote MCP server behind an HTTPS URL. ChatGPT's web app connects only to remote servers, per OpenAI's developer mode article; a laptop server needs what the article calls a Secure MCP Tunnel. Claude's custom connectors are remote by definition, per Anthropic's help page. Cursor takes both. So the URL that works everywhere is a public https:// endpoint, usually ending in /mcp; whether it should be an MCP server at all is a separate decision.
MCP authentication: OAuth or a token
Remote servers need to know who is calling: with OAuth the client opens your browser, you approve once, and it keeps a refreshable token; with a static credential you paste a bearer token into the client's config. All three clients support the browser flow, so try it first; the server decides which it wants.
How to connect an MCP server to ChatGPT
ChatGPT MCP client support comes in two surfaces that look nothing alike: the desktop app keeps servers under Plugins, the web app under Apps behind developer mode. OpenAI's article documents the web surface; the desktop steps match the app's own screens, which this ChatGPT setup walkthrough shows filled in.
The ChatGPT MCP client on desktop: Plugins, then MCPs
- Open Settings, then Plugins under Integrations, and switch to the MCPs tab.
- Choose Add MCP server and name it.
- Pick Streamable HTTP, not STDIO, which is for a process ChatGPT launches on your machine.
- Paste the HTTPS URL, leaving the bearer token env var and both header tables empty for OAuth.
- Save, choose Authenticate on the new row, and approve the consent page in your browser.
If there is no MCPs tab, whether your account shows one is documented by OpenAI, not here. One distinction: OpenAI's "web only" answers the mobile question; the desktop app's Plugins, MCPs screen is a separate surface its article does not cover, so read neither as covering the other.
The ChatGPT MCP client on the web: Apps and developer mode
Everything here is from OpenAI's article as of September 2026.
- Turn on developer mode: Settings, then Apps, then Advanced settings (Pro accounts, Enterprise and Edu members); on a Business workspace only admins and owners can, from Workspace settings, Apps, Create.
- Open Apps and choose Create.
- Enter the endpoint and its metadata, then pick the auth method the server expects.
- Choose Scan Tools, completing the OAuth prompt if there is one.
- Choose Create. The app appears as a Draft with a Dev label.
Two more facts from the article: a server no longer needs search and fetch tools, and an approved app runs on a frozen snapshot of its tool list until an admin republishes.
How to add a Claude Desktop custom connector
Anthropic calls a remote MCP server a custom connector; one screen serves Claude Desktop and claude.ai, and the Claude Desktop page in these docs shows it filled in. Steps per the MCP project's remote-server guide and Anthropic's help article, as of September 2026.
- Press Ctrl+Comma, or open the menu icon, then File, then Settings.
- Choose Connectors in the sidebar, then Add at the top right (Anthropic words it Customize, Connectors, then the plus button).
- Choose Add custom connector and paste the remote server URL. Advanced settings takes an OAuth Client ID and Secret, both optional.
- Choose Add and complete the authentication prompt in your browser.
- Set the connector's tool permissions: per tool, what Claude may call without asking.
Anthropic adds three warnings: connect only servers you trust, expect prompt injection through what a tool returns, and disable write tools during Research. On Team and Enterprise only Owners add custom connectors (Organization settings, Connectors, Add, Custom, Web), and each member then clicks Connect to authenticate as themselves.
Cursor mcp.json: add a remote server in one file
Cursor keeps MCP servers in a file, not a form. Per Cursor's MCP docs as of September 2026, that file is .cursor/mcp.json in a project (that project only) or ~/.cursor/mcp.json in your home directory (every project). A remote server is an entry under mcpServers with a url:
{
"mcpServers": {
"example-tools": {
"url": "https://example.com/mcp"
}
}
}Save it and Cursor picks it up; a server that uses OAuth completes sign-in through Cursor's OAuth callback, so try that first. For a static credential, add "headers": { "Authorization": "Bearer <your token>" } to the entry and keep the real value in the global file, not a shared repository. The docs also describe an optional auth block (CLIENT_ID, CLIENT_SECRET, scopes) for a fixed OAuth client.
Which transport and auth do these clients expect?
| Client | Where to add it | Transport | Auth | Local servers? | Plan notes |
|---|---|---|---|---|---|
| ChatGPT web (Apps) | Apps, Create, with developer mode on | Remote HTTP endpoint | Picked before Scan Tools | No: needs a Secure MCP Tunnel | OpenAI, Sep 2026: write actions in beta for Business, Enterprise, Edu; Pro read and fetch; web only |
| ChatGPT desktop (Plugins) | Settings, Plugins, MCPs, Add MCP server, then Authenticate on the row | Streamable HTTP for a remote server | Browser consent; bearer token env var as fallback | STDIO option for a process on your machine | Not in OpenAI's developer mode article as of Sep 2026; whether your account shows the MCPs tab is OpenAI's to document |
| Claude Desktop, claude.ai | Settings, Connectors, Add custom connector | Remote MCP over HTTP | Browser OAuth; optional Client ID and Secret | No: remote by definition | Anthropic, Sep 2026: Free, Pro, Max, Team, Enterprise; Free limited to one; Owners add on Team and Enterprise |
| Cursor | mcp.json in .cursor/ (project) or ~/.cursor/ (global) | A url entry | Browser OAuth first; headers or auth otherwise | Yes | A file on disk; no plan step |
Why does ChatGPT say it cannot use my MCP server?
Five causes cover most reports, each from OpenAI's article or the form.
- The URL is local. The web app connects to remote servers only; OpenAI's answer for a laptop server is its Secure MCP Tunnel.
- Developer mode is off, or your account lacks it. Apps, Create needs it, and OpenAI ties it to account type and role; on Business only an admin or owner can turn it on.
- You are on mobile. The article says MCP apps are web only.
- The tool list is stale. An approved app runs on a frozen snapshot of its tools until an admin republishes.
- The token expired. OpenAI tells server authors to issue refresh tokens by supporting
offline_access; a server that does not forces re-authentication, which reads like "cannot use" from the chat side.
Two more are not ChatGPT's doing: the server is down, or the desktop form was given STDIO instead of Streamable HTTP.
What can a connected MCP server do inside a chat?
Read, and with confirmation, write. On ChatGPT web, OpenAI's article says a write action prompts for confirmation, agent mode will not use custom apps, and deep research uses them read-only. Claude sets permissions per tool and recommends disabling write tools during Research. Cursor asks for approval before using an MCP tool by default, per its MCP docs as of September 2026, and its Auto-review run mode runs allowlisted tools immediately; either way, expose fewer write tools, or none, to a coding agent.
The vendors' warnings apply everywhere: connect only servers you trust, and treat every tool result as untrusted input, because a server returns text the model reads as if you had typed it. Prompt injection through a tool result is the standard attack on a connected agent; our post on prompt injection in agents has the containment checklist. Keep write tools off until the read tools have behaved, and never paste a real credential into a shared file.
Behind the URL can sit a thin wrapper over a database or a whole hosted service; a rented Expert on Askpert is one example of the second kind, and the client pages under Connect your agent walk the same screens.
MCP client setup FAQ
Can I use MCP in ChatGPT?
Yes, on two surfaces. The desktop app lists MCP servers under Settings, Plugins, MCPs, where Add MCP server takes a name, a transport and a URL. On the web, OpenAI's developer mode (Settings, Apps, Advanced settings) creates an app from a remote MCP endpoint. Which surface and plan your account has is OpenAI's to document.
How do I connect a custom MCP server to ChatGPT?
Host it on a public HTTPS URL first; the web app does not connect to localhost. Desktop: Settings, Plugins, MCPs tab, Add MCP server, Streamable HTTP, paste the URL, save, Authenticate in the browser. Web, with developer mode on: Apps, Create, enter the endpoint, pick the auth method, Scan Tools, Create.
Does ChatGPT support MCP servers on mobile?
No, according to OpenAI's developer mode article as of September 2026, which answers the mobile question with "web only". That covers the phone and tablet apps; the desktop app's Plugins, MCPs screen is a separate surface the article does not cover, so it is not what the mobile answer describes.
How do I add a remote MCP server to Claude Desktop?
Press Ctrl+Comma, or open the menu, then File, then Settings. Choose Connectors, then Add, then Add custom connector, paste the remote server URL, and choose Add. Advanced settings takes an OAuth Client ID and Secret only if the server issued them. Complete the browser prompt, then set per-tool permissions.
Where does Cursor look for mcp.json?
In two places, per Cursor's MCP docs: .cursor/mcp.json inside a project (that project only) and ~/.cursor/mcp.json in your home directory (every project). A remote server is an entry under mcpServers with a url, plus an optional headers block for a static credential. Keep real tokens out of shared repositories.
Do I need OAuth to connect an MCP server?
Not always, but it is the flow all three clients try first: the client opens your browser, you approve once, and it stores a refreshable token. For a static credential, ChatGPT's desktop form has a bearer token env var field, Cursor takes a headers block, and Claude accepts an optional Client ID and Secret.