chore(deps): update dependency tmcp to v1.20.0 - #76
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/tmcp-1.x-lockfile
branch
2 times, most recently
from
June 1, 2026 21:04
857ed9d to
fd81d9a
Compare
renovate
Bot
force-pushed
the
renovate/tmcp-1.x-lockfile
branch
from
June 11, 2026 13:07
fd81d9a to
ed8e11e
Compare
renovate
Bot
force-pushed
the
renovate/tmcp-1.x-lockfile
branch
2 times, most recently
from
July 17, 2026 00:16
225fd6b to
b6b3eef
Compare
renovate
Bot
force-pushed
the
renovate/tmcp-1.x-lockfile
branch
2 times, most recently
from
July 24, 2026 18:03
4f70575 to
d9a95a2
Compare
renovate
Bot
force-pushed
the
renovate/tmcp-1.x-lockfile
branch
from
July 30, 2026 20:25
d9a95a2 to
53f91bc
Compare
renovate
Bot
force-pushed
the
renovate/tmcp-1.x-lockfile
branch
from
August 11, 2026 20:58
53f91bc to
0c82fc2
Compare
renovate
Bot
force-pushed
the
renovate/tmcp-1.x-lockfile
branch
from
August 14, 2026 19:00
0c82fc2 to
042f2a0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.19.3→1.20.0Release Notes
paoloricciuti/tmcp (tmcp)
v1.20.0Compare Source
Minor Changes
a6b9606: feat: add the core per-request subscription modelImplement
subscriptions/listenfor MCP2026-07-28, including capability-based filter acknowledgment, subscription-ID metadata, independent concurrent streams, change filtering, cancellation, and graceful completion. Subscription managers are transport-owned, with an in-memory default and a distributed pub/sub-compatible create/send/close contract in@tmcp/session-manager. HTTP assigns every listen stream an opaque internal origin instead of trustingMcp-Session-Id; stdio and in-memory transports own equivalent local routing. Existing session-negotiated resource subscriptions and broadcasts remain unchanged.HTTP transports accept all origins by default with a warning on the first implicit cross-origin request. Configure an explicit allowlist to restrict access, or
trueto intentionally allow every origin without a warning. This request policy remains independent from CORS response configuration. The legacy SSE transport remains deprecated and receives only lifecycle compatibility changes.f81f7ca: feat: MRTR for the per-request (stateless)2026-07-28protocolserver.elicitation()andserver.message()now work on per-request (stateless) requests. Since there is no server→client JSON-RPC channel, an input call without a matching response ends the request with a successfulInputRequiredResult(resultType: 'input_required', keyedinputRequests, optional opaquerequestState); the client fulfills the requests and retries the original request withinputResponses(and the echoedrequestState) in the params. Onlytools/call,prompts/getandresources/readparticipate. Session-negotiated requests are unaffected by MRTR and keep the awaitable path.elicitation()/message()fails with a structured error unless the tool/prompt/resource/template definition sets the newreplayable: trueflag, which asserts that code before the handler's input points is idempotent or deferred. This gate is a tmcp safety measure, not a spec requirement."1","2", … reset each attempt) so straight-line handlers work unchanged; handlers with conditional control flow can pass a stable key via the new additive options argument:elicitation(message, schema, { key })/message(request, { key }). Responses are validated per key; unrelated extra entries are ignored per spec.requestState: tmcp carries validated answers forward so clients only need to answer the latestinputRequests; handlers can also persist their own data withserver.setRequestState(state)and read it back viaserver.ctx.requestState. Both are serialized through the new pluggablerequestStateCodecserver option.JSON.stringify/JSON.parsewith NO integrity protection — round-tripped state is attacker-controlled; plug a signed/encrypted codec if you need to trust it. Encoded state is size-bounded in both directions.isInputRequired(error): new exported helper. The stateless input flow works by throwing an internal signal that must reach the dispatch boundary; broadcatchblocks in handlers must rethrow it (a swallowed signal is detected and fails the request with a descriptive error).inputResponses/requestStateparams on non-MRTR methods are rejected with-32602; input-required results never carry cache fields (ttlMs/cacheScope).2026-07-28); the low-levelrequest()stays blocked on stateless requests.tools/call,prompts/get, andresources/readnow fail immediately instead of falling through to an unavailable server-to-client channel. Stateless roots requests are rejected for the same reason, and MRTR-only retry fields are rejected on session-negotiated requests.elicitation.formcapability (an empty elicitation capability remains backward-compatible form support), and outgoing form schemas are checked against MCP’s flat primitive-field restrictions.elicitation(message, url, { key? }); its keyedinputRequestuses{ mode: 'url', message, url }and accepts an action-only response without applying form validation. Client-supplied form content is removed from URL responses before handlers or retry state can observe it.79e445e: feat: implement strict MCP 2026-07-28 HTTP requestsClassify sessionless requests before accessing session state, require and validate the protocol, method, name, and annotated tool parameter headers, and return protocol errors with their required HTTP status before opening SSE. Successful requests remain request-scoped SSE streams, now with proxy buffering disabled and cooperative cancellation exposed through
server.ctx.signal. Initialization-based session behavior remains available on the same transport.Add
McpServer.hasMethod(),McpServer.validateToolCall(), thetmcp/method-policyentry point, andgetPerRequestProtocolVersions()so transports can reuse core registration, method policy, schema, and version behavior without executing handlers. The in-memory transport now uses the same exported per-request version list.a449bc9: feat: support2026-07-28protocol versionAdd support for the per-request (stateless) MCP protocol version
2026-07-28(Phases 0–2), plus a few deliberate fixes:2026-07-28(pinned to upstream spec tag2026-07-28, commit5f5440bb26a62e2cf3440b92da5a667efa03b267) and advertised via the newserver/discovermethod. Requests carrying_metaprotocol metadata with any other version receive-32022 UNSUPPORTED_PROTOCOL_VERSION. Legacyinitializenegotiation is unchanged andLATEST_PROTOCOL_VERSIONstays2025-06-18.cacheserver option ({ ttlMs?, cacheScope?, methods? }, defaults{ ttlMs: 0, cacheScope: 'private' }) controlling thettlMs/cacheScopefields required on cacheable per-request results.resultType,_meta['io.modelcontextprotocol/serverInfo'], cache fields); handler return types are unchanged.HEADER_MISMATCH(-32020),MISSING_REQUIRED_CLIENT_CAPABILITY(-32021) andUNSUPPORTED_PROTOCOL_VERSION(-32022), andMcpErroris now exported from the package root.McpErrornow carries its realcode(and optionaldata) onto JSON-RPC error responses. Previously every thrownMcpErrorcollapsed to-32603on the wire.prompts/get) and unknown resource (resources/read) names now return-32602(Invalid params) instead of the incorrect-32601(Method not found), for both session-negotiated and per-request profiles.2024-10-07— it appeared in one of two disagreeing internal lists and was never actually negotiable.validation/version.jsis now the single source of truth.extensionsmaps and the modern elicitation{ form?, url? }sub-shapes (legacy bare{}still means form support). URL elicitation is available throughserver.elicitation(message, url, options?)and sends the published{ mode: 'url', message, url }request shape; form and URL capabilities are checked independently, malformed transport-provided capability values fail cleanly, and form validation supports the complete published primitive/single-select/multi-select schema subset. Extra JSON Schema keywords emitted by adapters are removed from outgoing elicitation requests instead of rejecting the request or sending unsupported fields. ToolinputSchema/outputSchemawire schemas accept any JSON Schema 2020-12 keywords, andstructuredContentmay be any JSON value — both at runtime and at the type level (theCallToolResultgeneric no longer constrainsstructuredContentto objects; a widening, so existing tools are unaffected).server/discoverand follows the request's explicitio.modelcontextprotocol/logLevel. Requests that omit it receive no log notifications and never inherit a server default, transport session level, or earlier request level; session-negotiated logging behavior is unchanged.v.object→v.looseObject), so unknown top-level fields returned by handlers are now passed through to the client instead of being silently stripped. This is intentional: it is needed to preserveresultTypeextension values and forward-compatible result fields.Patch Changes
f48b2eb: feat: adddiscoverevent emitted when a client callsserver/discover1a9b90e: fix: tool result typev1.19.4Compare Source
Patch Changes
77be8a1: chore: add licenseConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.