fix(asgi): redirect /mcp → /mcp/ for clients that omit the trailing slash

Starlette's Mount("/mcp", ...) only matches /mcp/* paths. A POST to bare
/mcp falls through to the catch-all Django mount and returns 404. The
fast-agent MCP client and the README example both used the no-slash URL,
so the validator was never able to initialize a session — every call
landed in django.request.

Adds a 307 redirect at /mcp so any client URL works, and points the
validator config at /mcp/ directly to skip the redirect round-trip.
Also gitignores fastagent.jsonl (a runtime log file fast-agent writes
into the working directory).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-04-29 12:04:42 -04:00
parent e2a6d45b77
commit 1cd556c3f6
4 changed files with 12 additions and 3 deletions

View File

@@ -27,6 +27,6 @@ mcp:
# override the URL in fastagent.secrets.yaml or via Ansible if remote.
mnemosyne:
transport: http
url: "http://localhost:22091/mcp"
url: "http://localhost:22091/mcp/"
# Bearer token in fastagent.secrets.yaml (provisioned via
# `python manage.py create_mcp_token <user>`).