Spaces:
Paused
Paused
Update app.py
Browse files
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:
|