/

Guides

How to publish your MCP app on ChatGPT

ChatGPT logo on a dark Alpic background
ChatGPT logo on a dark Alpic background

A ChatGPT submission is easier to get right than to fix. OpenAI allows one active review per plugin, so anything missing or wrong costs you a full review cycle. This guide walks the whole process in order, so you submit once, with everything in place.

A ChatGPT app now ships as a plugin, and the plugin goes through OpenAI’s submission portal at platform.openai.com/plugins. We have taken many apps through it. The steps work for any MCP server, and we flag where Alpic tools can save you time.

Why list your app at all?

ChatGPT is where your users already work. A listing puts your app in front of them inside the conversation, and a reviewed plugin gives them a vetted option instead of a connector they have to paste in themselves.

Before you start the submission process

You need:

  • A verified individual or business identity on the OpenAI platform, for the exact name you will publish under, and permission to submit (organization owners can, teammates need Apps Management Write).

  • A project with global data residency. Projects with EU data residency can’t submit.

  • A remote MCP server on a public HTTPS endpoint, on a domain you will keep, because the URL can’t change through the update flow. No server yet? Deploying from a Git repository on Alpic gives you one with no configuration.

  • A privacy policy, terms of service, a company website, a support page, and a test account with sample data and no MFA.

Test it in ChatGPT like a reviewer

Go to chatgpt.com/plugins, select the plus button, choose Add custom MCP server, enter your public URL (the one ending in /mcp) and select Create as a plugin. Then start a conversation, type @, pick the plugin and try direct, indirect, follow-up and unsupported requests. After any server change, open the connection and select Refresh. To call tools directly, run npx @modelcontextprotocol/inspector@latest.

Refreshing and prompting gets slow with several views, so check layouts in the Alpic Playground at /try instead of in ChatGPT: it renders every view inline, in picture-in-picture and fullscreen without prompting, and you can see how it renders on multiple AI surfaces.

Check your server against the requirements

Reviewers check three things:

  • Annotations match behavior: readOnlyHint only for tools that strictly read, destructiveHint for anything irreversible, openWorldHint for tools that reach the open internet.

  • The CSP lists the exact domains your UI fetches from.

  • Responses return only what the request needs, with no internal IDs, logs or debug fields.

Checking this by hand across every tool is where things slip, so we suggest to run Beacon first. It audits a remote MCP server from its URL against the requirements the stores apply, and the Alpic dashboard adds live view checks in ChatGPT. After alpic login (unauthenticated servers only), run: alpic audit --url https://your-server.com/mcp

Submit your MCP server

Everything happens in Plugins at platform.openai.com/plugins, and the portal saves a draft as you go.

Build the package

OpenAI takes a ZIP with a plugin.json manifest and an mcp.json file that declares exactly one remote MCP server, and no credentials. The manifest carries the listing: a name and short description of up to 30 characters each, a long description, HTTPS links for your website, support page, privacy policy and terms, and a square icon. Test cases and the demo video URL go with it, and release notes can too.

Writing the listing and test cases from scratch is the slow part. On Alpic, the submission helper (Submissions tab, then Submit my plugin) does the first pass for a deployed server: it pre-fills the listing, drafts the description, subtitle and test cases, and generates the file to hand to OpenAI. We read every drafted field, because generated copy is where inaccuracies hide.

Upload and check the package

Select Upload new or existing plugin, choose your verified identity and upload the ZIP. Read any Issues under Metadata & Skills, fix the package and upload it again. Required skill scans must pass before you can submit.

Verify your domain and connect the server

Host the token OpenAI gives you at https://your-domain/.well-known/openai-apps-challenge, as plain text and nothing else. Then open MCPs, select your server, select Connect and authorize the account OpenAI uses to scan it. Authentication (none, OAuth or mixed) is set in mcp.json, since API keys and bearer tokens are not supported. An OAuth client secret goes in the portal, never in the file.

Run the tool scan

Let the scan finish, open Issues and fix what it flags, then select Reconnect or Rescan.

Complete the review details

Open Review information, then Review details, and add a dedicated test account: login URL, workspace details and sign-in instructions, with sample data and no MFA, codes or magic links.

Run every test case with that account first. The five positive cases each need a description, a prompt, the tools triggered and the expected behavior. The three negative cases each need a description and a prompt, and should say why the plugin must not act. Imported items are read-only here, so to change one, edit the package and upload it again. Select Save details.

Submit

Select the draft, choose Submit for review, accept the policy attestations and confirm. Feedback arrives by email, and you can follow progress under Review status on the Plugins page.

Publish, then update with care

Approval does not put your app in ChatGPT. It goes live only when you open the approved version and select Publish plugin, so you choose the moment. To replace a package while a review is open, wait for the decision or cancel the review first.

After publishing, OpenAI scans your server daily, and new tools stay unavailable until approved. Package changes need a new ZIP with a new version number. On Alpic, we keep one environment per version (v1, v2), so the version under review stays untouched while you work on the next.

Get it right the first time

Submitting well is mostly preparation. Test in ChatGPT, check the three requirements, and keep one version stable during review. On Alpic, Beacon and the submission helper cover most of it, and our docs walk the full path from code to a live listing.

Liked what you read here?

Get our newsletter!

Liked what you read here?

Get our newsletter!

Liked what you read here?

Get our newsletter!