diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index a0ca751bd..bb888723e 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 @@ -137,6 +138,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]: return types.server_request_adapter @@ -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,