Skip to content

feat(http): add stateless Streamable HTTP mode#943

Open
LevSky22 wants to merge 2 commits into
czlonkowski:mainfrom
LevSky22:feat/stateless-streamable-http
Open

feat(http): add stateless Streamable HTTP mode#943
LevSky22 wants to merge 2 commits into
czlonkowski:mainfrom
LevSky22:feat/stateless-streamable-http

Conversation

@LevSky22

@LevSky22 LevSky22 commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add opt-in MCP_HTTP_TRANSPORT_MODE=stateless while preserving the current stateful default
  • use request-scoped MCP servers/transports for POST requests without issuing or retaining session IDs
  • reject GET/DELETE on /mcp in stateless mode and document the lifecycle tradeoffs
  • keep N8N_MODE independent so its client-compatible tool descriptions work with either transport lifecycle

Verification

  • npm run typecheck
  • npm run build
  • focused HTTP transport suite: 55/55 passing
  • focused N8N_MODE tool-description suite: 4/4 passing
  • Docker protocol smoke: initialize, ping with a stale session header, tools/list, authenticated tool call, auth/tenant failures, GET/DELETE 405
  • client smoke tests: Codex HTTP MCP, Hermes HTTP MCP (including repeated keepalives), and n8n 2.30.7 MCP Client Tool
  • canary soak completed without post-cutover session-lifecycle errors

The broader unit run completed with 5,097 passing and 35 skipped; 186 database-dependent tests failed because the local sql.js build lacks FTS5 (no such module: fts5), unrelated to this transport change.

@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@LevSky22
LevSky22 marked this pull request as ready for review July 21, 2026 04:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant