aeonshift commited on
Commit
e16055b
·
verified ·
1 Parent(s): a7c7715

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +8 -4
server.py CHANGED
@@ -61,7 +61,7 @@ async def handle_sse(request: Request):
61
  write_stream_reader = write_stream
62
  placeholder_id = f"placeholder_{id(write_stream)}"
63
  write_streams[placeholder_id] = write_stream
64
- sse_writers[placeholder_id] = sse_stream_writer # Store the SSE writer with placeholder ID
65
  logger.info("Starting MCP server with streams")
66
  await server.run(read_stream, write_stream, server.create_initialization_options())
67
  logger.info("MCP server running")
@@ -78,7 +78,7 @@ async def handle_post(request: Request):
78
  session_id = request.query_params.get("session_id")
79
  logger.info(f"Received POST with session_id: {session_id}, message: {message}")
80
 
81
- # Try to find the write_stream and SSE writer, including checking for placeholder IDs
82
  write_stream = write_streams.get(session_id)
83
  sse_writer = sse_writers.get(session_id)
84
  if not write_stream or not sse_writer:
@@ -105,8 +105,12 @@ async def handle_post(request: Request):
105
  }
106
  }
107
  response_data = json.dumps(response)
108
- await sse_writer.send({"event": "message", "data": response_data})
109
- logger.info(f"Sent tools/list response for session {session_id} via SSE")
 
 
 
 
110
  return Response(status_code=202)
111
 
112
  if not write_stream or not sse_writer:
 
61
  write_stream_reader = write_stream
62
  placeholder_id = f"placeholder_{id(write_stream)}"
63
  write_streams[placeholder_id] = write_stream
64
+ sse_writers[placeholder_id] = sse_stream_writer
65
  logger.info("Starting MCP server with streams")
66
  await server.run(read_stream, write_stream, server.create_initialization_options())
67
  logger.info("MCP server running")
 
78
  session_id = request.query_params.get("session_id")
79
  logger.info(f"Received POST with session_id: {session_id}, message: {message}")
80
 
81
+ # Try to find the write_stream and SSE writer
82
  write_stream = write_streams.get(session_id)
83
  sse_writer = sse_writers.get(session_id)
84
  if not write_stream or not sse_writer:
 
105
  }
106
  }
107
  response_data = json.dumps(response)
108
+ try:
109
+ await sse_writer.send({"event": "message", "data": response_data})
110
+ logger.info(f"Sent tools/list response for session {session_id} via SSE")
111
+ except Exception as e:
112
+ logger.error(f"Failed to send SSE response for session {session_id}: {str(e)}")
113
+ return Response(status_code=202)
114
  return Response(status_code=202)
115
 
116
  if not write_stream or not sse_writer: