Skip to content

v0.7.0

Choose a tag to compare

@paulbalandan paulbalandan released this 05 Aug 06:49
· 280 commits to 1.x since this release
v0.7.0
8c17e05

What's Changed

Introduces the SEP-2133 extensions framework and the first extension built on it, tasks (SEP-2663). Task status is delivered by polling only, which SEP-2663 makes conformant.

Added

  • The SEP-2133 extensions framework. An extension declares its capability identifier, settings, and the methods it owns, enabled via ServerBuilder::enableExtension() / ClientBuilder::enableExtension(). Extensions are disabled by default and every declaration is validated at enable time.
  • Extension capability negotiation on both sides. A server answers an extension-owned request from a client that did not declare the extension with -32021. A client refuses an extension's outbound methods against a server that did not advertise it.
  • The tasks extension (io.modelcontextprotocol/tasks, SEP-2663) under Nexus\Mcp\Extension\Tasks. It serves tasks/get, tasks/update and tasks/cancel, and brokers tools/call into long-running tasks. The TaskClient facade calls tools as tasks, polls at the server-suggested interval, and answers input_required rounds through a resolver.
  • RequestHandlerDecoratorInterface, the seam for wrapping the handler that serves a spec-registry method at build() time. Treat its shape as provisional while 0.x lasts.
  • Client::stampMeta() and Client::mintRequestId() are public, so hand-built sendRequest() requests carry the same lifecycle _meta and id scheme the typed methods use.
  • ResultType::Task and the TaskHandleResult marker, and the Mcp-Name header mirrors params.taskId on the tasks methods.

Changed

  • ServerBuilder::addRequestHandler() / addNotificationHandler() and their ClientBuilder counterparts take the envelope class that parses the registered method (see BREAKING_CHANGES.md).

Fixed

  • Vendor-method handlers registered via addRequestHandler() / addNotificationHandler() were unreachable: the parser answered -32601 before dispatch consulted them.
  • A vendor or extension handler returning a result outside the spec's typed pairs was refused as an internal error. Non-spec methods now wrap any result in the generic response envelope.
  • A request parsed by a user-registered class without RequestParams-shaped params crashed into a -32603. It is now rejected as -32600 with the echoed id.

Full Changelog: v0.6.0...v0.7.0