# How to add a custom MCP server to ChatGPT with developer mode

> Connect your own remote MCP server to ChatGPT using developer mode: requirements, auth options, step-by-step setup, refreshing tools and fixing common errors.

Published: 2026-10-04 · By: Divy Chaurasia · Level: intermediate · Time: 15 min · Tags: mcp, developer-mode, chatgpt

The [Plugin Directory](/plugins) only lists reviewed plugins. To use any other MCP server in ChatGPT (your company's internal server, a server you are building, or a public one that isn't listed), turn on **developer mode**. It gives ChatGPT full MCP client support, including tools that write data, and lets you add a server by URL.

OpenAI labels developer mode as elevated risk. Read the safety section at the end before connecting anything you didn't build yourself.

## Before you start

You need:

- **An eligible account.** Developer mode is available to Plus, Pro, Business, Enterprise and Education accounts, on the web. Workspace policy can turn it off.
- **A remote server.** ChatGPT connects over the network, so the server needs a public HTTPS URL. A server that only runs as a local command (stdio) won't work directly. Put it behind an HTTP endpoint, a development tunnel, or OpenAI's Secure MCP Tunnel.
- **A supported transport.** Streamable HTTP or SSE. Streamable HTTP is the current standard; SSE is deprecated by the MCP project.
- **The full endpoint URL**, including its path. Most servers use `/mcp`, for example `https://mcp.example.com/mcp`.
- **The server's auth method.** ChatGPT supports **OAuth**, **No Authentication** and **Mixed** (described below).

> **Tip:** Building a server on your laptop? Expose it with `ngrok http 8787` or `cloudflared tunnel --url http://localhost:8787` and use the HTTPS URL it prints. See [Test and debug an MCP server](/tutorials/test-mcp-server-with-inspector).

## 1. Turn on developer mode

