@@ -38,14 +38,19 @@ async def handle_sse(request):
38
38
from uuid import UUID , uuid4
39
39
40
40
import anyio
41
- from anyio .streams .memory import MemoryObjectReceiveStream , MemoryObjectSendStream
42
41
from pydantic import ValidationError
43
42
from sse_starlette import EventSourceResponse
44
43
from starlette .requests import Request
45
44
from starlette .responses import Response
46
45
from starlette .types import Receive , Scope , Send
47
46
48
47
import mcp .types as types
48
+ from mcp .server .models import (
49
+ ReadStream ,
50
+ ReadStreamWriter ,
51
+ WriteStream ,
52
+ WriteStreamReader ,
53
+ )
49
54
50
55
logger = logging .getLogger (__name__ )
51
56
@@ -63,9 +68,7 @@ class SseServerTransport:
63
68
"""
64
69
65
70
_endpoint : str
66
- _read_stream_writers : dict [
67
- UUID , MemoryObjectSendStream [types .JSONRPCMessage | Exception ]
68
- ]
71
+ _read_stream_writers : dict [UUID , ReadStreamWriter ]
69
72
70
73
def __init__ (self , endpoint : str ) -> None :
71
74
"""
@@ -85,11 +88,11 @@ async def connect_sse(self, scope: Scope, receive: Receive, send: Send):
85
88
raise ValueError ("connect_sse can only handle HTTP requests" )
86
89
87
90
logger .debug ("Setting up SSE connection" )
88
- read_stream : MemoryObjectReceiveStream [ types . JSONRPCMessage | Exception ]
89
- read_stream_writer : MemoryObjectSendStream [ types . JSONRPCMessage | Exception ]
91
+ read_stream : ReadStream
92
+ read_stream_writer : ReadStreamWriter
90
93
91
- write_stream : MemoryObjectSendStream [ types . JSONRPCMessage ]
92
- write_stream_reader : MemoryObjectReceiveStream [ types . JSONRPCMessage ]
94
+ write_stream : WriteStream
95
+ write_stream_reader : WriteStreamReader
93
96
94
97
read_stream_writer , read_stream = anyio .create_memory_object_stream (0 )
95
98
write_stream , write_stream_reader = anyio .create_memory_object_stream (0 )
0 commit comments