8
8
import httpx
9
9
from mcp .client .sse import aconnect_sse
10
10
11
- # Mock SSE server using FastAPI
12
11
app = FastAPI ()
13
12
13
+
14
14
@app .get ("/sse" )
15
15
async def sse_endpoint () -> StreamingResponse :
16
16
async def event_stream () -> AsyncGenerator [str , None ]:
17
17
for i in range (3 ):
18
- yield f"data: Hello { i + 1 } \n \n "
18
+ yield f"data: Hello { i + 1 } \n \n "
19
19
await asyncio .sleep (0.1 )
20
+
20
21
return StreamingResponse (event_stream (), media_type = "text/event-stream" )
21
22
23
+
22
24
def run_mock_server () -> None :
23
25
uvicorn .run (app , host = "127.0.0.1" , port = 8012 , log_level = "warning" )
24
26
25
- # MCP client demo to connect to the mock SSE server
27
+
26
28
async def run_demo () -> None :
27
29
server_thread = Thread (target = run_mock_server , daemon = True )
28
30
server_thread .start ()
29
- await asyncio .sleep (1 )
31
+ await asyncio .sleep (1 ) # Wait for the server to start
30
32
31
- messages = []
33
+ messages : list [ str ] = []
32
34
33
35
async with httpx .AsyncClient () as client :
34
36
async with aconnect_sse (client , "GET" , "http://127.0.0.1:8012/sse" ) as event_source :
@@ -41,5 +43,6 @@ async def run_demo() -> None:
41
43
42
44
print ("\n Client demo finished. Messages received:" , messages )
43
45
46
+
44
47
if __name__ == "__main__" :
45
- asyncio .run (run_demo ())
48
+ asyncio .run (run_demo ())
0 commit comments