You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
django-stateless-mcp 0.1.4
Added
Subscription streams (SEP-2575).subscriptions/listen — the
2026-07-28 replacement for the standing GET stream, whose POST response is
itself the stream — is now served: under ASGI the response streams live SSE
frames (ack, then filtered, subscription-id-tagged events) until the client
disconnects; under WSGI, where a live stream would pin a worker, the view
answers an explicit 501 unsupported_deployment instead of hanging. Routed
by the spec's required mcp-method header; every other request is
byte-identical to before. Wire an external SubscriptionBus
(MCPServer(subscriptions=…)) for multi-replica event fan-out. The
conformance suite's server-stateless scenario now passes 30/30 and has
left the expected-failures baseline. (ADR-0020)
Fixed
Worker-thread database connections are now recycled. Sync tools run
in the SDK's thread pool, which Django's request_finished cleanup never
reaches — connections opened there were never aged out or health-checked,
a slow stale-connection leak under sustained load. The view now runs
Django's own close_old_connections inside that pool after each request,
honouring CONN_MAX_AGE exactly as request threads do. (ADR-0021)
Changed
mcp_view's published return annotation widens to HttpResponseBase
(streaming responses are not HttpResponse subclasses).
The example project registers test_trigger_tool_change / test_trigger_prompt_change tools and an in-memory subscription bus.