v0.12.0: MCP SDK v2 and protocol revision 2026-07-28
MCP SDK v2 and protocol revision 2026-07-28
@modelcontextprotocol/server+@modelcontextprotocol/clientreplace@modelcontextprotocol/sdkand@hono/mcp; every HTTP endpoint serves revision 2026-07-28 alongside the negotiated 2025 era (#305)ctx.requestInput(spec)andctx.inputsreplacectx.elicit— one handler serves both eras, withexpectInputRequiredandcreateMockContext({ inputResponses, requestState })for driving the re-entry roundContext extends RequestContextandRequestContextis closed —extrapluswithExtra(ctx, fields)replace the removed index signature (#110)- The experimental tasks surface is gone upstream:
task: true,TaskManager,ctx.progress, thetaskscapability, the./taskssubpath, andTASK_STORE_* - Tool inputs are strict — an undeclared argument key is rejected by name, and
inputSchemaadvertisesadditionalProperties: false(#232) - The advertised
outputSchemadeclares the error envelope, andtool()rejects anerrorfield onoutputorenrichment(#241) resources: { subscribe: true }is advertised and backed, andctx.notifyResourceUpdated(uri)reaches 2026-era clients (#354)ctx.logalso emitsnotifications/message, gated by the client'slogging/setLevel- Advertised JSON Schema is 2020-12, and
prompt()argument requiredness follows the emitted schema (#258) - A handler
ctxno longer leaks through service errors — both the error and log sinks project toRequestContextvia the newtoCanonicalContextbefore serializing - Also fixed: flat
path: messagevalidation text (#66),-32602for an unknown tool,415on a non-JSONContent-Type, a refined output schema registering again,operationandextracarried onto the handler context, aninput_requiredround no longer counted as a failure, and handler notifications reaching every transport - Internal: skills and telemetry docs refreshed for SDK v2, the task-handler duck-type dropped from definition discovery, Biome config schema synced to 2.5.8
- Upgrading: swap the SDK imports, delete task tools, rewrite
ctx.elicitcalls, rename anyerroroutput field — the changelog entry lists the ordered steps - deps:
openaipeer widens to^6.48.0 || ^7.0.0,nanoidpinned inoverrides, and dev-dep bumps clear the transitiveundiciadvisory