Skip to content

chore: bump ext-apps + example servers to 2.0.0 - #54

Merged
ochafik merged 1 commit into
modelcontextprotocol:mainfrom
ochafik:deps/ext-apps-2.0.0
Sep 9, 2026
Merged

chore: bump ext-apps + example servers to 2.0.0#54
ochafik merged 1 commit into
modelcontextprotocol:mainfrom
ochafik:deps/ext-apps-2.0.0

Conversation

@ochafik

@ochafik ochafik commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Bumps @modelcontextprotocol/ext-apps and the 15 example server packages from ^1.7.5 to ^2.0.0 (release notes).

ext-apps 2.0 is built on the MCP TypeScript SDK 2.0 split packages, so this is a little more than a version tick:

  • src/modules/example-apps/index.ts connects each stateless example server to NodeStreamableHTTPServerTransport from @modelcontextprotocol/node instead of the SDK 1.x StreamableHTTPServerTransport, and types the factory map as the 2.0 McpServer. Same stateless pattern, same request handling; the two close() calls now return promises.
  • The rest of this host (OAuth provider and router, the root /mcp handlers, the Redis transport) stays on @modelcontextprotocol/sdk 1.29. The 1.x and 2.0 packages have different names, so both install side by side; the lockfile has one copy of each.
  • zod moves to 4 for the whole tree: ext-apps 2.0 peers on ^4.2.0, sdk 1.29 accepts ^3.25 || ^4.0, and the host already imports zod/v4.
  • The hello-world View takes CallToolResult from @modelcontextprotocol/client.

User-visible: every example server now advertises JSON Schema 2020-12 on its tools' outputSchema (fixes tool-call rejection on clients with a strict 2020-12 validator, modelcontextprotocol/ext-apps#765). The MCP Apps wire protocol is unchanged, so hosts on ext-apps 1.x keep rendering these apps.

Verification

In a clean node:22 container (mirrors CI): npm cinpm run buildnpm test (91/91) → npm run lint, all green; tsc --noEmit clean. Lockfile resolves only from registry.npmjs.org.

Runtime, on the built server: initialize succeeds against /budget-allocator/mcp, /pdf/mcp and /lazy-auth/mcp; tools/list on /budget-allocator/mcp returns the app tool with its ui:// resource and a 2020-12 outputSchema; the root /mcp still answers 401 unauthenticated on the untouched SDK 1.x auth stack.

ext-apps 2.0 and the 15 example server packages are built on the MCP
TypeScript SDK 2.0 split packages, so the stateless example mounts in
src/modules/example-apps now connect each server to
NodeStreamableHTTPServerTransport from @modelcontextprotocol/node; the
factory map is typed as the 2.0 McpServer. The rest of this host (OAuth,
the root /mcp handlers, Redis transport) stays on @modelcontextprotocol/sdk
1.29, which installs alongside the 2.0 packages. zod moves to 4 for the
whole tree: ext-apps 2.0 peers on ^4.2.0, sdk 1.29 accepts ^3.25 || ^4.0,
and the host already imports zod/v4. The hello-world View takes
CallToolResult from @modelcontextprotocol/client.
@ochafik
ochafik merged commit ca6133a into modelcontextprotocol:main Sep 9, 2026
1 check passed
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