Skip to content

Commit 74737f6

Browse files
committed
Document pydantic.ValidationError in client Raises sections
The client surfaces pydantic.ValidationError when a server returns a result that does not conform to the negotiated protocol version. List it in the Raises sections of ClientSession.send_request and the Client.call_tool / get_prompt / read_resource loops.
1 parent 48ef569 commit 74737f6

2 files changed

Lines changed: 8 additions & 0 deletions

File tree

src/mcp/client/client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,8 @@ async def read_resource(
629629
Raises:
630630
InputRequiredRoundsExceededError: `input_required_max_rounds` exhausted.
631631
MCPError: A callback returned `ErrorData` for an embedded input request.
632+
pydantic.ValidationError: The server returned a result that does not
633+
conform to the negotiated protocol version.
632634
"""
633635

634636
async def retry(r: InputResponses | None, s: str | None) -> ReadResourceResult | InputRequiredResult:
@@ -711,6 +713,8 @@ async def call_tool(
711713
Raises:
712714
InputRequiredRoundsExceededError: `input_required_max_rounds` exhausted.
713715
MCPError: A callback returned `ErrorData` for an embedded input request.
716+
pydantic.ValidationError: The server returned a result that does not
717+
conform to the negotiated protocol version.
714718
"""
715719

716720
async def retry(r: InputResponses | None, s: str | None) -> CallToolResult | InputRequiredResult | Result:
@@ -787,6 +791,8 @@ async def get_prompt(
787791
Raises:
788792
InputRequiredRoundsExceededError: `input_required_max_rounds` exhausted.
789793
MCPError: A callback returned `ErrorData` for an embedded input request.
794+
pydantic.ValidationError: The server returned a result that does not
795+
conform to the negotiated protocol version.
790796
"""
791797

792798
async def retry(r: InputResponses | None, s: str | None) -> GetPromptResult | InputRequiredResult:

src/mcp/client/session.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,8 @@ async def send_request(
452452
MCPError: Error response, read timeout, or connection closed.
453453
RuntimeError: Called before entering the context manager.
454454
ValueError: The request declares `name_param` but its params carry no string name.
455+
pydantic.ValidationError: The server returned a result that does not
456+
conform to the negotiated protocol version.
455457
"""
456458
data = request.model_dump(by_alias=True, mode="json", exclude_none=True)
457459
method: str = data["method"]

0 commit comments

Comments
 (0)