[Doc] Clarify that StreamableHTTPTransport requires a single-process server
## Motivation and Context `StreamableHTTPTransport` stores session and SSE stream state in memory using instance variables (`@sessions`, `@mutex`). This design requires all HTTP requests to be handled within the same process to share state. Process-based servers like Unicorn fork separate worker processes that do not share memory, which breaks session management and SSE connections. This requirement is not obvious from the current documentation. ## How Has This Been Tested? Documentation-only change. ## Breaking Changes None.
This commit is contained in:
parent
6669601b5d
commit
9ebb42a536
1 changed files with 7 additions and 0 deletions
|
|
@ -303,6 +303,13 @@ transport = MCP::Server::Transports::StreamableHTTPTransport.new(server, session
|
|||
|
||||
### Usage
|
||||
|
||||
> [!IMPORTANT]
|
||||
> `MCP::Server::Transports::StreamableHTTPTransport` stores session and SSE stream state in memory,
|
||||
> so it must run in a single process. Use a single-process server (e.g., Puma with `workers 0`).
|
||||
> Multi-process configurations (Unicorn, or Puma with `workers > 0`) fork separate processes that
|
||||
> do not share memory, which breaks session management and SSE connections.
|
||||
> Stateless mode (`stateless: true`) does not use sessions and works with any server configuration.
|
||||
|
||||
#### Rails Controller
|
||||
|
||||
When added to a Rails controller on a route that handles POST requests, your server will be compliant with non-streaming
|
||||
|
|
|
|||
Loading…
Reference in a new issue