From e9a94c2724bb9beb7604307be2ec9a1017141ff2 Mon Sep 17 00:00:00 2001 From: LiJia Date: Fri, 7 Mar 2025 09:15:41 +0800 Subject: [PATCH] enable custom path of sse server --- src/mcp/server/fastmcp/server.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/mcp/server/fastmcp/server.py b/src/mcp/server/fastmcp/server.py index 122acebb40..980ae5e71b 100644 --- a/src/mcp/server/fastmcp/server.py +++ b/src/mcp/server/fastmcp/server.py @@ -84,6 +84,8 @@ class Settings(BaseSettings, Generic[LifespanResultT]): # HTTP settings host: str = "0.0.0.0" port: int = 8000 + sse_path: str = "/sse" + message_path: str = "/messages/" # resource settings warn_on_duplicate_resources: bool = True @@ -478,7 +480,7 @@ async def run_sse_async(self) -> None: from starlette.applications import Starlette from starlette.routing import Mount, Route - sse = SseServerTransport("/messages/") + sse = SseServerTransport(self.settings.message_path) async def handle_sse(request): async with sse.connect_sse( @@ -493,8 +495,8 @@ async def handle_sse(request): starlette_app = Starlette( debug=self.settings.debug, routes=[ - Route("/sse", endpoint=handle_sse), - Mount("/messages/", app=sse.handle_post_message), + Route(self.settings.sse_path, endpoint=handle_sse), + Mount(self.settings.message_path, app=sse.handle_post_message), ], ) @@ -658,9 +660,9 @@ async def read_resource(self, uri: str | AnyUrl) -> Iterable[ReadResourceContent Returns: The resource content as either text or bytes """ - assert ( - self._fastmcp is not None - ), "Context is not available outside of a request" + assert self._fastmcp is not None, ( + "Context is not available outside of a request" + ) return await self._fastmcp.read_resource(uri) async def log(