Add stateless mode support for STDIO transport#928
Closed
efj-amzn wants to merge 3 commits into
Closed
Conversation
This commit implements support for the 'stateless' flag in STDIO transport, addressing issue modelcontextprotocol#912. The changes include: - Adding a 'stateless_stdio' flag to FastMCP settings - Passing this flag to ServerSession when creating STDIO connections - Adding tests to verify stateless mode works correctly - Ensuring proper resource cleanup in tests This enables simpler CLI interaction patterns such as: echo '{"jsonrpc":"2.0","id":1,"method":"tools/call",...}' | python script.py Without requiring initialization messages, which is helpful for educational purposes and testing tools quickly via command line. Fixes modelcontextprotocol#912
Contributor
|
Thank you for contributing to the MCP Python SDK! Statelessness only applies to the StreamableHttp transport, as the protocol itself is stateful and requires initialization. With StreamableHttp, the client must still initialize with one node before sending requests to any other nodes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation and Context
This change adds support for the
statelessflag to STDIO transport, addressing issue #912. Currently, STDIO transport requires a full initialization handshake, making simple command line interactions likeecho '{"jsonrpc":"2.0",...}' | python script.pyimpossible.The stateless flag already exists for HTTP transport but was missing for STDIO. This feature is particularly helpful for:
How Has This Been Tested?
Aside from the added tests, I created a basic server and ran some commands.
Breaking Changes
None.
Types of changes
Checklist
I forked from gitish 1a9ead0 and the tests occasionally hang on that commit.
Fixes #912