Skip to content

Commit e781013

Browse files
committed
Apply Unicode line separator fix to streamable HTTP client
Use compliant_aiter_sse in streamable_http.py to handle Unicode line separator characters correctly, preventing the same issue that affected the SSE client.
1 parent d1d4fb2 commit e781013

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/mcp/client/streamable_http.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
1919
from httpx_sse import EventSource, ServerSentEvent, aconnect_sse
2020

21+
from mcp.client.sse import compliant_aiter_sse
2122
from mcp.shared._httpx_utils import McpHttpClientFactory, create_mcp_http_client
2223
from mcp.shared.message import ClientMessageMetadata, SessionMessage
2324
from mcp.types import (
@@ -211,7 +212,8 @@ async def handle_get_stream(
211212
event_source.response.raise_for_status()
212213
logger.debug("GET SSE connection established")
213214

214-
async for sse in event_source.aiter_sse():
215+
# Use compliant SSE iterator to handle Unicode correctly (issue #1356)
216+
async for sse in compliant_aiter_sse(event_source):
215217
await self._handle_sse_event(sse, read_stream_writer)
216218

217219
except Exception as exc:
@@ -240,7 +242,8 @@ async def _handle_resumption_request(self, ctx: RequestContext) -> None:
240242
event_source.response.raise_for_status()
241243
logger.debug("Resumption GET SSE connection established")
242244

243-
async for sse in event_source.aiter_sse():
245+
# Use compliant SSE iterator to handle Unicode correctly (issue #1356)
246+
async for sse in compliant_aiter_sse(event_source):
244247
is_complete = await self._handle_sse_event(
245248
sse,
246249
ctx.read_stream_writer,
@@ -323,7 +326,8 @@ async def _handle_sse_response(
323326
"""Handle SSE response from the server."""
324327
try:
325328
event_source = EventSource(response)
326-
async for sse in event_source.aiter_sse():
329+
# Use compliant SSE iterator to handle Unicode correctly (issue #1356)
330+
async for sse in compliant_aiter_sse(event_source):
327331
is_complete = await self._handle_sse_event(
328332
sse,
329333
ctx.read_stream_writer,

0 commit comments

Comments
 (0)