From db4306759fe8e7e95641cd71295c03cd39c97b42 Mon Sep 17 00:00:00 2001 From: Joaquin Coromina Date: Mon, 3 Nov 2025 01:35:45 +0100 Subject: [PATCH 1/4] use serverInfo if _client_info is DEFAULT_CLIENT_INFO --- src/mcp/client/session.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index 9e9389ac1..4e7f2117b 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -167,6 +167,9 @@ async def initialize(self) -> types.InitializeResult: types.InitializeResult, ) + if self._client_info is DEFAULT_CLIENT_INFO: + self._client_info = result.serverInfo + if result.protocolVersion not in SUPPORTED_PROTOCOL_VERSIONS: raise RuntimeError(f"Unsupported protocol version from the server: {result.protocolVersion}") From 5e6210918d66b863c183d5ff2bd226db8c53b7e9 Mon Sep 17 00:00:00 2001 From: Joaquin Coromina Date: Mon, 3 Nov 2025 01:58:46 +0100 Subject: [PATCH 2/4] move functionality to after protocolVersion check --- src/mcp/client/session.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index 4e7f2117b..b4220e7e0 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -167,12 +167,12 @@ async def initialize(self) -> types.InitializeResult: types.InitializeResult, ) - if self._client_info is DEFAULT_CLIENT_INFO: - self._client_info = result.serverInfo - if result.protocolVersion not in SUPPORTED_PROTOCOL_VERSIONS: raise RuntimeError(f"Unsupported protocol version from the server: {result.protocolVersion}") + if self._client_info is DEFAULT_CLIENT_INFO: + self._client_info = result.serverInfo + await self.send_notification(types.ClientNotification(types.InitializedNotification())) return result From 86eae4bf91334d904438fa073156876945e31c3c Mon Sep 17 00:00:00 2001 From: Joaquin Coromina Date: Tue, 4 Nov 2025 21:55:31 +0100 Subject: [PATCH 3/4] add unit test asserts --- tests/client/test_session.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/client/test_session.py b/tests/client/test_session.py index f2135e455..f479853fd 100644 --- a/tests/client/test_session.py +++ b/tests/client/test_session.py @@ -175,6 +175,8 @@ async def mock_server(): # Assert that the custom client info was sent assert received_client_info == custom_client_info + # Assert that the client info was not replaced with server info after initialization + assert session._client_info == custom_client_info @pytest.mark.anyio @@ -183,6 +185,7 @@ async def test_client_session_default_client_info(): server_to_client_send, server_to_client_receive = anyio.create_memory_object_stream[SessionMessage](1) received_client_info = None + received_server_info = None async def mock_server(): nonlocal received_client_info @@ -231,10 +234,13 @@ async def mock_server(): server_to_client_receive, ): tg.start_soon(mock_server) - await session.initialize() + result = await session.initialize() + received_server_info = result.serverInfo # Assert that the default client info was sent assert received_client_info == DEFAULT_CLIENT_INFO + # Assert that the default client info was replaced with server info after initialization + assert session._client_info == received_server_info @pytest.mark.anyio From bf821384fb398e01a941d0f60305993968ccf169 Mon Sep 17 00:00:00 2001 From: Joaquin Coromina Date: Sun, 9 Nov 2025 18:08:46 +0100 Subject: [PATCH 4/4] run pre-commit --- src/mcp/client/session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index c6bf826d1..4ce141e27 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -173,7 +173,7 @@ async def initialize(self) -> types.InitializeResult: if self._client_info is DEFAULT_CLIENT_INFO: self._client_info = result.serverInfo - + self._server_capabilities = result.capabilities await self.send_notification(types.ClientNotification(types.InitializedNotification()))