Skip to content

fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.15.0 - #19

Open
renovate[bot] wants to merge 1 commit into
developfrom
renovate/mcp
Open

fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.15.0#19
renovate[bot] wants to merge 1 commit into
developfrom
renovate/mcp

Conversation

@renovate

@renovate renovate Bot commented Apr 3, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
io.modelcontextprotocol:kotlin-sdk 0.11.00.15.0 age confidence

Release Notes

modelcontextprotocol/kotlin-sdk (io.modelcontextprotocol:kotlin-sdk)

v0.15.0

Compare Source

Description

This release makes inbound message handling concurrent after the initialization handshake, adds SSE heartbeats and elicitation schema validation, and fixes several Streamable HTTP response and session-lifecycle bugs.

Breaking Changes

Concurrent inbound dispatch by @​devcrocod in #​884

Inbound messages were processed serially on the transport read loop, so one slow or peer-awaiting handler (sampling, elicitation, roots) blocked every later message on the connection, including the responses and notifications/cancelled those handlers depend on. After the handshake, handlers may now run concurrently; processing stays serial during initialization.

  • ProtocolOptions / ClientOptions / ServerOptions gain a handlerCoroutineContext parameter (defaults to Dispatchers.Default). Concurrency is bounded internally; there is no opt-out flag by design.
  • RequestHandlerExtra is now a CoroutineContext.Element and is no longer user-constructible. It exposes requestId, method, sendRequest, and sendNotification, and can be read inside a handler via the new currentRequestHandlerExtra().
- val extra = RequestHandlerExtra()
+ val extra = currentRequestHandlerExtra()

Duplicate feature names are rejected at registration by @​devcrocod in #​883

addTool/addPrompt/addResource/addResourceTemplate silently replaced an existing entry and emitted a spurious list_changed notification. They now throw IllegalArgumentException and leave the existing registration intact. The batch variants (addTools/addPrompts/addResources) are all-or-nothing. To replace a feature, remove it first.

- server.addTool(name = "search", ...)  // silently overwrote
+ server.removeTool("search")
+ server.addTool(name = "search", ...)

eventStore removed from mcpStatelessStreamableHttp by @​devcrocod in #​909

The parameter was never read or written: a stateless endpoint answers GET with 405, so no stream exists to store or replay events on. The old overload is retained at DeprecationLevel.ERROR with a ReplaceWith migration hint. Use mcpStreamableHttp when you need resumability.

  application.mcpStatelessStreamableHttp(
      path = "/mcp",
-     eventStore = myEventStore,
  ) { server }
Features
  • Optional SSE heartbeats for Streamable HTTP servers via mcpStreamableHttp(sseHeartbeatConfig = { ... }), keeping long-lived streams alive against clients that disconnect on idle. Heartbeats stay off by default, by @​UnscientificJsZhai in #​761
  • Accepted form-mode elicitation content is now validated against requestedSchema; a mismatch fails createElicitation with McpException (INVALID_PARAMS) instead of reaching server code unchecked, by @​rea9r in #​896
  • The Streamable HTTP client now sends the standard Mcp-Method and Mcp-Name POST headers, by @​AndreKalberer in #​894
