Skip to content

Changelog

New features, improvements, and fixes in every stable xmcp release.

All releases on GitHub ↗

v1.4.0

View on GitHub ↗

Minor Changes

  • 7a3097c: Add optional icons, tags, and enabled metadata for tools, prompts, resources, and resource templates. Expose tags under _meta["xmcp/tags"] and omit disabled components and their generated UI resources from registration, listings, and direct requests.

v1.3.0

View on GitHub ↗

Minor Changes

  • c844b6d: Add image, audio, and embeddedResource content helpers, available from xmcp and xmcp/cloudflare. Add Node-only file-reading variants under xmcp/node.
  • 1656cdc: Support a named complete export on resource template files for URI argument suggestions, including asynchronous and context-dependent completion callbacks. Export ResourceCompletions for typed callback maps.
  • a1f4d67: Add a TanStack Start adapter for React applications on Node.js and Cloudflare Workers, with ESM output, stateless request handling, and automatic setup through init-xmcp.

v1.2.0

View on GitHub ↗

Minor Changes

  • 826c21b: Extend MCP middleware to prompts, resource reads, completion, and component listings, sharing request context across each operation. Check ctx.method before accessing operation-specific parameters in existing tool middleware.
  • 176ac1d: Support a named mcp middleware export in src/middleware.ts for tool calls across HTTP, STDIO, and Node adapters. Middleware can inspect validated arguments, share request-local values with tools, transform results, or short-circuit execution.
  • ae2658a: Allow prompt handlers to return message arrays or full prompt results, preserving message roles, order, descriptions, and metadata. Export the PromptMessage and GetPromptResult types for typed prompt handlers.
  • 0ca4841: Add request-local set/get values and progress/log helpers to getRequestContext(). Progress is optional without a request token, and logging respects the SDK's capability and level checks.
  • b5ca4c8: Add getRequestContext() for read-only access to client identity, HTTP request details, and the cancellation signal from tool handlers and their async helpers.

v1.1.3

View on GitHub ↗

Patch Changes

  • e2c4a5b: Fix Vercel deployments logging Vercel Runtime Timeout Error: Task timed out after 300 seconds on every cold start. The build copied dist/http.js into the function, and that entry starts a server of its own and exports nothing. Vercel's Node launcher fell back to serving the port the entry listened on, and the listening socket kept the instance's event loop alive: the invocation that booted the server never settled and was killed once the function's maximum duration was reached, even though the response had already been sent in milliseconds. The instance died with it, so the next request cold started and repeated the cycle.

    --vercel builds now use a runtime that exports a request handler and never listens, so the platform owns the server and each invocation ends with its response. Standalone (dist/http.js), adapter, and Cloudflare builds are unchanged.

v1.1.1

View on GitHub ↗

Patch Changes

  • 01faeb8: Fix xmcp build --cf / xmcp dev --cf failing with Module not found: Can't resolve '.../node_modules/xmcp/src/runtime/platforms/cloudflare/worker.ts' since src/ stopped shipping in the published package (0.7.1). The Cloudflare worker runtime is now prebuilt into dist/runtime/cloudflare-worker.js like the other runtimes, and the compiler uses that artifact as the --cf entry instead of bundling xmcp's TypeScript source from node_modules.

v1.1.0

View on GitHub ↗

Minor Changes

  • bbe742e: Add extra.sample() so tool handlers can request LLM completions from the connected client via MCP sampling (sampling/createMessage), mirroring extra.elicit(). Supports text/image/audio messages, systemPrompt, maxTokens, modelPreferences, temperature, stopSequences, includeContext, and metadata, and exports the SampleRequest/SampleResult types. The tools/toolChoice sampling loop and task-augmented sampling are rejected with a clear error until the client tool-call flow is wired.

v1.0.0

View on GitHub ↗

