Tutorial7 min readApril 30, 2026

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

PlanApps directoryCustom 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

1

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.).

2

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.

3

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.

4

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.

5

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

ChatGPT cannot spawn local processes. If your MCP server only ships a stdio transport (which is the bulk of community-built MCPs), it cannot run in ChatGPT until you deploy it to a public HTTPS endpoint. Cloudflare Workers and Vercel are the easiest paths; both have MCP server templates available.

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:

ChatGPT → Settings → Connectors → Add custom connector
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