Skip to content

Does the MCP spec allow an SSE GET request before a Session ID is established? #1997

Closed

Description

@spacewander

According to https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#listening-for-messages-from-the-server

The client MAY issue an HTTP GET to the MCP endpoint. This can be used to open an SSE stream, allowing the server to communicate to the client, without the client first sending data via HTTP POST.

Does this mean the client can issue a GET request without any MCP session ID? Since the client doesn't send any data via HTTP POST, the server can not assign a session ID to it.

Should this request be treated as a legal MCP request? If it is, we don't know its client info and can't bind it to a certain session.

Activity

  1. pja-ant commented on Jan 15, 2026

    @pja-ant
    Contributor

    Does this mean the client can issue a GET request without any MCP session ID? Since the client doesn't send any data via HTTP POST, the server can not assign a session ID to it.

    A lot of this stuff is poorly defined right now and this kind of thing is the focus of the Transports WG and the move towards stateless transport in the next release. See https://blog.modelcontextprotocol.io/posts/2025-12-19-mcp-transport-future/

    That being said, it is already the case that many servers don't use session IDs, so yes, you can send a GET without a session ID. If you do initialize and you get a session ID back then you should use that.

    Should this request be treated as a legal MCP request? If it is, we don't know its client info and can't bind it to a certain session.

    Yes, this is a big general problem with the streamable HTTP transport at the moment. Stateless servers (without session ID) have no way to bind some requests to client info. This will be fixed in the next spec. For now it's just a limitation of sessionless servers. If you care about client info, you should probably always use sessions.

  2. spacewander commented on Jan 19, 2026

    @spacewander
    ContributorAuthor

    I see. Looking forward to the next spec!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions