Skip to content

Bump io.modelcontextprotocol:kotlin-sdk from 0.14.0 to 0.15.0 in the app-dependencies group - #68

Merged
rfc2822 merged 1 commit into
mainfrom
dependabot/gradle/app-dependencies-adaad01d91
Jul 29, 2026
Merged

Bump io.modelcontextprotocol:kotlin-sdk from 0.14.0 to 0.15.0 in the app-dependencies group#68
rfc2822 merged 1 commit into
mainfrom
dependabot/gradle/app-dependencies-adaad01d91

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 29, 2026

Copy link
Copy Markdown
Contributor

Bumps the app-dependencies group with 1 update: io.modelcontextprotocol:kotlin-sdk.

Updates io.modelcontextprotocol:kotlin-sdk from 0.14.0 to 0.15.0

Release notes

Sourced from io.modelcontextprotocol:kotlin-sdk's releases.

0.15.0

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

... (truncated)

Commits
  • 76b8e7d release: 0.15.0 (#918)
  • dab340f fix(server): drop inert eventStore from stateless Streamable HTTP (#909)
  • 24c3cd3 fix(server): match Accept header as media ranges (#912)
  • 7fa438c feat(client): send MCP standard POST headers (#894)
  • 94745e6 chore(deps): bump the kotest group across 1 directory with 3 updates (#915)
  • 2b494b7 chore(deps): bump the other-dependencies group across 5 directories with 3 up...
  • 82fe56e fix(server): preserve Streamable HTTP response status and body (#911)
  • a06d699 feat: SSE heartbeat (#761)
  • cab669b fix: classify malformed request params as invalid params (#886)
  • b6cb547 fix(server): preserve id on duplicate initialize errors (#868)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the app-dependencies group with 1 update: [io.modelcontextprotocol:kotlin-sdk](https://github.com/modelcontextprotocol/kotlin-sdk).


Updates `io.modelcontextprotocol:kotlin-sdk` from 0.14.0 to 0.15.0
- [Release notes](https://github.com/modelcontextprotocol/kotlin-sdk/releases)
- [Commits](modelcontextprotocol/kotlin-sdk@0.14.0...0.15.0)

---
updated-dependencies:
- dependency-name: io.modelcontextprotocol:kotlin-sdk
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: app-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Jul 29, 2026
@rfc2822
rfc2822 merged commit 44cf37c into main Jul 29, 2026
4 checks passed
@rfc2822
rfc2822 deleted the dependabot/gradle/app-dependencies-adaad01d91 branch July 29, 2026 06:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant