> ## Documentation Index
> Fetch the complete documentation index at: https://docs.heymcp.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ChatGPT

> Custom MCP connectors via Developer mode.

ChatGPT reaches custom MCP servers through **Developer mode**, which you have
to switch on before the option to add one appears.

## Requirements

* The **web** app — Developer mode is web-only
* **Developer mode** switched on
* A publicly reachable HTTPS MCP endpoint, which is what `heymcp share` gives
  you

<Note>
  OpenAI's documentation lists Developer mode as a Pro/Plus/Business/Enterprise/
  Education feature. We found it present and usable on a **Free** account in
  August 2026, so check your own settings before assuming you need to upgrade.
</Note>

## Enable Developer mode

<Steps>
  <Step title="Open Settings → Plugins">
    ChatGPT calls these **Plugins** now, not Connectors. The old Connectors URL
    redirects there.
  </Step>

  <Step title="Click Developer mode">
    It's the last row on the Plugins panel, and it jumps you to the Developer
    mode section of **Security and login**.
  </Step>

  <Step title="Toggle it on">
    It carries an **ELEVATED RISK** badge, because it lets you add servers
    OpenAI hasn't reviewed. That's exactly what a HeyMCP tunnel is.

    <Frame caption="Settings → Plugins → Developer mode">
      <img src="https://mintcdn.com/hey-mcp/im7DhwPBexGDK_h9/images/clients/chatgpt-developer-mode.png?fit=max&auto=format&n=im7DhwPBexGDK_h9&q=85&s=ecf146b76dd43ce54d810ba657ff054c" alt="ChatGPT's Developer mode toggle, switched on, with an elevated risk badge" width="450" height="220" data-path="images/clients/chatgpt-developer-mode.png" />
    </Frame>
  </Step>
</Steps>

There's a second toggle here, **Enforce CSP in developer mode**. Leave it as you
find it; it governs network access for dev-mode apps and is unrelated to
reaching your tunnel.

## Add the connector

<Steps>
  <Step title="Share your server">
    ```bash theme={null}
    heymcp share localhost:8000
    ```
  </Step>

  <Step title="Open the Plugins page and click +">
    **Plugins** in the left sidebar, then the **+** button to the right of the
    search box.
  </Step>

  <Step title="Fill in the New Plugin dialog">
    | Field              | What to put                                    |
    | ------------------ | ---------------------------------------------- |
    | **Icon**           | Optional. PNG, 256×256 or larger, max 10 KB    |
    | **Name**           | Anything — `My local MCP`                      |
    | **Description**    | Optional, but worth a line                     |
    | **Connection**     | Leave on **Server URL**                        |
    | URL                | `https://amber-jetty.t.heymcp.dev/mcp`         |
    | **Authentication** | **No Auth**, unless you shared with `--bearer` |

    Then tick **I understand and want to continue**. The **Create** button stays
    disabled until you do.

    <Frame caption="The New Plugin dialog, filled in for a HeyMCP tunnel with No Auth">
      <img src="https://mintcdn.com/hey-mcp/im7DhwPBexGDK_h9/images/clients/chatgpt-new-plugin.png?fit=max&auto=format&n=im7DhwPBexGDK_h9&q=85&s=0ce563a5a039ca1d551a44bb4a343d1c" alt="ChatGPT's New Plugin dialog with a name, description, HeyMCP tunnel URL and No Auth selected" width="448" height="693" data-path="images/clients/chatgpt-new-plugin.png" />
    </Frame>
  </Step>

  <Step title="Create">
    ChatGPT connects and discovers your tools.
  </Step>
</Steps>

<Tip>
  The **Tunnel** toggle next to *Server URL* is ChatGPT's own built-in way of
  reaching a server on your machine. You don't need it with a HeyMCP URL — and
  choosing Server URL is what gets you the timeline, the handshake report and the
  stable address across restarts.
</Tip>

Watch the inspector as you click Create — `INIT`, `NOTIF` and `LIST` rows
fingerprinted as ChatGPT should appear straight away.

## Authentication

ChatGPT supports three modes for a custom connector:

The **Authentication** dropdown offers three options:

| Option      | Works with HeyMCP                                                                                                                                                                  |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **No Auth** | Yes. This is the normal choice.                                                                                                                                                    |
| **OAuth**   | Only if **your own server** implements it. HeyMCP is not an authorization server; it forwards `/.well-known/*` so your server's OAuth metadata is discoverable through the tunnel. |
| **Mixed**   | OAuth for tool calls, no auth for `initialize` and `tools/list`. Same caveat as OAuth — your server provides it.                                                                   |

If you shared with [`--bearer`](/security/authentication), OAuth and Mixed are
the only options that carry a credential, and neither sends a static token. In
practice, **share without `--bearer` for ChatGPT** unless your own server
implements OAuth.

<Warning>
  Pick the right mode when you create the connector. Choosing the wrong one is
  the most common cause of ChatGPT prompting for authentication over and over
  after setup.
</Warning>

## Protocol revisions

ChatGPT negotiates `2025-03-26` and `2025-06-18`. It does **not** speak
`2024-11-05`. If your server only offers that, the
[probe warns you](/lint#mcp-protocol-version) with ChatGPT named.

## Tool limits

Same as Claude.ai: descriptions up to about 1024 characters, names up to 64.
Anything longer is truncated or dropped — the handshake report flags it first.

<h2 id="its-not-showing-up">
  It's not showing up
</h2>

<AccordionGroup>
  <Accordion title="There's no + button on the Plugins page">
    Developer mode isn't on. Settings → Plugins → Developer mode. It is
    web-only, so this won't work from the mobile app.
  </Accordion>

  <Accordion title="It keeps asking for authentication">
    The plugin's auth mode doesn't match your tunnel. If you shared without
    `--bearer`, Authentication must be **No Auth**. Picking the wrong mode is
    the most common cause of repeated auth prompts after setup.
  </Accordion>

  <Accordion title="The Create button is greyed out">
    Tick **I understand and want to continue** in the risk box. Create stays
    disabled until you do.
  </Accordion>

  <Accordion title="An error toast, and nothing in the inspector">
    ChatGPT never reached the edge. Check the URL and confirm `heymcp share` is
    still running.
  </Accordion>

  <Accordion title="Connected, but tools are never used">
    Check the [handshake report](/concepts/the-probe) for missing or
    over-long descriptions.
  </Accordion>
</AccordionGroup>

<Note>
  Custom connectors are not reviewed by OpenAI. That warning is aimed at
  connectors from third parties — but it's worth remembering that a HeyMCP tunnel
  URL is reachable by anyone who has it. See
  [What is exposed](/security/what-is-exposed).
</Note>
