@@ -829,6 +829,49 @@ async def test_client_session_from_state():
829829 pass
830830
831831
832+ @pytest .mark .anyio
833+ async def test_client_session_from_state_without_capabilities ():
834+ """Test that from_session_state() handles None capabilities and server_info."""
835+ from mcp .shared .session_state import SessionState
836+
837+ # Create a session state with None capabilities (before initialization)
838+ state = SessionState (
839+ session_id = "test-session-minimal" ,
840+ protocol_version = LATEST_PROTOCOL_VERSION ,
841+ next_request_id = 0 ,
842+ server_capabilities = None ,
843+ server_info = None ,
844+ initialized_sent = False ,
845+ )
846+
847+ # Create streams
848+ client_to_server_send , client_to_server_receive = anyio .create_memory_object_stream [SessionMessage ](1 )
849+ server_to_client_send , server_to_client_receive = anyio .create_memory_object_stream [SessionMessage ](1 )
850+
851+ # Create session from state
852+ session = ClientSession .from_session_state (
853+ state ,
854+ server_to_client_receive ,
855+ client_to_server_send ,
856+ )
857+
858+ # Verify the session was created with the correct state
859+ assert session ._session_id == "test-session-minimal"
860+ assert session ._request_id == 0
861+ assert session ._server_capabilities is None
862+ assert session ._server_info is None
863+ assert session ._initialized_sent is False
864+
865+ # Clean up streams
866+ async with (
867+ client_to_server_send ,
868+ client_to_server_receive ,
869+ server_to_client_send ,
870+ server_to_client_receive ,
871+ ):
872+ pass
873+
874+
832875@pytest .mark .anyio
833876async def test_client_session_state_roundtrip ():
834877 """Test that session state can be serialized and restored."""
0 commit comments