Patch Changes

  • 10bdd57: Upgrade to MCP protocol revision 2026-07-28 via the TypeScript SDK v2 (@modelcontextprotocol/server and @modelcontextprotocol/client replace the v1 @modelcontextprotocol/sdk monolith as optional peers, bundled into the runtime).
    • All transports (HTTP, STDIO, Cloudflare Workers, Next.js/Express/Fastify/NestJS adapters) serve both protocol generations: 2026-07-28 envelope requests (including server/discover, resultType, cacheable list results) natively, and 2025-era clients through the SDK's stateless fallback. HTTP stays strictly stateless — a fresh server per request on both paths.
    • New multi round-trip input API for tools: inputRequired, acceptedContent, inputResponse, and createRequestStateCodec are re-exported from xmcp, and tool extras expose inputResponses/requestState. Tools returning inputRequired(...) serve both eras (the legacy shim converts to real elicitation for 2025 clients). extra.elicit() keeps working on 2025-era connections and throws a descriptive error on 2026-07-28 requests.
    • Tool/prompt/resource schemas are registered through the Standard Schema interface with per-field conversion, keeping the zod ^3.25.76 || ^4.0.0 peer range working without cross-instance zod composition.
    • Default CORS allowedHeaders now include the Mcp-Method and Mcp-Name headers required on Streamable HTTP POSTs by 2026-07-28.
    • Client helpers (createHTTPClient, createSTDIOClient) negotiate the protocol version automatically (server/discover probe with fallback to initialize).
    • Server bundles remain single-file (the SDK's lazy validator imports are inlined by the compiler and the runtime prebuild).
    • Fix: the Express adapter no longer references never-injected CORS globals; it reads the injected HTTP_CORS_CONFIG like the other adapters.

v0.8.0

View on GitHub ↗

Changes

  • Split the development compiler into @xmcp-dev/compiler. Existing xmcp dev, xmcp build, and xmcp create scripts continue to work through a small shim, but projects must install the matching compiler version as a development dependency: npm i -D @xmcp-dev/compiler@0.8.0.
  • Production installs no longer include Rspack or TypeScript. Built HTTP and stdio artifacts remain self-contained and can run without node_modules.
  • Added the xmcp/config export so compiler validation uses the config schema from the installed runtime package.
  • Removed the duplicate runtime embedded in the CLI and removed compiler-only schema and Chalk code from the HTTP runtime.
MetricImprovement
Runtime tarball51.08% smaller
Production install89.99% smaller
Production dependencies169 → 2
Development install15.81% smaller
Generated HTTP artifact1.07% smaller

Measures the split independently with the same HTTP fixture on xmcp@0.7.1 and xmcp@0.8.0: the production install falls 89.99% (101.12 MiB to 10.12 MiB), while the generated HTTP artifact remains nearly flat (-1.07%).

v0.7.1

View on GitHub ↗

Patch Changes

  • e3a9f60: Stop shipping src in the published package. Every entry point in main, types, bin, exports, and typesVersions resolves into dist, and no source maps reference src, so the directory was dead weight in the tarball: 223 files down to 71.

v0.7.0

View on GitHub ↗

Minor Changes

  • d5c0f46: Add a Fastify adapter, serve the MCP Server Card at /.well-known/mcp/server-card.json, fix stateless HTTP handling of repeated clientInfo headers, and update dependencies to resolve known security advisories.

v0.6.10

View on GitHub ↗

What's Changed

New Contributors

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.6.9...v0.6.10

v0.6.7

View on GitHub ↗

What's Changed

New Contributors

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.6.6...v0.6.7

v0.6.6

View on GitHub ↗

What's Changed

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.6.5...v0.6.6

v0.6.5

View on GitHub ↗

What's Changed

New Contributors

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.6.4...v0.6.5

v0.6.3

View on GitHub ↗

Core Changes

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.6.2...v0.6.3

v0.6.1

View on GitHub ↗

Core Changes

New Contributors

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.6.0...v0.6.1

v0.5.7

View on GitHub ↗

Core Changes

  • feat: introducing customHome config option
  • automatically setup path alias on init-xmcp
  • feat: skip type check on nextjs adapter mode
  • feat: update adapter mode tool generated syntax
  • fix: include tsx files in tsconfig for default templates
  • add CSS module type declarations for zero-config ts support
  • feat: example initialization via cli
  • add globals.css auto-detection

Contributors

@valebearzotti @fveiraswww @mdottavio

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.5.6...v0.5.7

v0.5.5

View on GitHub ↗

Core Changes

  • Integrate MCP apps protocol
  • update all React & Next dependencies
  • Replace CDN externals with direct bundling
  • replace individual inputs with toggle selector for init-xmcp
  • Support Zod v4 - backwards compatible with v3
  • Tailwind and CSS loaders to React tools
  • always preserve mcp-protocol-version and mcp-session-id headers
  • bump better-auth to v1.4.5 - address security issues

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.5.4...v0.5.5

v0.3.5

View on GitHub ↗

Core Changes

  • Add support for Structured Content output
  • Complete OpenAI widget metadata & handling
  • Experimental SSR + Hydration feature. Support returning React components in tool handlers.
  • Fix toggle off paths from config on unselection (create-xmcp-app)
  • bug fixing & improvements

New Contributors

  • @fedealvarezcampos made their first contribution
  • @fveiraswww made their first contribution

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.3.4...v0.3.5

v0.3.3

View on GitHub ↗

What's Changed

  • Support for tools returning UI & automatically handling resource creation & injection.
  • Simpler Apps SDK DX

v0.2.1

View on GitHub ↗

What's Changed

  • import { tools } compatible with the AI SDK
  • Adds autocomplete to tools registry
  • Fix generate-config in init-xmcp to output valid paths object

Misc

  • Added xmcp <> AI SDK example
  • Added xmcp <> MCP UI example
  • Update docs to reflect prompts
  • Update docs to reflect Cursor and Claude Desktop connections

New Contributors

  • @joelachance contributed on the AI SDK tools POC

Full Changelog: https://github.com/basementstudio/xmcp/compare/v0.2.0...v0.2.1

v0.1.0

View on GitHub ↗

The TypeScript MCP Framework

xmcp is a framework for building and shipping MCP applications with TypeScript. Designed with DX in mind, it streamlines development and lowers the barrier to entry for anyone looking to create and deploy powerful tools on top of the Model Context Protocol ecosystem.

Features

⊹ File System Routing - Tools are auto-registered from a tools directory
⊹ Hot Reloading - Instant development feedback
⊹ Middlewares - Toolkit for shipping authentication and custom middlewares
⊹ Extensible Configuration - Customizable configuration for your MCP server
⊹ Deploy Anywhere - Flexible deployment across any platform
⊹ Vercel Support - Deploy-ready for Vercel out of the box

One framework to rule them all