Problem
ChatGPT does not send mcp-session-id back to server any more, thus violating this rule from the protocol that clients are required to follow:
If an MCP-Session-Id is returned by the server during initialization, clients using the Streamable HTTP transport MUST include it in the MCP-Session-Id header on all of their subsequent HTTP requests.
source: --not-a-link–modelcontextprotocol.io/specification/2025-11-25/basic/transports#session-management
How this worked before
ChatGPT used to send a separate initialize call before every tool call. Setting an MCP-Session-Id in our server as a response header made the ChatGPT MCP client echo it back in the subsequent tool calls.
How this works now
initialize + tools/list + resources/* calls from ChatGPT to our MCP server do echo back the MCP-Session-Id still.
tools/call calls send one bootstrap initialize , then never echoe mcp-session-id on any subsequent tools/call.
Fix
Please, keep echoing back the MCP-Session-Id in your tools/call calls.
Is there any news channel we can tap into to know about critical changes in the future?
Hi! Yes, we removed this a couple weeks ago. It won’t be coming back for a couple of reasons:
- The initialize call was very rarely used based on some surveys of online open-source MCP servers
- SEP-2575, as part of the general push to stateless MCP, is proceeding to a vote, so the
initialize call in all likelihood will be removed in the next MCP iteration
- The call added pretty significant conversation latency, which was a bad experience for users
Barring something drastic happening, we should be adopting stateless MCP fully as soon as it’s finalized, since this makes building MCPs at scale a lot easier for everyone. In the meantime, I’d suggest using one of the _meta fields we provide for this purpose.
This is a miss on our end, so on behalf of the team I apologize for the whiplash here. We’re going to try to push out announcements in a couple more places as we see effective; to start I’m doing my best to share out anything I see as significant in this forum, and am updating the developer docs to make sure this change is documented. Is there an easier place for you to get notified about changes like this?
Hi Casey,
Thanks for the quick response.
We noticed yesterday, while adapting our MCP server logic to this update that on ChatGPT iOS and ChatGPT Mac OS the tool calls still do not echo back the MCP-Session-Id, but the ChatGPT web application is echoing it back again, this conflicts with what you say in your reply.
Could you clarify why we are seeing MCP-Session-Id in the requests again for "jsonRpcMethods": [ "tools/call" ], - type of requests
?