From a61f67be17cd16a68dd5eca0c2146c401392fd8a Mon Sep 17 00:00:00 2001 From: Wish Wu Date: Wed, 23 Apr 2025 10:28:12 +0800 Subject: [PATCH] Fix errors when mounting to non-root directories. --- README.md | 5 ++++- src/mcp/server/fastmcp/server.py | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0ca039ae3..c6a17a05f 100644 --- a/README.md +++ b/README.md @@ -372,10 +372,13 @@ from mcp.server.fastmcp import FastMCP mcp = FastMCP("My App") +# Customize a mount path +mcp_mount_path = '/mcp' + # Mount the SSE server to the existing ASGI server app = Starlette( routes=[ - Mount('/', app=mcp.sse_app()), + Mount(mcp_mount_path, app=mcp.sse_app(mcp_mount_path=mcp_mount_path)), ] ) diff --git a/src/mcp/server/fastmcp/server.py b/src/mcp/server/fastmcp/server.py index f3bb2586a..2e61f1fdb 100644 --- a/src/mcp/server/fastmcp/server.py +++ b/src/mcp/server/fastmcp/server.py @@ -477,9 +477,9 @@ async def run_sse_async(self) -> None: server = uvicorn.Server(config) await server.serve() - def sse_app(self) -> Starlette: + def sse_app(self, mcp_mount_path: str = '') -> Starlette: """Return an instance of the SSE server app.""" - sse = SseServerTransport(self.settings.message_path) + sse = SseServerTransport(mcp_mount_path + self.settings.message_path) async def handle_sse(request: Request) -> None: async with sse.connect_sse(