Fixed
  • Stateless Streamable HTTP now closes its per-request session, fixing unbounded growth of the session registry and notification subscriptions, by @​KlyneChrysler in #​872
  • Streamable HTTP responses keep their status and body when the client accepts only text/event-stream, by @​devcrocod in #​911
  • The Accept header is parsed as media ranges, so clients sending */* or application/* are matched correctly, by @​devcrocod in #​912
  • Malformed request params are reported as Invalid params (-32602) instead of Internal error, by @​jstar0 in #​886
  • Duplicate initialize errors preserve the JSON-RPC request id, by @​jstar0 in #​868
  • Connection teardown clears the recently-cancelled request id buffer, by @​devcrocod in #​892
Maintenance
  • Create the server session before connecting the client in tests, avoiding a ChannelTransport startup race, by @​devcrocod in #​885
Dependencies
New Contributors

Full Changelog: modelcontextprotocol/kotlin-sdk@0.14.0...0.15.0

v0.14.0

Compare Source

Description

Adds wire-level support for SEP-1686 Tasks and SEP-1036 URL Mode Elicitation.

Breaking Changes

These changes are source-compatible (existing Kotlin code compiles unchanged thanks to default values) but binary-incompatible — recompile against 0.14.0, and update any Java or fully-positional call sites.

SseServerTransport constructor and the mcp { } Ktor server extensions gained a request-body-size limit by @​devcrocod in #​839

A new maxRequestBodySize parameter (default applied) was added, changing the binary signatures.

- SseServerTransport(endpoint, session)
+ SseServerTransport(endpoint, session, maxRequestBodySize = DEFAULT_MAX_REQUEST_BODY_SIZE)

StreamableHttpClientTransport constructor gained an inline SSE event-size limit by @​devcrocod in #​841

A new maxInlineSseEventSize parameter was inserted before requestBuilder. Trailing-lambda Kotlin calls are unaffected; positional callers must adjust.

CallToolRequestParams and CreateMessageRequestParams gained a task field by @​devcrocod in #​844

Added as part of SEP-1686 Tasks; the generated copy()/componentN() signatures shifted, so dependents must recompile.

Features
  • Add SEP-1686 Tasks wire-level types (TaskMetadata, task on tool-call and sampling params) by @​devcrocod in #​844
  • Add SEP-1036 URL Mode Elicitation, including UrlElicitationRequiredException, UrlElicitationRequiredData, and the Elicitation.supportsUrl capability flag by @​devcrocod in #​843
Fixed
  • Bound incoming HTTP POST body size in the SSE and Streamable HTTP server transports to prevent memory exhaustion from oversized requests by @​devcrocod in #​839
  • Bound the size of a single inline SSE event parsed from a POST response in StreamableHttpClientTransport by @​devcrocod in #​841
  • Validate Origin against localhost by default in DNS rebinding protection, rejecting requests with a valid Host but hostile or null Origin by @​devcrocod in #​840
  • Gate completion/complete on the server's completions capability instead of prompts by @​rea9r in #​846
  • Close stdio read sources during shutdown so StdioClientTransport.close() no longer hangs on a blocked read by @​jstar0 in #​798
  • Polish SEP-1577 sampling handling — reject empty sampling content and emit an explicit error when tool_use is not followed by tool_result by @​MukundaKatta in #​765
Dependencies
New Contributors

Full Changelog: modelcontextprotocol/kotlin-sdk@0.13.0...0.14.0

v0.13.0

Compare Source

Description

Adds a tasks capability and a typed elicitation capability, hardens transport lifecycle, dispatchers, and back-pressure, and enables DNS rebinding protection by default.

Breaking Changes

Typed elicitation capability and new tasks capability by @​devcrocod in #​732

ClientCapabilities.elicitation is now a typed ClientCapabilities.Elicitation (form, url) instead of a raw JsonObject?, and both ClientCapabilities and ServerCapabilities gained a typed tasks capability. The constructors of both types changed and are binary-incompatible; recompilation is required.

Transport handlers now run on Dispatchers.Default by @​devcrocod in #​778

Handlers moved from Dispatchers.IO to Dispatchers.Default (override via handlerDispatcher), send() now suspends under back-pressure instead of buffering unbounded, and the two-argument StdioServerTransport(input, output) constructor is deprecated in favor of the builder-lambda form. Also fixes a start()/close() race, consistent CancellationException propagation, and an input-Source leak (closes #​573, #​574, #​708).

DNS rebinding protection enabled by default by @​devcrocod in #​659

enableDnsRebindingProtection now defaults to true on mcpStreamableHttp/mcpStatelessStreamableHttp, and the Route.mcp() / Application.mcp() overloads gained enableDnsRebindingProtection, allowedHosts, and allowedOrigins parameters (binary-incompatible on JVM). Only localhost, 127.0.0.1, and [::1] are allowed by default; opt out with enableDnsRebindingProtection = false. The Configuration.enableDnsRebindingProtection, .allowedHosts, and .allowedOrigins properties are deprecated in favor of the new DnsRebindingProtection plugin.

Features
  • Add a tasks capability (list, cancel, and per-request augmentation for sampling and elicitation) on ClientCapabilities and ServerCapabilities, with assertions for tasks/* and notifications/tasks/status enforced by Client and ServerSession by @​devcrocod in #​732
  • Configurable handlerDispatcher and ioDispatcher, plus an optional caller-supplied CoroutineScope, on transports by @​devcrocod in #​778
Fixed
  • Fire onClose callbacks on SseClientTransport when the SSE session ends — whether closed gracefully or terminated by an error — matching the other client transports by @​jskjw157 in #​738
Security
  • Enable DNS rebinding protection by default across all HTTP transports, including the SSE endpoints that previously had none (see Breaking Changes for migration) by @​devcrocod in #​659
  • Cap a single stdio JSON-RPC frame at 16 MiB, throwing the new TooLongFrameException instead of buffering unbounded when a peer never sends a newline terminator by @​devcrocod in 6e6f805
Maintenance
  • Remove the test-only dev.mokksy:mokksy dependency in favor of MockEngine and embeddedServer by @​devcrocod in #​754
Dependencies
  • Ktor to v3.4.3 in #​785
  • kotlinx.coroutines to v1.11.0 in #​760
  • kotlin-logging to v8.0.03 in #​752, #​783
  • 24 further Dependabot updates across sample projects, TypeScript conformance-test fixtures, and build/test tooling (JUnit, slf4j-simple, Gradle wrapper, anthropic-java)

Full Changelog: modelcontextprotocol/kotlin-sdk@0.12.0...0.13.0

v0.12.0

Compare Source

Description

Adds sampling-with-tools per SEP-1577, JSON Schema dialect declaration on tool schemas, server-side tool name validation, and capability extensions; fixes SSE reconnect on the same session and stops swallowing CancellationException.

Breaking Changes

Sampling messages can carry tool calls and results (SEP-1577) by @​devcrocod in #​718

SamplingMessage.content is now typed as a new SamplingMessageContent supertype, with MediaContent (text/image/audio), ToolUseContent, and ToolResultContent as variants. MediaContent still exists and now extends SamplingMessageContent, so most source code that constructs sampling messages compiles unchanged — but the binary signatures of SamplingMessage, CreateMessageResult, and related types have changed. ClientCapabilities.sampling is also now a typed Sampling object instead of a raw JsonObject. Recompilation is required; consumers reading sampling as JsonObject must migrate to the typed accessors.

watchosX64 and tvosX64 Kotlin/Native targets removed by @​devcrocod in #​727

These targets have been deprecated upstream. Migrate to the corresponding ARM/simulator targets (watchosArm64, watchosSimulatorArm64, tvosArm64, tvosSimulatorArm64).

Features
  • Add $schema field to ToolSchema, declaring JSON Schema 2020-12 as the default dialect (SEP-1613) by @​devcrocod in #​696
  • Validate tool names at registration time on the server, following the MCP tool naming standard (SEP-986) by @​devcrocod in #​695
  • Add extensions field to ClientCapabilities and ServerCapabilities for advertising supported MCP extensions during the initialize handshake by @​eritscher in #​678
Fixed
  • Validate the mcp-protocol-version HTTP header on initialization requests and correct DEFAULT_NEGOTIATED_PROTOCOL_VERSION to match the spec by @​devcrocod in #​697
  • Propagate CancellationException instead of logging it as an error by @​devcrocod in #​706
  • Evict stale GET SSE stream mapping on reconnect so a new GET on the same session is no longer silently rejected by the leftover entry from the previous stream by @​amr in #​716
Maintenance
Dependencies
New Contributors

Full Changelog: modelcontextprotocol/kotlin-sdk@0.11.1...0.12.0

v0.11.1

Compare Source

Description

Fixes an SSE stream crash on Netty when clients connect to the Streamable HTTP GET endpoint.

Fixed
  • Fixed GET SSE stream crash on Netty in Streamable HTTP where appendSseHeaders() was called after response headers were already committed, causing UnsupportedOperationException and client retry loops by @​devcrocod in #​681
Dependencies

Full Changelog: modelcontextprotocol/kotlin-sdk@0.11.0...0.11.1


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions

github-actions Bot commented Apr 3, 2026

Copy link
Copy Markdown

Windows Build

46 tests  ±0   46 ✅ ±0   3s ⏱️ -3s
11 suites ±0    0 💤 ±0 
11 files   ±0    0 ❌ ±0 

Results for commit 752e167. ± Comparison against base commit c11c81d.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Apr 3, 2026

Copy link
Copy Markdown

MacOS Build

46 tests  ±0   46 ✅ ±0   4s ⏱️ ±0s
11 suites ±0    0 💤 ±0 
11 files   ±0    0 ❌ ±0 

Results for commit 752e167. ± Comparison against base commit c11c81d.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Apr 3, 2026

Copy link
Copy Markdown

Linux arm64 Build

46 tests  ±0   46 ✅ ±0   1s ⏱️ -2s
11 suites ±0    0 💤 ±0 
11 files   ±0    0 ❌ ±0 

Results for commit 752e167. ± Comparison against base commit c11c81d.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Apr 3, 2026

Copy link
Copy Markdown

Linux x64 Build

46 tests  ±0   46 ✅ ±0   2s ⏱️ -2s
11 suites ±0    0 💤 ±0 
11 files   ±0    0 ❌ ±0 

Results for commit 752e167. ± Comparison against base commit c11c81d.

♻️ This comment has been updated with latest results.

@renovate
renovate Bot force-pushed the renovate/mcp branch 7 times, most recently from 0ee2cad to 752e167 Compare April 10, 2026 20:07
@renovate renovate Bot changed the title fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.11.0 fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.11.0 - autoclosed Apr 11, 2026
@renovate renovate Bot closed this Apr 11, 2026
@renovate
renovate Bot deleted the renovate/mcp branch April 11, 2026 11:11
@renovate renovate Bot changed the title fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.11.0 - autoclosed fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.11.1 Apr 13, 2026
@renovate renovate Bot reopened this Apr 13, 2026
@renovate
renovate Bot force-pushed the renovate/mcp branch 2 times, most recently from 752e167 to b85a799 Compare April 13, 2026 14:45
@github-actions

github-actions Bot commented Apr 13, 2026

Copy link
Copy Markdown

Tests (macos)

50 tests  ±0   50 ✅ ±0   7s ⏱️ +5s
13 suites ±0    0 💤 ±0 
13 files   ±0    0 ❌ ±0 

Results for commit 399da1f. ± Comparison against base commit 3e180fb.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Apr 13, 2026

Copy link
Copy Markdown

Tests (linux x64)

50 tests  ±0   50 ✅ ±0   3s ⏱️ ±0s
13 suites ±0    0 💤 ±0 
13 files   ±0    0 ❌ ±0 

Results for commit 399da1f. ± Comparison against base commit 3e180fb.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Apr 13, 2026

Copy link
Copy Markdown

Tests (linux arm64)

50 tests  ±0   50 ✅ ±0   2s ⏱️ ±0s
13 suites ±0    0 💤 ±0 
13 files   ±0    0 ❌ ±0 

Results for commit 399da1f. ± Comparison against base commit 3e180fb.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Apr 13, 2026

Copy link
Copy Markdown

Tests (windows)

50 tests  ±0   50 ✅ ±0   5s ⏱️ ±0s
13 suites ±0    0 💤 ±0 
13 files   ±0    0 ❌ ±0 

Results for commit 399da1f. ± Comparison against base commit 3e180fb.

♻️ This comment has been updated with latest results.

@renovate renovate Bot changed the title fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.11.1 fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.12.0 Apr 29, 2026
@renovate renovate Bot changed the title fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.12.0 fix(deps): update mcp to v0.13.0 Jun 2, 2026
@renovate
renovate Bot force-pushed the renovate/mcp branch from 91dbce1 to f09eba7 Compare June 2, 2026 15:14
@renovate renovate Bot changed the title fix(deps): update mcp to v0.13.0 fix(deps): update mcp Jun 22, 2026
@renovate renovate Bot changed the title fix(deps): update mcp fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.13.0 Jun 25, 2026
@renovate
renovate Bot force-pushed the renovate/mcp branch from f09eba7 to fbe24dc Compare July 4, 2026 07:55
@renovate renovate Bot changed the title fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.13.0 fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.14.0 Jul 4, 2026
@renovate renovate Bot changed the title fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.14.0 fix(deps): update dependency io.modelcontextprotocol:kotlin-sdk to v0.15.0 Aug 4, 2026
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.

0 participants