Claude vs ChatGPT vs Grok: MCP connector differences
The exact configuration differences between the three MCP clients: callback URLs, DCR vs CIMD, where the connector UI lives, plan requirements, and what each one probes, so one server can satisfy all three.
multi-client · updated 2026-08-22
All three clients speak the same core protocol: remote MCP over Streamable HTTP, OAuth 2.1 with PKCE, RFC 9728 protected-resource discovery, so a correctly built server works with all of them. But the details differ enough to break a connection if you hardcode assumptions. Here’s what differs, and what to build so one server handles all three.
The differences at a glance
| Claude | ChatGPT | Grok | |
|---|---|---|---|
| Where connectors live | Customize → Connectors (moved from Settings) | Settings → Connectors (+ Developer mode for custom) | grok.com/connectors |
| Plan needed for custom MCP | Pro/Max (and Team/Enterprise) | Plus/Pro/Business with Developer mode enabled | Paid tier |
| Client registration | DCR (RFC 7591), registers itself | CIMD preferred, DCR fallback | DCR |
| OAuth callback URL | https://claude.ai/api/mcp/auth_callback and https://claude.com/api/mcp/auth_callback |
https://chatgpt.com/connector_platform_oauth_redirect |
https://grok.com/connectors area (do not hardcode); accept what it registers |
| Manual client ID/secret | Optional (Advanced settings); blank for DCR | Via developer connector form | Via connector form |
| Transport | Streamable HTTP (SSE-framed) | Streamable HTTP | Streamable HTTP |
Claude
Connectors moved to Customize → Connectors (the old Settings page now just redirects). Add → Add custom connector takes a name and your MCP URL; OAuth client ID/secret are optional under Advanced settings and should be left blank so Claude self-registers via DCR. Full screenshot walkthrough: connect a custom connector in Claude.
Claude registers two callback hosts, both claude.ai and claude.com
variants of /api/mcp/auth_callback. Allowlist both.
ChatGPT
ChatGPT prefers CIMD (Client ID Metadata Documents): instead of
registering a client and getting an ID back, it presents a URL that is its
client identity, which your authorization server fetches. If your server
doesn’t support CIMD, ChatGPT falls back to standard DCR. Its callback is
https://chatgpt.com/connector_platform_oauth_redirect.
Custom MCP connectors in ChatGPT require Developer mode to be enabled in settings; without it, only the pre-built directory connectors appear. This is the most common “why can’t I add my server” cause on ChatGPT.
For CIMD support on your authorization server, the providers we tested expose a
flag: Auth0 (client_id_metadata_document_supported) and Stytch (Enable CIMD
toggle) both have it. See the Auth0 and
Stytch guides.
Grok
Grok connectors live at grok.com/connectors (shown below).

The load-bearing rule for Grok: do not hardcode its callback URL. Grok’s
redirect URI has changed and may differ by surface, so use the
allow-what-registers pattern: during DCR, store exactly the redirect_uris the
client sends and validate against those at /authorize, rather than
maintaining a hardcoded per-client callback list. That single pattern also
future-proofs you against Claude and ChatGPT changing their callbacks.
Make one server work for all three
Build your /register (DCR) endpoint to accept and store whatever redirect
URIs the client presents, validating their hosts against an allowlist
(claude.ai, claude.com, chatgpt.com, openai.com, grok.com, x.ai),
then at /authorize validate the requested redirect_uri exactly against
what that client registered. Don’t hardcode any single callback. Support CIMD
if your provider offers it (ChatGPT), fall back to DCR (all three). Everything
else is shared protocol.
Debug first-connection differences with logs
When one client connects and another doesn’t, the fastest diagnosis is to log every request during the first connection of each client: the logs are the authoritative record of what that specific client actually does (which discovery documents it fetches, whether it registers or presents a CIMD URL, what redirect URI it sends). Providers and clients change behavior over time; your logs are the only source that’s never out of date.
Next steps
- Build the allow-what-registers DCR endpoint once, then verify per client with the connector checklist: four curls, three times.
- Wire all three against one server with one server, three connectors.
- Add the client-specific connector with the Claude walkthrough, and grab the ready-made ChatGPT and Grok prompts from the library.
If a specific client fails where others succeed, debugging connector failures isolates the diverging step.
Metadata
- Commit
- c6eb99c
- Browser
- —
- Current Time
- —
- Dimensions
- —
- Source
- guides
- Last Updated
- 2026-08-22