Skip to content

Commit 5757f6c

Browse files
committed
small fixes
1 parent 88ff2ba commit 5757f6c

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

examples/servers/simple-streamablehttp/mcp_simple_streamablehttp/event_store.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
import logging
99
import time
1010
from collections.abc import Awaitable, Callable
11+
from operator import itemgetter
1112
from uuid import uuid4
1213

13-
from mcp.server.streamableHttp import EventId, EventStore, StreamId
14+
from mcp.server.streamable_http import EventId, EventStore, StreamId
1415
from mcp.types import JSONRPCMessage
1516

1617
logger = logging.getLogger(__name__)
@@ -54,15 +55,19 @@ async def replay_events_after(
5455
stream_id, _, last_timestamp = self.events[last_event_id]
5556

5657
# Find all events for this stream after the last event
58+
events_sorted = sorted(
59+
[
60+
(event_id, message, timestamp)
61+
for event_id, (sid, message, timestamp) in self.events.items()
62+
if sid == stream_id and timestamp > last_timestamp
63+
],
64+
key=itemgetter(2),
65+
)
66+
5767
events_to_replay = [
58-
(event_id, message)
59-
for event_id, (sid, message, timestamp) in self.events.items()
60-
if sid == stream_id and timestamp > last_timestamp
68+
(event_id, message) for event_id, message, _ in events_sorted
6169
]
6270

63-
# Sort by timestamp to ensure chronological order
64-
events_to_replay.sort(key=lambda x: self.events[x[0]][2])
65-
6671
logger.debug(f"Found {len(events_to_replay)} events to replay")
6772
logger.debug(
6873
f"Events to replay: {[event_id for event_id, _ in events_to_replay]}"

src/mcp/server/streamable_http.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -373,8 +373,7 @@ async def _handle_post_request(
373373
response_message = None
374374

375375
# Use similar approach to SSE writer for consistency
376-
async for item in request_stream_reader:
377-
received_message, _ = item # Extract message, ignore event_id
376+
async for received_message, _ in request_stream_reader:
378377
# If it's a response, this is what we're waiting for
379378
if isinstance(
380379
received_message.root, JSONRPCResponse | JSONRPCError
@@ -425,9 +424,10 @@ async def sse_writer():
425424
try:
426425
async with sse_stream_writer, request_stream_reader:
427426
# Process messages from the request-specific stream
428-
async for item in request_stream_reader:
429-
received_message, event_id = item
430-
427+
async for (
428+
received_message,
429+
event_id,
430+
) in request_stream_reader:
431431
# Build the event data
432432
event_data = {
433433
"event": "message",

0 commit comments

Comments
 (0)