diff --git a/backend/src/api/app.py b/backend/src/api/app.py index 7a8d3e8..b388a7e 100644 --- a/backend/src/api/app.py +++ b/backend/src/api/app.py @@ -4,8 +4,8 @@ from pathlib import Path import asyncpg from dishka.integrations.fastapi import DishkaRoute, FromDishka, setup_dishka -from fastapi import FastAPI -from fastapi.responses import FileResponse +from fastapi import FastAPI, Request +from fastapi.responses import FileResponse, RedirectResponse from fastmcp.utilities.lifespan import combine_lifespans from starlette.applications import Starlette @@ -88,6 +88,13 @@ app.include_router(watches.router) app.mount("/mcp", mcp_app) + +@app.api_route("/mcp", methods=["GET", "POST", "DELETE"]) +async def mcp_trailing_slash(request: Request) -> RedirectResponse: + query = request.url.query + return RedirectResponse(f"/mcp/?{query}" if query else "/mcp/", status_code=307) + + _spa_dir = Path(env.api.static_dir).resolve() if _spa_dir.is_dir(): _spa_index = _spa_dir / "index.html"