Skip to content

Commit 0ae03fa

Browse files
committed
cleanup from review comments
1 parent bef37ce commit 0ae03fa

File tree

5 files changed

+16
-11
lines changed

5 files changed

+16
-11
lines changed

mcp_python/client/session.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from datetime import timedelta
2+
13
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
24
from pydantic import AnyUrl
35

@@ -36,7 +38,7 @@ def __init__(
3638
self,
3739
read_stream: MemoryObjectReceiveStream[JSONRPCMessage | Exception],
3840
write_stream: MemoryObjectSendStream[JSONRPCMessage],
39-
read_timeout_seconds: int | float | None = None,
41+
read_timeout_seconds: timedelta | None = None,
4042
) -> None:
4143
super().__init__(
4244
read_stream,

mcp_python/server/memory.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
from contextlib import asynccontextmanager
6+
from datetime import timedelta
67
from typing import AsyncGenerator
78

89
import anyio
@@ -52,10 +53,10 @@ async def create_client_server_memory_streams() -> AsyncGenerator[
5253
@asynccontextmanager
5354
async def create_connected_server_and_client_session(
5455
server: Server,
55-
read_timeout_seconds: int | float | None = None,
56+
read_timeout_seconds: timedelta | None = None,
5657
raise_exceptions: bool = False,
5758
) -> AsyncGenerator[ClientSession, None]:
58-
"""Creates a ServerSession that is connected to the `server`."""
59+
"""Creates a ClientSession that is connected to a running MCP server."""
5960
async with create_client_server_memory_streams() as (
6061
client_streams,
6162
server_streams,
@@ -75,9 +76,6 @@ async def create_connected_server_and_client_session(
7576
)
7677

7778
try:
78-
# Client session could be created here using client_read and
79-
# client_write This would allow testing the server with a client
80-
# in the same process
8179
async with ClientSession(
8280
read_stream=client_read, write_stream=client_write,
8381
read_timeout_seconds=read_timeout_seconds,

mcp_python/shared/session.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from contextlib import AbstractAsyncContextManager
2+
from datetime import timedelta
23
from typing import Generic, TypeVar
4+
import httpx
35

46
import anyio
57
import anyio.lowlevel
@@ -88,7 +90,7 @@ def __init__(
8890
receive_request_type: type[ReceiveRequestT],
8991
receive_notification_type: type[ReceiveNotificationT],
9092
# If none, reading will never time out
91-
read_timeout_seconds: int | float | None = None,
93+
read_timeout_seconds: timedelta | None = None,
9294
) -> None:
9395
self._read_stream = read_stream
9496
self._write_stream = write_stream
@@ -151,12 +153,15 @@ async def send_request(
151153
await self._write_stream.send(JSONRPCMessage(jsonrpc_request))
152154

153155
try:
154-
with anyio.fail_after(self._read_timeout_seconds):
156+
with anyio.fail_after(
157+
None if self._read_timeout_seconds is None
158+
else self._read_timeout_seconds.total_seconds()
159+
):
155160
response_or_error = await response_stream_reader.receive()
156161
except TimeoutError:
157162
raise McpError(
158163
ErrorData(
159-
code=408,
164+
code=httpx.codes.REQUEST_TIMEOUT,
160165
message=(
161166
f"Timed out while waiting for response to "
162167
f"{request.__class__.__name__}. Waited "

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "mcp-python"
7-
version = "0.4.0.dev"
7+
version = "0.3.1.dev"
88
description = "Model Context Protocol implementation for Python"
99
readme = "README.md"
1010
requires-python = ">=3.10"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)