Skip to content

Commit fe2c283

Browse files
fix: lazy import sse_starlette to reduce import time
1 parent a3a4b8d commit fe2c283

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

src/mcp/server/sse.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ async def handle_sse(request):
4646
import anyio
4747
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
4848
from pydantic import ValidationError
49-
from sse_starlette import EventSourceResponse
5049
from starlette.requests import Request
5150
from starlette.responses import Response
5251
from starlette.types import Receive, Scope, Send
@@ -185,6 +184,8 @@ async def response_wrapper(scope: Scope, receive: Receive, send: Send):
185184
In this case we close our side of the streams to signal the client that
186185
the connection has been closed.
187186
"""
187+
from sse_starlette import EventSourceResponse
188+
188189
await EventSourceResponse(content=sse_stream_reader, data_sender_callable=sse_writer)(
189190
scope, receive, send
190191
)

src/mcp/server/streamable_http.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import anyio
2121
from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
2222
from pydantic import ValidationError
23-
from sse_starlette import EventSourceResponse
2423
from starlette.requests import Request
2524
from starlette.responses import Response
2625
from starlette.types import Receive, Scope, Send
@@ -613,6 +612,8 @@ async def sse_writer():
613612
self._sse_stream_writers.pop(request_id, None)
614613
await self._clean_up_memory_streams(request_id)
615614

615+
from sse_starlette import EventSourceResponse
616+
616617
# Create and start EventSourceResponse
617618
# SSE stream mode (original behavior)
618619
# Set up headers
@@ -730,6 +731,8 @@ async def standalone_sse_writer():
730731
logger.debug("Closing standalone SSE writer")
731732
await self._clean_up_memory_streams(GET_STREAM_KEY)
732733

734+
from sse_starlette import EventSourceResponse
735+
733736
# Create and start EventSourceResponse
734737
response = EventSourceResponse(
735738
content=sse_stream_reader,
@@ -934,6 +937,8 @@ async def send_event(event_message: EventMessage) -> None:
934937
except Exception:
935938
logger.exception("Error in replay sender")
936939

940+
from sse_starlette import EventSourceResponse
941+
937942
# Create and start EventSourceResponse
938943
response = EventSourceResponse(
939944
content=sse_stream_reader,

0 commit comments

Comments
 (0)