← Back to Dashboard
1. The Stdio Transport2. Streamable HTTP & SSE3. Managing Sessions

Managing Sessions

📚 Transport Layers7 min60 XP

Session Identifiers

When using HTTP transports, the connection is typically stateless. However, MCP requires a stateful session to keep track of capabilities, roots, and subscriptions.

To solve this, the server assigns a unique Session Identifier upon initialization. In the 2025 HTTP transport spec, this is often implemented as a sessionId query parameter or HTTP header.

Capabilities Negotiation

Upon connection, the Client and Server perform a handshake:

  1. The Client sends its capabilities (e.g., "I support roots and sampling").
  2. The Server replies with its capabilities (e.g., "I support tools and prompts").
💡 Key Insight: If the Server disconnects, the Host must automatically re-run the initialization handshake upon reconnecting to rebuild the session state.

MCP Apps (January 2026)

MCP Apps extend the protocol to allow servers to return interactive user interfaces — forms, dashboards, and visualisations rendered in sandboxed iframes — directly within host applications like Claude, ChatGPT, and VS Code. This transforms MCP from a data-only protocol into a full interactive experience layer.

Tool Annotations

Tool annotations provide metadata about tool behaviour — marking tools as read-only or destructive. Clients use these annotations to make informed decisions about approval workflows, enabling auto-approval of safe read-only tools while requiring explicit confirmation for destructive operations like file deletion or database writes.

🧪 Knowledge Check
Press 1-4 to select1 of 3
Why do remote MCP connections require session management?
Because HTTP is stateless but MCP relies on stateful handshakes and subscriptions.
To bill users automatically.
To encrypt the payload.
Because stdio requires it.
Watch: 139x Rust Speedup
Managing Sessions | Transport Layers — MCP Academy