How to add an MCP server to ChatGPT
ChatGPT supports MCP through two paths — the Apps directory (one-click, any plan) and custom remote connectors (Developer Mode, paid plans). This guide walks both, end to end, with the gotchas surfaced inline so you don't waste an hour debugging a CORS error or a missing OAuth callback.
Plan availability at a glance
| Plan | Apps directory | Custom remote connectors |
|---|---|---|
| Free / Go | ✓ | — |
| Plus | ✓ | — |
| Pro | ✓ | ✓ |
| Team | ✓ | ✓ |
| Enterprise | ✓ | ✓ |
| Edu | ✓ | ✓ |
Apps directory currently available outside the EEA, Switzerland, and the UK. OpenAI is expanding regions over time.
Step-by-step
Pick your path
Decide whether you want a one-click directory app (Free / Go / Plus / Pro) or a custom remote connector (Pro / Team / Enterprise / Edu only). Directory apps are reviewed by OpenAI and install in one click via OAuth. Custom connectors are any other remote MCP server you point ChatGPT at — useful for hosted MCPs not in the directory (Notion's mcp.notion.com, Stripe's mcp.stripe.com, etc.).
For directory apps: visit chatgpt.com/apps
Browse to chatgpt.com/apps in any browser while signed in to your ChatGPT account. Pick the app you want, click Connect, and approve the OAuth handshake. The app is now available inside any chat — type the app name as a command (e.g. "Spotify, build me a playlist…") to invoke it.
For custom connectors: enable Developer Mode
In ChatGPT, click your avatar → Settings → Connectors. Scroll to the Advanced section and toggle Developer Mode on. ChatGPT will warn you that custom connectors run third-party code on your behalf — accept the warning to continue. Developer Mode requires ChatGPT Pro, Team, Enterprise, or Edu.
Add the custom connector
In Settings → Connectors, click Add custom connector. Provide a name, a description, and the server's remote HTTPS URL. The URL typically ends in /sse (server-sent events) or /mcp (HTTP streamable). Pick the auth method: OAuth 2.1 if the server supports it, otherwise an API key or none.
Use the connector in a chat
Open a new conversation, click the + icon in the composer, choose More, then Developer Mode, and pick your connector. ChatGPT will discover the server's tools and let you invoke them. Write actions surface a confirmation modal before they execute — keep that on while you're testing the integration.
Stdio servers won't work — period
A worked example: connect Notion
Notion's official remote MCP server is the cleanest test for the Developer Mode path. It's documented at mcp.notion.com, speaks OAuth 2.1, and discovers tools out of the box. Here's the minimum-viable setup:
Name: Notion (remote) Description: Read & write Notion pages, databases, blocks URL: https://mcp.notion.com/mcp Auth: OAuth 2.1
Click Save, then start a new chat and pick the Notion connector from the + menu. ChatGPT will redirect you to Notion to authorize, then return with tool discovery complete. Try a prompt like "Find every Notion page tagged 'Q2 planning' and summarize them in a Loom-style bullet list" to confirm the connection.
Common gotchas
OAuth callback mismatch
Your remote MCP server's OAuth client must whitelist ChatGPT's callback URL. Without it, the OAuth flow looks like it works but lands you back on your own login page. Check the Apps SDK docs at developers.openai.com/apps-sdk for the current callback URL.
CORS blocking tool discovery
If your server lives on a different origin than ChatGPT, CORS preflights have to permit ChatGPT's origin. The error usually shows up as "tool discovery failed" with no specifics. Check the browser devtools for the preflight response, then add ChatGPT to your CORS allowlist.
Server returns JSON when ChatGPT expects MCP frames
Custom REST APIs aren't MCP. The server has to implement the MCP HTTP/SSE transport — typically a /sse endpoint that streams MCP frames or an HTTP streamable endpoint that handles MCP envelopes. If you wrote the server, double-check you're using an MCP SDK (TypeScript SDK or Python SDK) and not raw Express handlers.
Tools execute but writes silently fail
ChatGPT confirms write actions before executing them by default. If you've turned that off and a write looks like it succeeded but didn't, check the server-side audit log — most servers log every MCP call. The model can also fabricate a success message when the underlying tool errors silently; logging on the server side is the only reliable way to know.
Frequently asked questions
Can I add an MCP if I'm on Free or Plus?
Directory apps yes, custom connectors no. The directory at chatgpt.com/apps is open to logged-in users on Free, Go, Plus, and Pro (currently outside the EEA, Switzerland, and the UK). Custom remote MCP connectors via Developer Mode require ChatGPT Pro, Team, Enterprise, or Edu.
Why does my server need to be HTTPS? Stdio works in Claude Desktop.
ChatGPT runs in OpenAI's cloud and cannot launch local processes on your machine. Stdio MCP servers (Filesystem, Memory, Sequential Thinking, and most community-built MCPs) work in Claude Desktop, Cursor, and VS Code because those clients spawn child processes locally — ChatGPT can't. To use a stdio server in ChatGPT, deploy it to a public HTTPS endpoint first. Cloudflare Workers, Vercel, Fly, and Railway all work for this.
OAuth keeps redirecting back to my app instead of ChatGPT — what do I do?
Your OAuth callback URL is wrong. The MCP server's OAuth client has to be configured with ChatGPT's callback (typically a URL OpenAI publishes in the Apps SDK docs). Edit your OAuth app on the provider side to whitelist ChatGPT's callback before retrying.
My connector says "tool discovery failed" — why?
Three common causes. (1) The server URL is wrong or unreachable — verify by hitting it directly with curl and checking for a 200. (2) The server doesn't speak the MCP protocol over HTTP/SSE — confirm it implements the MCP HTTP streamable transport, not just a custom REST API. (3) CORS — your server must permit ChatGPT's origin if it's running browser-side checks.
How do I remove a connector?
Settings → Connectors → click the connector → Remove. ChatGPT also exposes a "revoke access" button that triggers the OAuth provider to invalidate your token. Use both for a clean teardown.
Can I use the same MCP in ChatGPT and Claude Desktop?
Only if it has a hosted HTTPS endpoint. MCP is an open protocol, so any server with a public remote URL (Notion, GitHub, Stripe, Linear, Sentry, Cloudflare) works in both. Stdio-only servers work in Claude Desktop but not in ChatGPT until they're deployed to a public HTTPS endpoint.
Up next
You've got the setup. Now pick the right MCPs to install — the curated list and the long-form picks both live one click away.
More guides
Fundamentals
What Is MCP? A Plain-English Guide to Model Context Protocol
6 min read
Setup Guide
Best MCPs for Cursor: Supercharge Your AI Coding Environment
8 min read
Strategy
MCP Registry vs Curated Directory: Which Should You Use?
5 min read
Setup Guide
Best MCPs for ChatGPT: The Apps and Connectors Worth Installing
9 min read