We are debugging a reproducible re-auth loop on ChatGPT web with a custom MCP server.
Environment
- MCP server behind OAuth endpoints authorize/token/register
-
- Transport: streamable HTTP (stateless)
- Observed behavior
-
- Connector setup succeeds in ChatGPT (OAuth completes and connector appears active).
-
- In chat, invoking a tool triggers Connect/auth again.
-
- This repeats even though backend logs show successful auth + MCP handshake.
What server logs confirm
- register returns 201 (public client, token_endpoint_auth_method=none)
-
- authorize issues code (302)
-
- token returns 200 with refresh token
-
- api/mcp receives and authorizes bearer token
-
- initialize, notifications/initialized, tools/list, resources/list return 200
-
- Mcp-Session-Id is returned and later