Tidewell Software

Guide · updated 8 November 2026

How to migrate custom GPT Actions to MCP

To migrate a custom GPT Action, copy its OpenAPI schema from the GPT editor, serve the same operations from a remote MCP server (self-hosted or hosted), keep the Action's authentication on that server, then add the server URL to ChatGPT as a custom MCP server and to Claude as a custom connector. Do it before custom GPTs stop running on 11 December 2026. The steps below take about 15 minutes for a typical Action.

1. Export the Action schema

Open your GPT in the editor, go to Configure → Actions and open each action. Copy the whole Schema box (JSON or YAML). Write down the Authentication settings: None, API Key (with Auth Type Basic, Bearer or Custom header name) or OAuth (client ID, client secret, authorization URL, token URL, scope and token exchange method). You need the secret values too, from wherever you keep them; the editor does not show saved secrets again.

2. Check the conversion

Paste the schema into the free OpenAPI to MCP converter or the GPT Action migration checker. Each operation should become one tool. Common fixes:

  • Relative server URL (servers: - url: /api/v3): enter the API's full base URL.
  • Missing operationId: tools are then named from the method and path; add operationIds for clearer names.
  • Swagger 2.0: convert to OpenAPI 3 first.
  • Too many operations: assistants choose tools more reliably with fewer than about 40; switch off the ones the GPT never used.

3. Choose where the MCP server runs

You need a public HTTPS URL that speaks MCP over Streamable HTTP. Three options:

  • Self-host the generated code. The converter downloads a Cloudflare Worker or Node.js project with a README. Free; you look after hosting, secrets and, for ChatGPT with a private API, an OAuth layer.
  • Use a hosted bridge. ActionBridge runs the server, stores the credentials encrypted and handles OAuth for ChatGPT and Claude.
  • Write tools by hand with the official MCP SDKs, if you own the API and want a few higher-level tools instead of one per endpoint.

4. Move the authentication

A GPT Action stored your credential inside ChatGPT. An MCP server keeps it itself:

GPT Action authentication and its MCP equivalent
GPT Action settingOn the MCP serverHow ChatGPT or Claude connects
NoneNothing to storeNo authentication
API Key, Custom headerThe key, sent as that headerOAuth to the bridge, or an access-key header (Claude, Claude Code, Cursor)
API Key, BearerThe token, sent as Authorization: BearerSame as above
API Key, BasicThe base64 credentialsSame as above
OAuthClient ID and secret, authorization and token URLsOAuth: each user signs in to your API through the server

For OAuth, add the MCP server's callback URL to your OAuth app's allowed redirect URIs. The Action used a chat.openai.com/aip/…/oauth/callback address, which stops working with the GPT.

5 and 6. Connect ChatGPT, Claude and your editor

ChatGPT

  1. On the web, open Plugins (chatgpt.com/plugins), select +, then Add custom MCP server.
  2. Enter a name, choose Public endpoint and paste your bridge URL.
  3. Authentication: OAuth for a private bridge (ChatGPT opens the ActionBridge page, where you paste your access key once) or No authentication for a public one.
  4. Accept the risk warning, choose Create as a plugin, install it, and turn it on in a chat.

Claude

  1. Open Customize → Connectors, select + Add → Add custom connector.
  2. Paste the URL. Choose Sign in now (OAuth, paste the access key on the ActionBridge page), or No sign in plus a request header Authorization: Bearer <access key>.
  3. Team and Enterprise: an Owner adds it under Organization settings → Connectors.

Claude Code, Cursor and VS Code

claude mcp add --transport http my-api https://…/mcp/<id> --header "Authorization: Bearer <access key>"

Cursor (~/.cursor/mcp.json) and VS Code (.vscode/mcp.json, "type": "http") take the same URL and header. The app shows each snippet filled in for your bridge.

7. Test with real prompts

Run the prompts your GPT was used for. Read-only tools (GET) should run straight away; anything that writes should ask for confirmation, because the server marks it with readOnlyHint: false. Then move the GPT's instructions into the plugin's skills or the server's instructions, and tell your users the new way in before 11 December.

Frequently asked questions

Can I keep using the same API?

Yes. Nothing changes on your API. The MCP server calls the same endpoints with the same credentials the Action used.

Does the MCP server work for my GPT's users?

Users of a shared GPT need the new plugin or connector instead. For an API-key Action, everyone shares your key, as before; for an OAuth Action, each user signs in once.

How long does it take?

About 15 minutes for a typical Action with a clean schema and an API key. OAuth Actions take longer because you update the OAuth app's redirect URI.

Last updated 8 November 2026. Questions or corrections: [email protected].