diff --git a/src/monarch_mcp_custom/server.py b/src/monarch_mcp_custom/server.py index edf134c..e39be99 100644 --- a/src/monarch_mcp_custom/server.py +++ b/src/monarch_mcp_custom/server.py @@ -13,7 +13,7 @@ from dotenv import load_dotenv from fastmcp import FastMCP from starlette.applications import Starlette from starlette.responses import JSONResponse -from starlette.routing import Route +from starlette.routing import Route, Mount from mcp.server.sse import SseServerTransport import uvicorn @@ -179,28 +179,14 @@ async def health_check(request): def create_app(): """Create the Starlette application with MCP at /mcp.""" - # SSE Transport following the "newer http-streamable" convention: - # Stream endpoint at /mcp, messages at /mcp/messages - sse = SseServerTransport("/mcp/messages") - - async def handle_sse(scope, receive, send): - async with sse.connect_sse(scope, receive, send) as ( - read_stream, - write_stream, - ): - await mcp._mcp_server.run( - read_stream, - write_stream, - mcp._mcp_server.create_initialization_options(), - ) + mcp_app = mcp.http_app() routes = [ Route("/health", health_check, methods=["GET"]), - Route("/mcp", endpoint=handle_sse), - Route("/mcp/messages", endpoint=sse.handle_post_message, methods=["POST"]), + Mount("/", app=mcp_app), ] - return Starlette(routes=routes, lifespan=mcp._lifespan) + return Starlette(routes=routes, lifespan=mcp_app.lifespan) app = create_app()