@@ -46,6 +46,7 @@ async def handle_sse(request):
46
46
from starlette .types import Receive , Scope , Send
47
47
48
48
import mcp .types as types
49
+ from mcp .shared .message import SessionMessage
49
50
50
51
logger = logging .getLogger (__name__ )
51
52
@@ -63,9 +64,7 @@ class SseServerTransport:
63
64
"""
64
65
65
66
_endpoint : str
66
- _read_stream_writers : dict [
67
- UUID , MemoryObjectSendStream [types .JSONRPCMessage | Exception ]
68
- ]
67
+ _read_stream_writers : dict [UUID , MemoryObjectSendStream [SessionMessage | Exception ]]
69
68
70
69
def __init__ (self , endpoint : str ) -> None :
71
70
"""
@@ -85,11 +84,11 @@ async def connect_sse(self, scope: Scope, receive: Receive, send: Send):
85
84
raise ValueError ("connect_sse can only handle HTTP requests" )
86
85
87
86
logger .debug ("Setting up SSE connection" )
88
- read_stream : MemoryObjectReceiveStream [types . JSONRPCMessage | Exception ]
89
- read_stream_writer : MemoryObjectSendStream [types . JSONRPCMessage | Exception ]
87
+ read_stream : MemoryObjectReceiveStream [SessionMessage | Exception ]
88
+ read_stream_writer : MemoryObjectSendStream [SessionMessage | Exception ]
90
89
91
- write_stream : MemoryObjectSendStream [types . JSONRPCMessage ]
92
- write_stream_reader : MemoryObjectReceiveStream [types . JSONRPCMessage ]
90
+ write_stream : MemoryObjectSendStream [SessionMessage ]
91
+ write_stream_reader : MemoryObjectReceiveStream [SessionMessage ]
93
92
94
93
read_stream_writer , read_stream = anyio .create_memory_object_stream (0 )
95
94
write_stream , write_stream_reader = anyio .create_memory_object_stream (0 )
@@ -109,12 +108,12 @@ async def sse_writer():
109
108
await sse_stream_writer .send ({"event" : "endpoint" , "data" : session_uri })
110
109
logger .debug (f"Sent endpoint event: { session_uri } " )
111
110
112
- async for message in write_stream_reader :
113
- logger .debug (f"Sending message via SSE: { message } " )
111
+ async for session_message in write_stream_reader :
112
+ logger .debug (f"Sending message via SSE: { session_message } " )
114
113
await sse_stream_writer .send (
115
114
{
116
115
"event" : "message" ,
117
- "data" : message .model_dump_json (
116
+ "data" : session_message . message .model_dump_json (
118
117
by_alias = True , exclude_none = True
119
118
),
120
119
}
@@ -169,7 +168,8 @@ async def handle_post_message(
169
168
await writer .send (err )
170
169
return
171
170
172
- logger .debug (f"Sending message to writer: { message } " )
171
+ session_message = SessionMessage (message )
172
+ logger .debug (f"Sending session message to writer: { session_message } " )
173
173
response = Response ("Accepted" , status_code = 202 )
174
174
await response (scope , receive , send )
175
- await writer .send (message )
175
+ await writer .send (session_message )
0 commit comments