aeonshift commited on
Commit
d0b7a26
·
verified ·
1 Parent(s): dbcccf3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -7
app.py CHANGED
@@ -121,7 +121,9 @@ transport = SseServerTransport("/airtable/mcp")
121
  @app.get("/airtable/mcp")
122
  async def handle_sse(request: Request):
123
  logger.debug("Handling SSE connection request")
 
124
  async def sse_writer():
 
125
  logger.debug("Starting SSE writer")
126
  async with sse_stream_writer, write_stream_reader:
127
  endpoint_data = "/airtable/mcp?session_id={session_id}"
@@ -132,20 +134,20 @@ async def handle_sse(request: Request):
132
  async for session_message in write_stream_reader:
133
  logger.debug(f"Sending message via SSE: {session_message}")
134
  message_data = session_message.message.model_dump_json(by_alias=True, exclude_none=True)
135
- await sse_stream_writer.send(
136
- {
137
- "event": "message",
138
- "data": message_data
139
- }
140
- )
141
- # Extract session_id from the endpoint event
142
  message = json.loads(message_data)
 
143
  if message.get("event") == "endpoint":
144
  endpoint_url = message.get("data", "")
145
  if "session_id=" in endpoint_url:
146
  session_id = endpoint_url.split("session_id=")[1]
147
  write_streams[session_id] = write_stream
148
  logger.debug(f"Extracted session_id: {session_id}")
 
 
 
 
 
 
149
 
150
  sse_stream_writer, sse_stream_reader = anyio.create_memory_object_stream(0)
151
  try:
 
121
  @app.get("/airtable/mcp")
122
  async def handle_sse(request: Request):
123
  logger.debug("Handling SSE connection request")
124
+ session_id = None # We'll extract this from the endpoint event
125
  async def sse_writer():
126
+ nonlocal session_id
127
  logger.debug("Starting SSE writer")
128
  async with sse_stream_writer, write_stream_reader:
129
  endpoint_data = "/airtable/mcp?session_id={session_id}"
 
134
  async for session_message in write_stream_reader:
135
  logger.debug(f"Sending message via SSE: {session_message}")
136
  message_data = session_message.message.model_dump_json(by_alias=True, exclude_none=True)
 
 
 
 
 
 
 
137
  message = json.loads(message_data)
138
+ # Extract session_id from the endpoint event
139
  if message.get("event") == "endpoint":
140
  endpoint_url = message.get("data", "")
141
  if "session_id=" in endpoint_url:
142
  session_id = endpoint_url.split("session_id=")[1]
143
  write_streams[session_id] = write_stream
144
  logger.debug(f"Extracted session_id: {session_id}")
145
+ await sse_stream_writer.send(
146
+ {
147
+ "event": "message",
148
+ "data": message_data
149
+ }
150
+ )
151
 
152
  sse_stream_writer, sse_stream_reader = anyio.create_memory_object_stream(0)
153
  try: