Skip to content

chore: bump ext-apps + example servers to 1.7.1, sdk to 1.29.0#44

Open
ochafik wants to merge 1 commit intomainfrom
deps/ext-apps-1.7.1
Open

chore: bump ext-apps + example servers to 1.7.1, sdk to 1.29.0#44
ochafik wants to merge 1 commit intomainfrom
deps/ext-apps-1.7.1

Conversation

@ochafik
Copy link
Copy Markdown
Contributor

@ochafik ochafik commented Apr 27, 2026

Summary

Updates the mounted MCP App example servers and @modelcontextprotocol/ext-apps to 1.7.1 (release notes).

ext-apps@1.7.x peers on @modelcontextprotocol/sdk ^1.29.0, so this also bumps the pinned sdk from 1.24.21.29.0 and adapts to its StreamableHTTPServerTransport refactor (now wraps a web-standard transport via @hono/node-server).

Code changes

  • redisTransport.tssessionId is now a readonly getter on the Node wrapper; inject it (and _initialized) on the underlying web-standard transport so resumed sessions pass validateSession. Also guard message.id, which is now optional on JSONRPCMessage.
  • shttp.integration.test.tshandleRequest now routes through @hono/node-server, so the mock IncomingMessage needs url/host/rawHeaders/on/off/resume, and the mcp-session-id response header now arrives via writeHead instead of setHeader.

Note

The redisTransport resume path reaches into the private _webStandardTransport field to set sessionId and _initialized. SDK 1.29 doesn't expose a public way to attach a pre-known session ID to a fresh transport (the previous approach of assigning transport.sessionId directly no longer compiles since it's now a getter). The underlying WebStandardStreamableHTTPServerTransport.sessionId is a public writable field — only the path to reach it is private. Worth raising upstream for a supported API; tracked as a follow-up.

Test Plan

  • npm run build
  • npm run lint
  • npm run typecheck
  • npm test — 79/79 ✅
  • Smoke-tested node dist/index.js locally: POST /pdf/mcp and POST /debug/mcp both return valid initialize responses

ext-apps@1.7.x peers on @modelcontextprotocol/sdk ^1.29.0, which
required bumping the pinned sdk from 1.24.2 and adapting to its
StreamableHTTPServerTransport refactor:

- redisTransport: sessionId is now a readonly getter on the Node
  wrapper; inject it (and _initialized) on the underlying web-standard
  transport so resumed sessions validate. Also guard message.id which
  is now optional on JSONRPCMessage.
- shttp.integration.test: handleRequest now routes through
  @hono/node-server, so the mock IncomingMessage needs url/host/
  rawHeaders/on/off/resume, and the session-id header now arrives via
  writeHead instead of setHeader.
@ochafik ochafik requested a review from felixweinberger April 27, 2026 16:19
Copy link
Copy Markdown

@felixweinberger felixweinberger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

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.

2 participants