Skip to content

feat(mcp): serve the HTTP transport statelessly - #146

Merged
aarondpn merged 1 commit into
mainfrom
feat/mcp-stateless-http
Aug 9, 2026
Merged

feat(mcp): serve the HTTP transport statelessly#146
aarondpn merged 1 commit into
mainfrom
feat/mcp-stateless-http

Conversation

@aarondpn

@aarondpn aarondpn commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Was

BuildHTTPHandler sets StreamableHTTPOptions.Stateless = true.

Warum

go-sdk v1.7.0 offers MCP revision 2026-07-28 (sessionless, server/discover instead of the initialize handshake) over streamable HTTP only when the handler is stateless. Without it the HTTP transport is capped at 2025-11-25 while the stdio transport already speaks 2026-07-28.

Every tool is a self-contained Redmine API call, so there is no session state worth keeping.

Auswirkung

  • GET and DELETE now answer 405
  • Stream resumption via Last-Event-ID is gone
  • Older clients negotiate down to 2025-11-25 and keep working unchanged

Verified against the built binary: server/discover + tools/list at 2026-07-28 return 200, legacy initialize still answers 2025-11-25, GET returns 405.

go-sdk v1.7.0 offers MCP revision 2026-07-28 (sessionless, server/discover
instead of the initialize handshake) over streamable HTTP only when the
handler is stateless. Every tool is a self-contained Redmine API call, so
there is no session state worth keeping.

GET and DELETE now answer 405 and stream resumption via Last-Event-ID is
gone; older clients still negotiate down to 2025-11-25 unchanged.
@aarondpn
aarondpn merged commit 0ca5690 into main Aug 9, 2026
7 checks passed
@aarondpn
aarondpn deleted the feat/mcp-stateless-http branch August 9, 2026 08:58
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