From 5fa31c3d9189767d3697d1a45b2aee82577550c6 Mon Sep 17 00:00:00 2001 From: PR-Contributor Date: Thu, 19 Mar 2026 21:23:27 +0000 Subject: [PATCH 1/2] feat: Add protocol_version parameter to ClientSession Add optional protocol_version parameter to ClientSession.__init__() to allow callers to override the default LATEST_PROTOCOL_VERSION when connecting to servers that require a specific protocol version. Fixes #2307 --- src/mcp/client/session.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index a0ca751bd..da821cac9 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -121,6 +121,7 @@ def __init__( *, sampling_capabilities: types.SamplingCapability | None = None, experimental_task_handlers: ExperimentalTaskHandlers | None = None, + protocol_version: str | None = None, ) -> None: super().__init__(read_stream, write_stream, read_timeout_seconds=read_timeout_seconds) self._client_info = client_info or DEFAULT_CLIENT_INFO @@ -136,6 +137,9 @@ def __init__( # Experimental: Task handlers (use defaults if not provided) self._task_handlers = experimental_task_handlers or ExperimentalTaskHandlers() + + # Protocol version (defaults to LATEST_PROTOCOL_VERSION) + self._protocol_version = protocol_version or types.LATEST_PROTOCOL_VERSION @property def _receive_request_adapter(self) -> TypeAdapter[types.ServerRequest]: @@ -168,7 +172,7 @@ async def initialize(self) -> types.InitializeResult: result = await self.send_request( types.InitializeRequest( params=types.InitializeRequestParams( - protocol_version=types.LATEST_PROTOCOL_VERSION, + protocol_version=self._protocol_version, capabilities=types.ClientCapabilities( sampling=sampling, elicitation=elicitation, From b5796409963e4da8bb55abfddbfcd7d3946bd2bd Mon Sep 17 00:00:00 2001 From: PR-Contributor Date: Thu, 19 Mar 2026 22:34:04 +0000 Subject: [PATCH 2/2] chore: fix ruff formatting --- 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 da821cac9..bb888723e 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -137,7 +137,7 @@ def __init__( # Experimental: Task handlers (use defaults if not provided) self._task_handlers = experimental_task_handlers or ExperimentalTaskHandlers() - + # Protocol version (defaults to LATEST_PROTOCOL_VERSION) self._protocol_version = protocol_version or types.LATEST_PROTOCOL_VERSION