From 0d6ff1bbf4599eab49e149824c944c583d7c21b6 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 9 Jul 2025 12:10:32 -0700 Subject: [PATCH] Add streamable HTTP to Python SDK docs --- README.md | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3b24ee707..3c9ae4cfc 100644 --- a/README.md +++ b/README.md @@ -838,10 +838,35 @@ The streamable HTTP transport supports: ### Mounting to an Existing ASGI Server -> **Note**: SSE transport is being superseded by [Streamable HTTP transport](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http). - By default, SSE servers are mounted at `/sse` and Streamable HTTP servers are mounted at `/mcp`. You can customize these paths using the methods described below. +#### Streamable HTTP servers + +The following example shows how to use `streamable_http_app()`, a method that returns a `Starlette` application object. +You can then append additional routes to that application as needed. + +``` +from starlette.routing import Route + +mcp = FastMCP("My App") + +app = mcp.streamable_http_app() +# Additional non-MCP routes can be added like so: +# app.router.routes.append(Route("/", endpoint=other_route_function)) +``` + +To customize the route from the default of "/mcp", either specify the `streamable_http_path` option for the `FastMCP` constructor, +or set `FASTMCP_STREAMABLE_HTTP_PATH` environment variable. + +Note that in Starlette and FastAPI (which is based on Starlette), the "/mcp" route will redirect to "/mcp/", +so you may need to use "/mcp/" when pointing MCP clients at your servers. + +For more information on mounting applications in Starlette, see the [Starlette documentation](https://www.starlette.io/routing/#submounting-routes). + +#### SSE servers + +> **Note**: SSE transport is being superseded by [Streamable HTTP transport](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http). + You can mount the SSE server to an existing ASGI server using the `sse_app` method. This allows you to integrate the SSE server with other ASGI applications. ```python