1. Open [ChatGPT](https://chatgpt.com) on the web.
2. Go to **Settings** > **Security and login**.
3. Turn on **Developer mode**.

If the toggle is missing, your plan doesn't include it or your workspace admin has disabled it.

## 2. Create the connection

1. Go to `chatgpt.com/plugins` and select the plus button. With developer mode on, this creates a developer-mode app for an MCP server.
2. Enter a name and a short description. The model reads these, so make them describe what the server does.
3. Under **Connection**, choose how ChatGPT reaches the server:
   - For a public endpoint, enter the server URL, including the `/mcp` path.
   - For a private server behind Secure MCP Tunnel, select **Tunnel**, then pick a tunnel or enter its `tunnel_id`.
4. Choose the authentication mode.
5. Select **Create**.
6. Check the tools and metadata ChatGPT discovered. If the list is empty or wrong, fix the server before going further.

New connections appear under **Drafts** in your plugin settings.

### Picking an auth mode

- **No Authentication**: for public, read-only servers. Fine for testing.
- **OAuth**: the usual choice for hosted servers with user accounts. If you enter static client credentials, ChatGPT uses them. Otherwise it can use Client ID Metadata Documents (CIMD) when the authorization server advertises support, or Dynamic Client Registration (DCR) when configured.
- **Mixed**: initialization and tool listing happen without auth, then each tool uses OAuth or no auth based on the security schemes in its metadata. Use it when some tools are public and others need a login.

## 3. Test with a server that needs no login

Before debugging your own server, confirm the flow works with a known public one. DeepWiki answers questions about public GitHub repositories and needs no auth. Use `https://mcp.deepwiki.com/mcp` with **No Authentication**.

> **MCP server:** [DeepWiki](https://chatgptplugins.directory/mcp/deepwiki): Ask questions about any public GitHub repo using DeepWiki's generated docs
OpenAI's own quickstart uses a demo server that exposes a single read-only `roll_dice` tool: `https://tinymcp.dev/api/moldy-aloof-zettabyte/mcp`.

## 4. Use the server in a chat

1. Start a new conversation.
2. Open the plus menu in the message box, choose **Developer mode**, and select your server. (OpenAI's guides also show it under **+** > **More**, and in a **Work** chat you can type `@` and pick it. The menu layout varies between rollouts.)
3. Ask for something the server can do.

Be explicit while you're testing. The model has to choose between your tools and ChatGPT's built-in ones:

```text
Use the "Acme CRM" app's "update_record" tool to set the status of
record 4411 to "closed". Do not use browsing or any other tools.
```

Other prompting tips from OpenAI's docs: name the tool and the input shape, tell the model which tool to prefer when two overlap, and spell out the order of calls when a workflow needs several.

## 5. Review and confirm tool calls

Every tool call in the chat can be expanded with the caret to show the full JSON input and output. Use it to check that the model sent what you expected.

- **Write actions need confirmation by default.** ChatGPT treats any tool without the `readOnlyHint` annotation as a write. Read the input before approving: a wrong write can destroy, change or share data.
- **"Remember" applies to one conversation.** You can remember an approve or deny choice for a tool for the rest of that chat. New conversations ask again. Only remember approvals for servers you fully trust.

## 6. Manage and refresh tools

Each connection has a details page in your plugin settings. From there you can:

- Toggle individual tools on or off.
- Select **Refresh** to pull new tools, descriptions and server instructions.

After changing the server's tools, descriptions, schemas, annotations, auth or UI resources:

1. Deploy or restart the server.
2. Open the connection at `chatgpt.com/plugins` and select **Refresh**.
3. Confirm the metadata changed.
4. Start a new chat. Old chats keep the tool list they started with.

## Business, Enterprise and Edu workspaces

In a company workspace an admin usually has to allow custom MCP connectors before members see the toggle. The Help Center describes this under **Workspace settings** > **Permissions & Roles** > **Connected Data** (look for developer mode or custom MCP connectors). Labels change between releases, so ask your admin if you can't find it. Members can test servers in developer mode; publishing a plugin to the whole workspace is an admin action.

## Troubleshooting

| Symptom | Likely cause and fix |
| --- | --- |
| "Couldn't connect" on create | URL is missing `/mcp`, isn't HTTPS, or the tunnel has stopped. Test the same URL with [MCP Inspector](/tutorials/test-mcp-server-with-inspector). |
| 502 or OAuth errors on a server with no auth | Your server answers OAuth discovery routes with an error page. Return `404` for `/.well-known/...` paths you don't use. |
| OAuth loop or "invalid redirect" | The redirect URI registered with your identity provider doesn't match the one shown on the connection's page. Copy it exactly. |
| Tools list is empty | `tools/list` failed or returned invalid JSON Schema. Check server logs. |
| New tool doesn't appear | Select **Refresh**, then start a new chat. |
| Every call asks for approval | The tool lacks `readOnlyHint: true`. Add it only if the tool really changes nothing. |
| Model ignores your server | Make tool descriptions start with "Use this when…", and name the tool in your prompt. |
| Private server unreachable | Check the tunnel's workspace association and that `tunnel-client` is running. |

## Safety checklist

> **Warning:** A connected server can read whatever the model sends it, and its tool descriptions and results go straight into the model's context. A malicious or compromised server can try to inject instructions or pull data out of your chat.

- Prefer official servers run by the service itself, such as Linear's at `https://mcp.linear.app/mcp` or GitHub's, over third-party proxies.
- Keep write confirmations on until you trust the server.
- Don't paste secrets into chats that have untrusted servers attached.
- Turn off tools you don't need on the connection's details page.
- Remove connections you've stopped using.

> **MCP server:** [Linear](https://chatgptplugins.directory/mcp/linear): Find, create and update Linear issues, projects and comments
## Next steps

- Browse remote servers worth connecting in the [MCP directory](/mcp).
- Build your own with [Build your first ChatGPT app](/tutorials/build-your-first-chatgpt-app).
- Call the same servers from code with [Use remote MCP servers in the OpenAI API](/tutorials/mcp-in-the-openai-api).

> **MCP server:** [GitHub](https://chatgptplugins.directory/mcp/github): Manage repos, issues, pull requests and Actions from your AI agent

## Listings in this tutorial

- [DeepWiki](https://chatgptplugins.directory/mcp/deepwiki.md): Ask questions about any public GitHub repo using DeepWiki's generated docs
- [Linear](https://chatgptplugins.directory/mcp/linear.md): Find, create and update Linear issues, projects and comments
- [GitHub](https://chatgptplugins.directory/mcp/github.md): Manage repos, issues, pull requests and Actions from your AI agent

---
Source: https://chatgptplugins.directory/tutorials/add-mcp-server-to-chatgpt · Index: https://chatgptplugins.directory/llms.txt · Independent and community-run. Not affiliated with or endorsed by OpenAI. ChatGPT is a trademark of OpenAI.
