FastAPI POST Endpoint Not Working with Gradio MCP Server on Hugging Face Spaces

#8
by selinazarzour - opened

Hi all,

I am trying to add a FastAPI POST endpoint to my Gradio MCP server app (running on Hugging Face Spaces) so that my agent can send POST requests to /gradio_api/mcp/messages/. The goal is to allow my agent to communicate with the MCP server using POST, as required by the agent’s protocol.

I followed the recommended approach of attaching a FastAPI POST handler after launching the Gradio app, like this:
if name == "main":
app = demo.launch(mcp_server=True, ...)
try:
from fastapi import Request
from fastapi.responses import JSONResponse
if hasattr(app, "app") and app.app is not None:
fastapi_app = app.app
@fastapi_app.post("/gradio_api/mcp/messages/")
async def mcp_messages(request: Request):
data = await request.json()
return JSONResponse({"status": "received", "data": data})
except Exception as e:
print("Exception while registering FastAPI POST handler:", e)

However, I keep getting errors such as:
Import "fastapi" could not be resolved (even though FastAPI is in requirements.txt)
Or, the app fails to initialize on Spaces with a 500 error or “application does not seem to be initialized”.

Why I need this:
My agent connects to the MCP server via SSE, but also needs to POST messages to /gradio_api/mcp/messages/. Without this POST endpoint, the agent cannot communicate fully with the server.

Questions:
Is this the correct way to add a FastAPI POST endpoint to a Gradio app on Hugging Face Spaces?
Is there a better or more reliable way to expose custom POST endpoints alongside Gradio’s MCP server?
Are there any known issues with FastAPI support or import resolution on Hugging Face Spaces?

Sign up or log in to comment