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:
|