MCP server development for ChatGPT plugins and Claude connectors
Your customers want your product inside ChatGPT, Claude and their own agents. We build the MCP server over your API, with OAuth done to the current specification (revision 2026-07-28).
- Price
- USD 12,000 per engineer per month
- Specification
- 2026-07-28 both protocol eras tested
Deciding whether you need one at all? Our guide to MCP vs API sets out when your API is enough.
The request path we build
Each client registers with a Client ID Metadata Document and signs in through OAuth with PKCE
The server checks the token’s audience and scopes, then calls your API with its own credential, never the client’s token
- Scopes
tickets:readtickets:writeasked for only when a tool needs it
MCP OAuth is where remote servers fail
In a measurement study published on arXiv on 21 May 2026, 40.55% of 7,973 live remote MCP servers exposed tools with no authentication, and every one of the 119 OAuth-protected servers tested in depth had at least one flaw. So we build authorisation first and tools second. The current revision also deprecates Dynamic Client Registration in favour of Client ID Metadata Documents and replaces protocol sessions with server-minted state handles (changelog), so a server built to last year’s revision needs changes. Our guides to MCP OAuth with CIMD and the stateless migration cover both.
If you already have a server, an MCP security audit checks it against the current revision in ten working days.
What we build
- A remote MCP server over your API
Streamable HTTP, with tools designed for a model to use. That means names and descriptions that say when to call them, input schemas with the constraints your API enforces, and errors an agent can act on.
- OAuth that follows the specification
-
- Protected resource metadata, and tokens checked for your server’s audience. Your server never forwards a token it received.
- Client ID Metadata Documents, with Dynamic Client Registration only where a client still needs it.
- PKCE with S256, exact redirect URI matching and an
issvalue in every authorization response. - Narrow scopes at first, with step-up challenges when a tool needs more.
- State bound to the user
State handles that are random, expire and are keyed to the user ID from the verified token, so a guessed handle gets nothing.
- Tool-use evals
A suite that sends your real tasks and tool definitions to the OpenAI and Anthropic models behind ChatGPT and Claude, checks which tool each picks and with which arguments, and runs in your CI. ChatGPT and Claude add their own prompts and confirmations on top, which a test through the API can’t reproduce.
- Logs you can investigate with
An audit record of every tool call with the user, the client and the scopes used, and OpenTelemetry trace context, which replaces the logging utility the current revision deprecates.
ChatGPT plugin submission (formerly ChatGPT apps)
OpenAI now calls what you build and publish for ChatGPT a plugin. That’s a package holding an MCP server, skills or both, listed in one directory shared by ChatGPT and Codex. On 9 July 2026, the ChatGPT release notes announced that the Plugin Directory was replacing the App Directory. Your MCP server still reaches users as an app. OpenAI’s Help Center says a plugin can include one or more apps, and some accounts still show Apps where others show Plugins.
You upload the plugin as a ZIP in OpenAI’s plugin submission portal, connect your server’s public HTTPS URL, pass a domain-verification check and an automated scan of every tool, then submit for review. Once OpenAI approves it, you choose when to publish. After that, OpenAI scans the server daily, and new or changed tools go live once they pass automated checks. OpenAI chooses which plugins appear on the directory’s main pages.
OpenAI’s review requires:
- Individual or business verification of the name you publish under. An unverified name is rejected.
- For a server that signs users in, OAuth 2.1 to the MCP authorization specification, with PKCE S256. ChatGPT prioritises Client ID Metadata Documents (CIMD), where the client identifies itself with a URL instead of registering, and also accepts Dynamic Client Registration (DCR) or a predefined OAuth client. The portal has no API-key option.
readOnlyHint,destructiveHintandopenWorldHintset to true or false on every tool, and each operation exposed as its own tool, with no generic executor.- Website, support, privacy policy and terms of service URLs. The privacy policy must say what personal data you collect, why, who receives it, how long you keep it and what controls users have.
- A test account with sample data that signs in without MFA, five positive and three negative test cases, and a video walkthrough.
- A project with global data residency, because OpenAI projects with EU data residency can’t yet submit plugins with MCP servers.
- No sales of digital goods, no advertising and no money transfers.
Claude connector and plugin submission
Anthropic’s documentation says that to bring your product into Claude you build a plugin, and that people see the MCP server inside it as a connector (at their launch on 1 May 2025, Anthropic called them Integrations). When Anthropic opened its directory submission portal on 25 September 2026, it called plugins “the main way to build third-party extensions for Claude”.
The Claude directory takes two kinds of submission, either a plugin bundle from a GitHub repository or an MCP connector submitted by its URL. Anthropic asks you to submit a remote server as a connector even when your plugin already references it. Anyone on a paid Claude plan can submit, but on Team and Enterprise plans an Owner submits. Each connector is scanned automatically and listed as Community by default, and Anthropic may escalate it to Verified review, in which a reviewer tests every tool. The directory no longer accepts local servers packaged as desktop extensions (MCPB).
Anthropic’s review checks:
- OAuth 2.0 for any server that acts on a user’s account, with PKCE S256. DCR and CIMD both work by default, but Claude uses CIMD only when your authorization server advertises it together with the
nonetoken endpoint method. - A 401 response that points to your protected resource metadata, Claude’s fixed callback URL for its hosted apps, and a loopback redirect on any port for Claude Code.
- A
titleandreadOnlyHintordestructiveHinton every tool, tool names of 64 characters or fewer, and separate tools for reads and writes. - Tool descriptions that say what the tool does, with no hidden instructions and nothing that steers Claude towards or away from other tools.
- A documentation URL, a privacy policy URL, a support contact and test credentials for a fully populated account.
- At least three working example prompts, and calls only to your own APIs or ones you legitimately proxy.
- No tools that move money or generate images, video or audio with AI models.
What ChatGPT and Claude both require
Both platforms require these, so we build them before any tool:
- OAuth with PKCE S256 and protected resource metadata. Neither ChatGPT nor Claude supports a machine-to-machine client credentials grant.
- CIMD, advertised with the
nonetoken endpoint method so both platforms can use it, and DCR kept as the fallback. The current MCP revision deprecates DCR but keeps it for compatibility. - ChatGPT’s and Claude’s redirect URIs on your authorization server’s allowlist.
- No generic executors or catch-all tools. Each operation gets its own tool, with
readOnlyHintanddestructiveHintset, plusopenWorldHintfor ChatGPT andtitlefor Claude. These say whether a tool writes and whether the write is destructive, and Claude asks before every destructive call. The specification makes annotations optional, but both reviews check them. - A reviewer account with sample data, and a published privacy policy (OpenAI, Anthropic).
Two ways to start
Review the server you have
An MCP security audit of your server, covering its OAuth flow, every tool, and evals of how agents use it. Ten working days, USD 10,000, with a written verdict.
Build a new one
Our engineers build it at the forward deployed engineer rate of USD 12,000 per engineer per month. We estimate the months before we start and you approve the milestones for each one.
What we don’t control
Some controls belong to the host, not to your server, such as SSRF checks during OAuth discovery, validating authorization URLs and asking the user before risky actions. ChatGPT and Claude decide those. We can prepare your submission to their directories, but we can’t promise that OpenAI or Anthropic will approve it. And we don’t run your identity provider. We configure the one you have.
Guides for building MCP servers
-
MCP OAuth and CIMD authorization on the 2026-07-28 spec
How MCP OAuth works on the 2026-07-28 spec, covering discovery, Client ID Metadata Documents, PKCE, iss and scopes, with conformance tests.
-
How to test an MCP server, from MCP Inspector to CI
How to test a remote MCP server on the 2026-07-28 spec, with conformance, contract and auth tests, tool-use evals and CI steps we ran locally.
-
MCP stateless migration checklist for the 2026-07-28 spec
A 12-step checklist for moving a remote MCP server to the stateless 2026-07-28 spec, with a check per step, keeping 2025 clients working.
Tell us which API your customers’ agents should reach
Send the API documentation or your current server’s URL. We reply within one working day with how we’d build or test it.