Revert "Add message queue for SSE messages POST endpoint (#459)" (#649)

This commit is contained in:
ihrpr
2025-05-07 16:35:20 +01:00
committed by GitHub
parent c8a14c9dba
commit 9d99aee014
26 changed files with 51 additions and 1247 deletions

View File

@@ -44,7 +44,6 @@ from mcp.server.lowlevel.helper_types import ReadResourceContents
from mcp.server.lowlevel.server import LifespanResultT
from mcp.server.lowlevel.server import Server as MCPServer
from mcp.server.lowlevel.server import lifespan as default_lifespan
from mcp.server.message_queue import MessageDispatch
from mcp.server.session import ServerSession, ServerSessionT
from mcp.server.sse import SseServerTransport
from mcp.server.stdio import stdio_server
@@ -92,11 +91,6 @@ class Settings(BaseSettings, Generic[LifespanResultT]):
sse_path: str = "/sse"
message_path: str = "/messages/"
# SSE message queue settings
message_dispatch: MessageDispatch | None = Field(
None, description="Custom message dispatch instance"
)
# resource settings
warn_on_duplicate_resources: bool = True
@@ -607,13 +601,6 @@ class FastMCP:
def sse_app(self, mount_path: str | None = None) -> Starlette:
"""Return an instance of the SSE server app."""
message_dispatch = self.settings.message_dispatch
if message_dispatch is None:
from mcp.server.message_queue import InMemoryMessageDispatch
message_dispatch = InMemoryMessageDispatch()
logger.info("Using default in-memory message dispatch")
from starlette.middleware import Middleware
from starlette.routing import Mount, Route
@@ -625,12 +612,11 @@ class FastMCP:
normalized_message_endpoint = self._normalize_path(
self.settings.mount_path, self.settings.message_path
)
# Set up auth context and dependencies
sse = SseServerTransport(
normalized_message_endpoint,
message_dispatch=message_dispatch
normalized_message_endpoint,
)
async def handle_sse(scope: Scope, receive: Receive, send: Send):
@@ -646,14 +632,7 @@ class FastMCP:
streams[1],
self._mcp_server.create_initialization_options(),
)
return Response()
@asynccontextmanager
async def lifespan(app: Starlette):
try:
yield
finally:
await message_dispatch.close()
return Response()
# Create routes
routes: list[Route | Mount] = []
@@ -730,10 +709,7 @@ class FastMCP:
# Create Starlette app with routes and middleware
return Starlette(
debug=self.settings.debug,
routes=routes,
middleware=middleware,
lifespan=lifespan,
debug=self.settings.debug, routes=routes, middleware=middleware
)
async def list_prompts(self) -> list[MCPPrompt]: