How to submit an MCP server to ChatGPT and Codex plugin directory

By Jonah EasePublished Last checked
OpenAI's directory for ChatGPT and Codex takes a plugin package, not a form. You upload a ZIP, automated checks read it and scan your MCP server, a review team looks at what passes, and after approval you decide when it goes live[1]. Final submission requires a verified developer or business identity, so that comes first.
Before anything opens: identity and role
- Pick the organisation and project that will own the plugin. Organisation owners can submit; other members need the
Apps Management Writerole[1]. - Complete individual or business verification in the organisation's general settings. The plugin is shown under the name of the verified identity you choose[1][3].
- You also need public website, support, privacy policy and terms pages, all on HTTPS, and a demo recording URL[2].
The ZIP and what the final check enforces
Open the Plugins page, choose to upload a plugin, pick your developer identity and upload the ZIP; a draft opens after validation. Upload checks are looser than the ones at final submission[1][4].
| Field | Rule |
|---|---|
| Display name | Required, one line, 30 characters at most |
| Short description | Required, one line, 30 characters at most |
| Long description | Required, 4,000 characters at most |
| Starter prompts | At most 3, each 128 characters or fewer, no server @mention |
| Compressed ZIP | 100 MB at most |
Proving the server is yours
The portal shows a token. Host it as plain text at /.well-known/openai-apps-challenge on the MCP host or an allowed parent domain, then connect the server so its tools are scanned. Only one MCP server can be connected per plugin[1].
curl -s https://mcp.example.com/.well-known/openai-apps-challenge
# the response body must be the exact token from the portal, as plain text:
# not JSON, not a list of tokensWhat the reviewers are given
A remote server needs exactly five positive and three negative test cases, release notes and a demo recording. Every tool must carry readOnlyHint, openWorldHint and destructiveHint, each with a written justification. Where sign-in is needed, give a demo account that works at once, without MFA, email or SMS codes[2][1][3]. The manifest can carry all of it:
"review": {
"test_cases": {
"positive": [ /* exactly five: description, prompt, tools_triggered, expected_behavior */ ],
"negative": [ /* exactly three: description, prompt */ ]
},
"demo_recording_url": "https://example.com/review/demo"
},
"publication": { "countries": ["US", "GB"], "release_notes": "Initial release." }Error codes, and what clears them
annotations_required,justification_required: a tool is missing a hint or its reason[2].scan_required: the tool scan must be successful and current for the production server[2].domain_verification_required: the exact token is not at the challenge URL, or Verify Domain did not pass[2].archive_too_large,plugin_root_ambiguous: the ZIP is over 100 MB, or holds more than one plugin root[2].- A demo account that needs a sign-up step or 2FA is rejected outright[3].
Who presses what
- You click Submit for review and tick the policy attestations.
- Feedback from the review team arrives by email, and you can reply to appeal a rejection.
- After approval, you click Publish plugin yourself.
That is the whole sequence, done by hand[1]. Anthropic runs a separate review for its own directory; see the Claude Connectors Directory.
Current status,
OpenAI's pages state no review time. Its page refers to a previous submission form, and tells anyone who used it to download their existing plugin as a ZIP to continue in the current flow[1].
Sources
- OpenAI: Upload and submit your plugin · checked
- OpenAI: Plugin submission errors · checked
- OpenAI: Plugin guidelines · checked
- OpenAI Platform: Plugins page · checked
ManyCP is not affiliated with, endorsed by or sponsored by any directory, Docker, OpenAI, Anthropic or GitHub named here. Names are used to say which service a fact is about.
Or skip all of that
Or let ManyCP prepare it for you
ManyCP writes your plugin.json and mcp.json, ready to zip: the name, descriptions, starter prompts and first test cases, plus a checklist of what OpenAI's review checks. You zip the folder, upload it and submit it yourself. It needs your verified identity and your own OpenAI organization.
ManyCP prepares
- plugin.json and mcp.json, ready to zip
- The name and short description cut to 30 characters, the long description and starter prompts
- A first set of test cases, in plugin.json
- A checklist of what OpenAI's review checks, each linked to OpenAI's docs
- A zip command and a command to check your domain challenge file
You do
- Verify your identity
- Add your logo and URLs, zip the folder and upload it
- Host the challenge token, verify your domain and connect your server
- Write the privacy and terms pages and record the demo
- Submit for review, then Publish after approval