add new sample: kotlinlang mcp server with 2 tools
- search
- get_page
## How Has This Been Tested?
inspector/unit
## Breaking Changes
none
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
<!-- Provide a brief summary of your changes -->
Add support for MCP extension negotiation during the initialize
handshake, as defined in the MCP extensions specification. Clients and
servers can now advertise supported extensions via a new `extensions:
Map<String, JsonObject>?` field on their respective capabilities
objects.
## Motivation and Context
<!-- Why is this change needed? What problem does it solve? -->
Extensions are supported part of the [MCP spec
](https://modelcontextprotocol.io/extensions/overview) and are available
in other language libraries e.g. [Golang
](862d78a265/mcp/protocol.go (L215)).
## How Has This Been Tested?
Existing and added unit tests
## Breaking Changes
<!-- Will users need to update their code or configurations? -->
Adding a new field to existing ClientCapabilities and ServerCapabilities
fields will break already compiled clients. They will need to recompile
on upgrading.
## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
Co-authored-by: Pavel Gorgulov <devcrocod@gmail.com>
Bumps the other-dependencies group with 1 update in the
/samples/kotlin-mcp-client directory:
[com.anthropic:anthropic-java](https://github.com/anthropics/anthropic-sdk-java).
Updates `com.anthropic:anthropic-java` from 2.25.0 to 2.26.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-java/releases">com.anthropic:anthropic-java's
releases</a>.</em></p>
<blockquote>
<h2>v2.26.0</h2>
<h2>2.26.0 (2026-04-16)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.25.0...v2.26.0">v2.25.0...v2.26.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add claude-opus-4-7, token budgets and
user_profiles (<a
href="a240f4f01f">a240f4f</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>ci:</strong> remove release-doctor workflow (<a
href="5d22f5b0bd">5d22f5b</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-java/blob/main/CHANGELOG.md">com.anthropic:anthropic-java's
changelog</a>.</em></p>
<blockquote>
<h2>2.26.0 (2026-04-16)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.25.0...v2.26.0">v2.25.0...v2.26.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> add claude-opus-4-7, token budgets and
user_profiles (<a
href="a240f4f01f">a240f4f</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>ci:</strong> remove release-doctor workflow (<a
href="5d22f5b0bd">5d22f5b</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ec3724d2c8"><code>ec3724d</code></a>
chore: release main (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-java/issues/323">#323</a>)</li>
<li>See full diff in <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.25.0...v2.26.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [hono](https://github.com/honojs/hono) from 4.12.12 to 4.12.14.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/honojs/hono/releases">hono's
releases</a>.</em></p>
<blockquote>
<h2>v4.12.14</h2>
<h2>Security fixes</h2>
<p>This release includes fixes for the following security issues:</p>
<h3>Improper handling of JSX attribute names in hono/jsx SSR</h3>
<p>Affects: hono/jsx. Fixes missing validation of JSX attribute names
during server-side rendering, which could allow malformed attribute keys
to corrupt the generated HTML output and inject unintended attributes or
elements. GHSA-458j-xx4x-4375</p>
<h2>Other changes</h2>
<ul>
<li>fix(aws-lambda): handle invalid header names in request processing
(<a
href="https://redirect.github.com/honojs/hono/issues/4883">#4883</a>)
fa2c74fe</li>
</ul>
<h2>v4.12.13</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(types): infer response type from last handler in app.on
9-/10-handler overloads by <a
href="https://github.com/T4ko0522"><code>@T4ko0522</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4865">honojs/hono#4865</a></li>
<li>feat(trailing-slash): add <code>skip</code> option by <a
href="https://github.com/yusukebe"><code>@yusukebe</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4862">honojs/hono#4862</a></li>
<li>feat(cache): add <code>onCacheNotAvailable</code> option by <a
href="https://github.com/yusukebe"><code>@yusukebe</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4876">honojs/hono#4876</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/T4ko0522"><code>@T4ko0522</code></a>
made their first contribution in <a
href="https://redirect.github.com/honojs/hono/pull/4865">honojs/hono#4865</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/honojs/hono/compare/v4.12.12...v4.12.13">https://github.com/honojs/hono/compare/v4.12.12...v4.12.13</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cf2d2b7edc"><code>cf2d2b7</code></a>
4.12.14</li>
<li><a
href="66daa2edef"><code>66daa2e</code></a>
Merge commit from fork</li>
<li><a
href="fa2c74fe5c"><code>fa2c74f</code></a>
fix(aws-lambda): handle invalid header names in request processing (<a
href="https://redirect.github.com/honojs/hono/issues/4883">#4883</a>)</li>
<li><a
href="3779927c17"><code>3779927</code></a>
4.12.13</li>
<li><a
href="faa6c46a1a"><code>faa6c46</code></a>
feat(cache): add <code>onCacheNotAvailable</code> option (<a
href="https://redirect.github.com/honojs/hono/issues/4876">#4876</a>)</li>
<li><a
href="f23e97b7f3"><code>f23e97b</code></a>
feat(trailing-slash): add <code>skip</code> option (<a
href="https://redirect.github.com/honojs/hono/issues/4862">#4862</a>)</li>
<li><a
href="1aa32fb91e"><code>1aa32fb</code></a>
fix(types): infer response type from last handler in app.on 9- and
10-handler...</li>
<li>See full diff in <a
href="https://github.com/honojs/hono/compare/v4.12.12...v4.12.14">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/modelcontextprotocol/kotlin-sdk/network/alerts).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the kotlinx group with 1 update in the / directory:
[org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization).
Updates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.10.0
to 1.11.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kotlin/kotlinx.serialization/releases">org.jetbrains.kotlinx:kotlinx-serialization-json's
releases</a>.</em></p>
<blockquote>
<h2>1.11.0</h2>
<p>This release is based on Kotlin 2.3.20 and provides a new Json
exceptions API and some bugfixes and improvements.</p>
<h2>Expose Json exceptions structure</h2>
<p>To make working with exceptions easier and providing proper error
codes in e.g., REST APIs,
classes <code>JsonException</code>, <code>JsonDecodingException</code>,
and <code>JsonEncodingException</code> are now public.
They have relevant public properties, such as <code>shortMessage</code>,
<code>path</code>, <code>offset</code>, and others.
This API is currently experimental, and we're going to improve it
further in the subsequent releases.
See the linked issues for the details: <a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930">#1930</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877">#1877</a>.</p>
<h2>Ability to hide user input from exception messages for
security/privacy reasons.</h2>
<p>Historically, exception messages in kotlinx.serialization often
included the input Json itself for debuggability reason.
Such behavior may pose additional challenges for logging, analytics, and
other systems, since
a system is not always allowed to store user data due to
privacy/security reasons, which imposes additional sanitation logic.
To address this issue, a new property
<code>exceptionsWithDebugInfo</code> is added to
<code>JsonConfiguration</code>.
Disable it to hide user input from exception messages.
IMPORTANT: This behavior will be enabled by default when this property
becomes stable.
See <a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590">#2590</a>
for more details.</p>
<h2>Bugfixes and improvements</h2>
<ul>
<li>CBOR: Relax value range check when decoding numbers (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167">#3167</a>)</li>
<li>Use a specialized writeDecimalLong method for IO stream integrations
in Json (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152">#3152</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md">org.jetbrains.kotlinx:kotlinx-serialization-json's
changelog</a>.</em></p>
<blockquote>
<h1>1.11.0 / 2026-04-10</h1>
<p>This release is based on Kotlin 2.3.20 and provides new Json
exceptions API and some bugfixes and improvements.</p>
<h2>Expose Json exceptions structure</h2>
<p>To make working with exceptions easier and providing proper error
codes in e.g., REST APIs,
classes <code>JsonException</code>, <code>JsonDecodingException</code>,
and <code>JsonEncodingException</code> are now public.
They have relevant public properties, such as <code>shortMessage</code>,
<code>path</code>, <code>offset</code>, and others.
This API is currently experimental, and we're going to improve it
further in the subsequent releases.
See the linked issues for the details: <a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930">#1930</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877">#1877</a>.</p>
<h2>Ability to hide user input from exception messages for
security/privacy reasons.</h2>
<p>Historically, exception messages in kotlinx.serialization often
included the input Json itself for debuggability reason.
Such behavior may pose additional challenges for logging, analytics, and
other systems, since
a system is not always allowed to store user data due to
privacy/security reasons, which imposes additional sanitation logic.
To address this issue, a new property
<code>exceptionsWithDebugInfo</code> is added to
<code>JsonConfiguration</code>.
Disable it to hide user input from exception messages.
IMPORTANT: This behavior will be enabled by default when this property
becomes stable.
See <a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590">#2590</a>
for more details.</p>
<h2>Bugfixes and improvements</h2>
<ul>
<li>CBOR: Relax value range check when decoding numbers (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167">#3167</a>)</li>
<li>Use a specialized writeDecimalLong method for IO stream integrations
in Json (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152">#3152</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6956af2e60"><code>6956af2</code></a>
Prepare 1.11 release</li>
<li><a
href="390d84c68a"><code>390d84c</code></a>
Merge remote-tracking branch 'origin/master' into dev</li>
<li><a
href="431fe2dc0a"><code>431fe2d</code></a>
Use local repo for publishing (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171">#3171</a>)</li>
<li><a
href="05c12b60a6"><code>05c12b6</code></a>
Add usage attribute to "testRepositories" configuration</li>
<li><a
href="a4e1f082ef"><code>a4e1f08</code></a>
Bump Kover version to 0.9.8 release (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174">#3174</a>)</li>
<li><a
href="304e858ccc"><code>304e858</code></a>
Expose Json exceptions structure (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145">#3145</a>)</li>
<li><a
href="4a0338ef50"><code>4a0338e</code></a>
Included G Play SDK verification file for core-jvm (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169">#3169</a>)</li>
<li><a
href="421f64c74f"><code>421f64c</code></a>
CBOR: Relax value range check when decoding numbers (<a
href="https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167">#3167</a>)</li>
<li><a
href="85a4f126ec"><code>85a4f12</code></a>
KT-84955: mark apple x64 tagets as deprecated error</li>
<li><a
href="bd38b0e49b"><code>bd38b0e</code></a>
Remove dead code</li>
<li>Additional commits viewable in <a
href="https://github.com/Kotlin/kotlinx.serialization/compare/v1.10.0...v1.11.0">compare
view</a></li>
</ul>
</details>
<br />
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the kotlin group with 2 updates in the / directory:
[org.jetbrains.kotlin:kotlin-gradle-plugin](https://github.com/JetBrains/kotlin)
and
[org.jetbrains.kotlin:kotlin-serialization](https://github.com/JetBrains/kotlin).
Updates `org.jetbrains.kotlin:kotlin-gradle-plugin` from 2.3.10 to
2.3.20
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin:kotlin-gradle-plugin's
releases</a>.</em></p>
<blockquote>
<h2>Kotlin 2.3.20</h2>
<h2>Changelog</h2>
<h3>Analysis API. FIR</h3>
<h4>New Features</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-78090"><code>KT-78090</code></a>
Implement stubs support for new conditional returns and holdsIn
contracts</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82948"><code>KT-82948</code></a>
'FirRegularClass' expected as a containing declaration, got
'FirTypeAliasImpl'</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83467"><code>KT-83467</code></a>
Package-level JSpecify annotations are ignored when coming from jars or
libraries</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82057"><code>KT-82057</code></a>
K2. Cannot infer type parameter 'R' in Ktor routing post() function with
explicit response type</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82846"><code>KT-82846</code></a>
AA: unresolved KtExpression.expressionType for the reference to the
parameter with default value</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-80485"><code>KT-80485</code></a>
False positive UNRESOLVED_REFERENCE on nested interface from super-super
class in the super type position inside an anonymous object</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82772"><code>KT-82772</code></a>
Flaky false positive deprecation warning on PersistentMap.put in Kotlin
repo in IDE mode</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-76487"><code>KT-76487</code></a>
StdLibSourcesLazyDeclarationResolveTestGenerated.testWrappedInt is
unstable</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82618"><code>KT-82618</code></a>
Various tests are failing with NPE in kt-master after updating the
compiler on 19.11.25</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82076"><code>KT-82076</code></a>
Error querying members of JavaClass created for
SymbolLightClassForAnnotationClass during library analysis</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71596"><code>KT-71596</code></a>
Include Js/Wasi checkers in AbstractLLFirDiagnosticsCollector</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82085"><code>KT-82085</code></a>
No OUTER_CLASS_ARGUMENTS_REQUIRED on type parameter bound in IDE</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81873"><code>KT-81873</code></a>
Provide a way of including traces in phase JFR events</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71929"><code>KT-71929</code></a>
Consider leaving the non-post-compute version at
EnhancementSymbolsCache.enhancedFunctions</li>
</ul>
<h3>Analysis API. Infrastructure</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83173"><code>KT-83173</code></a>
Analysis API Tests: Library names with RC versions aren't sanitised</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-65140"><code>KT-65140</code></a>
LL FIR: Implement AbstractFirPsiJsDiagnosticTest for LL FIR</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82212"><code>KT-82212</code></a>
[Analysis API, LL FIR] Implement AbstractDiagnosticsFirWasmTest and
AbstractDiagnosticsFirWasmWasiTest for LL FIR</li>
</ul>
<h3>Analysis API. Light Classes</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82227"><code>KT-82227</code></a>
Value classes should expose regular static methods</li>
</ul>
<h3>Analysis API. PSI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81710"><code>KT-81710</code></a>
'KtTypeReference.getTypeText' does not account for 'suspend' modifier on
suspend lambdas</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82258"><code>KT-82258</code></a>
Prepare PSI for migration from context receivers to context
parameters</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81074"><code>KT-81074</code></a>
KDoc: List rendering is broken</li>
</ul>
<h3>Analysis API. Providers and Caches</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82449"><code>KT-82449</code></a>
K2 IDE Analysis Freezes During Gradle Sync (Recursive Module Dependency
Computation in
KotlinModuleDependentsProviderBase.computeTransitiveDependents)</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82629"><code>KT-82629</code></a>
'collectDiagnostics' returns stale syntax error after editor fix</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-74907"><code>KT-74907</code></a>
Analysis API: Apply platform-based library module content restrictions
consistently</li>
</ul>
<h3>Analysis API. Standalone</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81107"><code>KT-81107</code></a>
AA: KtSourceModuleBuilder.sourceRoots doesn't works with symbolic
links</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md">org.jetbrains.kotlin:kotlin-gradle-plugin's
changelog</a>.</em></p>
<blockquote>
<h2>2.3.20</h2>
<h3>Analysis API. FIR</h3>
<h4>New Features</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-78090"><code>KT-78090</code></a>
Implement stubs support for new conditional returns and holdsIn
contracts</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82948"><code>KT-82948</code></a>
'FirRegularClass' expected as a containing declaration, got
'FirTypeAliasImpl'</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83467"><code>KT-83467</code></a>
Package-level JSpecify annotations are ignored when coming from jars or
libraries</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82057"><code>KT-82057</code></a>
K2. Cannot infer type parameter 'R' in Ktor routing post() function with
explicit response type</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82846"><code>KT-82846</code></a>
AA: unresolved KtExpression.expressionType for the reference to the
parameter with default value</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-80485"><code>KT-80485</code></a>
False positive UNRESOLVED_REFERENCE on nested interface from super-super
class in the super type position inside an anonymous object</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82772"><code>KT-82772</code></a>
Flaky false positive deprecation warning on PersistentMap.put in Kotlin
repo in IDE mode</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-76487"><code>KT-76487</code></a>
StdLibSourcesLazyDeclarationResolveTestGenerated.testWrappedInt is
unstable</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82618"><code>KT-82618</code></a>
Various tests are failing with NPE in kt-master after updating the
compiler on 19.11.25</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82076"><code>KT-82076</code></a>
Error querying members of JavaClass created for
SymbolLightClassForAnnotationClass during library analysis</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71596"><code>KT-71596</code></a>
Include Js/Wasi checkers in AbstractLLFirDiagnosticsCollector</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82085"><code>KT-82085</code></a>
No OUTER_CLASS_ARGUMENTS_REQUIRED on type parameter bound in IDE</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81873"><code>KT-81873</code></a>
Provide a way of including traces in phase JFR events</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71929"><code>KT-71929</code></a>
Consider leaving the non-post-compute version at
EnhancementSymbolsCache.enhancedFunctions</li>
</ul>
<h3>Analysis API. Infrastructure</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83173"><code>KT-83173</code></a>
Analysis API Tests: Library names with RC versions aren't sanitised</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-65140"><code>KT-65140</code></a>
LL FIR: Implement AbstractFirPsiJsDiagnosticTest for LL FIR</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82212"><code>KT-82212</code></a>
[Analysis API, LL FIR] Implement AbstractDiagnosticsFirWasmTest and
AbstractDiagnosticsFirWasmWasiTest for LL FIR</li>
</ul>
<h3>Analysis API. Light Classes</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82227"><code>KT-82227</code></a>
Value classes should expose regular static methods</li>
</ul>
<h3>Analysis API. PSI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81710"><code>KT-81710</code></a>
'KtTypeReference.getTypeText' does not account for 'suspend' modifier on
suspend lambdas</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82258"><code>KT-82258</code></a>
Prepare PSI for migration from context receivers to context
parameters</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81074"><code>KT-81074</code></a>
KDoc: List rendering is broken</li>
</ul>
<h3>Analysis API. Providers and Caches</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82449"><code>KT-82449</code></a>
K2 IDE Analysis Freezes During Gradle Sync (Recursive Module Dependency
Computation in
KotlinModuleDependentsProviderBase.computeTransitiveDependents)</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82629"><code>KT-82629</code></a>
'collectDiagnostics' returns stale syntax error after editor fix</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-74907"><code>KT-74907</code></a>
Analysis API: Apply platform-based library module content restrictions
consistently</li>
</ul>
<h3>Analysis API. Standalone</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81107"><code>KT-81107</code></a>
AA: KtSourceModuleBuilder.sourceRoots doesn't works with symbolic
links</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d57eb4a26e"><code>d57eb4a</code></a>
Add ChangeLog for 2.3.20-RC3</li>
<li><a
href="41886bbf57"><code>41886bb</code></a>
[Gradle] Update KGP npm tooling dependency versions</li>
<li><a
href="210a9bde68"><code>210a9bd</code></a>
[Native] Do not mark iosX64 target as deprecate in DSL</li>
<li><a
href="7ed446ef70"><code>7ed446e</code></a>
Add ChangeLog for 2.3.20-RC2</li>
<li><a
href="520eadedf4"><code>520eade</code></a>
[K/JVM] Fix incorrect optimization of local delegation</li>
<li><a
href="7ef8bccc4b"><code>7ef8bcc</code></a>
Reflection: add LazyKProperty to fix recent performance regression</li>
<li><a
href="9fa7cf20c6"><code>9fa7cf2</code></a>
[Gradle] Link NoActiveThreadsAfterCompilerInvocationIT with
KT-84566</li>
<li><a
href="d410596086"><code>d410596</code></a>
[Gradle] Shutdown coroutines dispatcher threads after compiler
invocation</li>
<li><a
href="348430b268"><code>348430b</code></a>
[BTA] Fix compatibility between API 2.3.20 and KC 2.3.10</li>
<li><a
href="4058f3c6cd"><code>4058f3c</code></a>
[CMP] HiddenFromObjC remove outdated offset check</li>
<li>Additional commits viewable in <a
href="https://github.com/JetBrains/kotlin/compare/v2.3.10...v2.3.20">compare
view</a></li>
</ul>
</details>
<br />
Updates `org.jetbrains.kotlin:kotlin-serialization` from 2.3.10 to
2.3.20
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin:kotlin-serialization's
releases</a>.</em></p>
<blockquote>
<h2>Kotlin 2.3.20</h2>
<h2>Changelog</h2>
<h3>Analysis API. FIR</h3>
<h4>New Features</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-78090"><code>KT-78090</code></a>
Implement stubs support for new conditional returns and holdsIn
contracts</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82948"><code>KT-82948</code></a>
'FirRegularClass' expected as a containing declaration, got
'FirTypeAliasImpl'</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83467"><code>KT-83467</code></a>
Package-level JSpecify annotations are ignored when coming from jars or
libraries</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82057"><code>KT-82057</code></a>
K2. Cannot infer type parameter 'R' in Ktor routing post() function with
explicit response type</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82846"><code>KT-82846</code></a>
AA: unresolved KtExpression.expressionType for the reference to the
parameter with default value</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-80485"><code>KT-80485</code></a>
False positive UNRESOLVED_REFERENCE on nested interface from super-super
class in the super type position inside an anonymous object</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82772"><code>KT-82772</code></a>
Flaky false positive deprecation warning on PersistentMap.put in Kotlin
repo in IDE mode</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-76487"><code>KT-76487</code></a>
StdLibSourcesLazyDeclarationResolveTestGenerated.testWrappedInt is
unstable</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82618"><code>KT-82618</code></a>
Various tests are failing with NPE in kt-master after updating the
compiler on 19.11.25</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82076"><code>KT-82076</code></a>
Error querying members of JavaClass created for
SymbolLightClassForAnnotationClass during library analysis</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71596"><code>KT-71596</code></a>
Include Js/Wasi checkers in AbstractLLFirDiagnosticsCollector</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82085"><code>KT-82085</code></a>
No OUTER_CLASS_ARGUMENTS_REQUIRED on type parameter bound in IDE</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81873"><code>KT-81873</code></a>
Provide a way of including traces in phase JFR events</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71929"><code>KT-71929</code></a>
Consider leaving the non-post-compute version at
EnhancementSymbolsCache.enhancedFunctions</li>
</ul>
<h3>Analysis API. Infrastructure</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83173"><code>KT-83173</code></a>
Analysis API Tests: Library names with RC versions aren't sanitised</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-65140"><code>KT-65140</code></a>
LL FIR: Implement AbstractFirPsiJsDiagnosticTest for LL FIR</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82212"><code>KT-82212</code></a>
[Analysis API, LL FIR] Implement AbstractDiagnosticsFirWasmTest and
AbstractDiagnosticsFirWasmWasiTest for LL FIR</li>
</ul>
<h3>Analysis API. Light Classes</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82227"><code>KT-82227</code></a>
Value classes should expose regular static methods</li>
</ul>
<h3>Analysis API. PSI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81710"><code>KT-81710</code></a>
'KtTypeReference.getTypeText' does not account for 'suspend' modifier on
suspend lambdas</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82258"><code>KT-82258</code></a>
Prepare PSI for migration from context receivers to context
parameters</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81074"><code>KT-81074</code></a>
KDoc: List rendering is broken</li>
</ul>
<h3>Analysis API. Providers and Caches</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82449"><code>KT-82449</code></a>
K2 IDE Analysis Freezes During Gradle Sync (Recursive Module Dependency
Computation in
KotlinModuleDependentsProviderBase.computeTransitiveDependents)</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82629"><code>KT-82629</code></a>
'collectDiagnostics' returns stale syntax error after editor fix</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-74907"><code>KT-74907</code></a>
Analysis API: Apply platform-based library module content restrictions
consistently</li>
</ul>
<h3>Analysis API. Standalone</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81107"><code>KT-81107</code></a>
AA: KtSourceModuleBuilder.sourceRoots doesn't works with symbolic
links</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md">org.jetbrains.kotlin:kotlin-serialization's
changelog</a>.</em></p>
<blockquote>
<h2>2.3.20</h2>
<h3>Analysis API. FIR</h3>
<h4>New Features</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-78090"><code>KT-78090</code></a>
Implement stubs support for new conditional returns and holdsIn
contracts</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82948"><code>KT-82948</code></a>
'FirRegularClass' expected as a containing declaration, got
'FirTypeAliasImpl'</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83467"><code>KT-83467</code></a>
Package-level JSpecify annotations are ignored when coming from jars or
libraries</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82057"><code>KT-82057</code></a>
K2. Cannot infer type parameter 'R' in Ktor routing post() function with
explicit response type</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82846"><code>KT-82846</code></a>
AA: unresolved KtExpression.expressionType for the reference to the
parameter with default value</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-80485"><code>KT-80485</code></a>
False positive UNRESOLVED_REFERENCE on nested interface from super-super
class in the super type position inside an anonymous object</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82772"><code>KT-82772</code></a>
Flaky false positive deprecation warning on PersistentMap.put in Kotlin
repo in IDE mode</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-76487"><code>KT-76487</code></a>
StdLibSourcesLazyDeclarationResolveTestGenerated.testWrappedInt is
unstable</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82618"><code>KT-82618</code></a>
Various tests are failing with NPE in kt-master after updating the
compiler on 19.11.25</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82076"><code>KT-82076</code></a>
Error querying members of JavaClass created for
SymbolLightClassForAnnotationClass during library analysis</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71596"><code>KT-71596</code></a>
Include Js/Wasi checkers in AbstractLLFirDiagnosticsCollector</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82085"><code>KT-82085</code></a>
No OUTER_CLASS_ARGUMENTS_REQUIRED on type parameter bound in IDE</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81873"><code>KT-81873</code></a>
Provide a way of including traces in phase JFR events</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71929"><code>KT-71929</code></a>
Consider leaving the non-post-compute version at
EnhancementSymbolsCache.enhancedFunctions</li>
</ul>
<h3>Analysis API. Infrastructure</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83173"><code>KT-83173</code></a>
Analysis API Tests: Library names with RC versions aren't sanitised</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-65140"><code>KT-65140</code></a>
LL FIR: Implement AbstractFirPsiJsDiagnosticTest for LL FIR</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82212"><code>KT-82212</code></a>
[Analysis API, LL FIR] Implement AbstractDiagnosticsFirWasmTest and
AbstractDiagnosticsFirWasmWasiTest for LL FIR</li>
</ul>
<h3>Analysis API. Light Classes</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82227"><code>KT-82227</code></a>
Value classes should expose regular static methods</li>
</ul>
<h3>Analysis API. PSI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81710"><code>KT-81710</code></a>
'KtTypeReference.getTypeText' does not account for 'suspend' modifier on
suspend lambdas</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82258"><code>KT-82258</code></a>
Prepare PSI for migration from context receivers to context
parameters</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81074"><code>KT-81074</code></a>
KDoc: List rendering is broken</li>
</ul>
<h3>Analysis API. Providers and Caches</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82449"><code>KT-82449</code></a>
K2 IDE Analysis Freezes During Gradle Sync (Recursive Module Dependency
Computation in
KotlinModuleDependentsProviderBase.computeTransitiveDependents)</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82629"><code>KT-82629</code></a>
'collectDiagnostics' returns stale syntax error after editor fix</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-74907"><code>KT-74907</code></a>
Analysis API: Apply platform-based library module content restrictions
consistently</li>
</ul>
<h3>Analysis API. Standalone</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81107"><code>KT-81107</code></a>
AA: KtSourceModuleBuilder.sourceRoots doesn't works with symbolic
links</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d57eb4a26e"><code>d57eb4a</code></a>
Add ChangeLog for 2.3.20-RC3</li>
<li><a
href="41886bbf57"><code>41886bb</code></a>
[Gradle] Update KGP npm tooling dependency versions</li>
<li><a
href="210a9bde68"><code>210a9bd</code></a>
[Native] Do not mark iosX64 target as deprecate in DSL</li>
<li><a
href="7ed446ef70"><code>7ed446e</code></a>
Add ChangeLog for 2.3.20-RC2</li>
<li><a
href="520eadedf4"><code>520eade</code></a>
[K/JVM] Fix incorrect optimization of local delegation</li>
<li><a
href="7ef8bccc4b"><code>7ef8bcc</code></a>
Reflection: add LazyKProperty to fix recent performance regression</li>
<li><a
href="9fa7cf20c6"><code>9fa7cf2</code></a>
[Gradle] Link NoActiveThreadsAfterCompilerInvocationIT with
KT-84566</li>
<li><a
href="d410596086"><code>d410596</code></a>
[Gradle] Shutdown coroutines dispatcher threads after compiler
invocation</li>
<li><a
href="348430b268"><code>348430b</code></a>
[BTA] Fix compatibility between API 2.3.20 and KC 2.3.10</li>
<li><a
href="4058f3c6cd"><code>4058f3c</code></a>
[CMP] HiddenFromObjC remove outdated offset check</li>
<li>Additional commits viewable in <a
href="https://github.com/JetBrains/kotlin/compare/v2.3.10...v2.3.20">compare
view</a></li>
</ul>
</details>
<br />
Updates `org.jetbrains.kotlin:kotlin-serialization` from 2.3.10 to
2.3.20
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin:kotlin-serialization's
releases</a>.</em></p>
<blockquote>
<h2>Kotlin 2.3.20</h2>
<h2>Changelog</h2>
<h3>Analysis API. FIR</h3>
<h4>New Features</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-78090"><code>KT-78090</code></a>
Implement stubs support for new conditional returns and holdsIn
contracts</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82948"><code>KT-82948</code></a>
'FirRegularClass' expected as a containing declaration, got
'FirTypeAliasImpl'</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83467"><code>KT-83467</code></a>
Package-level JSpecify annotations are ignored when coming from jars or
libraries</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82057"><code>KT-82057</code></a>
K2. Cannot infer type parameter 'R' in Ktor routing post() function with
explicit response type</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82846"><code>KT-82846</code></a>
AA: unresolved KtExpression.expressionType for the reference to the
parameter with default value</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-80485"><code>KT-80485</code></a>
False positive UNRESOLVED_REFERENCE on nested interface from super-super
class in the super type position inside an anonymous object</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82772"><code>KT-82772</code></a>
Flaky false positive deprecation warning on PersistentMap.put in Kotlin
repo in IDE mode</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-76487"><code>KT-76487</code></a>
StdLibSourcesLazyDeclarationResolveTestGenerated.testWrappedInt is
unstable</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82618"><code>KT-82618</code></a>
Various tests are failing with NPE in kt-master after updating the
compiler on 19.11.25</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82076"><code>KT-82076</code></a>
Error querying members of JavaClass created for
SymbolLightClassForAnnotationClass during library analysis</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71596"><code>KT-71596</code></a>
Include Js/Wasi checkers in AbstractLLFirDiagnosticsCollector</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82085"><code>KT-82085</code></a>
No OUTER_CLASS_ARGUMENTS_REQUIRED on type parameter bound in IDE</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81873"><code>KT-81873</code></a>
Provide a way of including traces in phase JFR events</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71929"><code>KT-71929</code></a>
Consider leaving the non-post-compute version at
EnhancementSymbolsCache.enhancedFunctions</li>
</ul>
<h3>Analysis API. Infrastructure</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83173"><code>KT-83173</code></a>
Analysis API Tests: Library names with RC versions aren't sanitised</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-65140"><code>KT-65140</code></a>
LL FIR: Implement AbstractFirPsiJsDiagnosticTest for LL FIR</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82212"><code>KT-82212</code></a>
[Analysis API, LL FIR] Implement AbstractDiagnosticsFirWasmTest and
AbstractDiagnosticsFirWasmWasiTest for LL FIR</li>
</ul>
<h3>Analysis API. Light Classes</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82227"><code>KT-82227</code></a>
Value classes should expose regular static methods</li>
</ul>
<h3>Analysis API. PSI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81710"><code>KT-81710</code></a>
'KtTypeReference.getTypeText' does not account for 'suspend' modifier on
suspend lambdas</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82258"><code>KT-82258</code></a>
Prepare PSI for migration from context receivers to context
parameters</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81074"><code>KT-81074</code></a>
KDoc: List rendering is broken</li>
</ul>
<h3>Analysis API. Providers and Caches</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82449"><code>KT-82449</code></a>
K2 IDE Analysis Freezes During Gradle Sync (Recursive Module Dependency
Computation in
KotlinModuleDependentsProviderBase.computeTransitiveDependents)</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82629"><code>KT-82629</code></a>
'collectDiagnostics' returns stale syntax error after editor fix</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-74907"><code>KT-74907</code></a>
Analysis API: Apply platform-based library module content restrictions
consistently</li>
</ul>
<h3>Analysis API. Standalone</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81107"><code>KT-81107</code></a>
AA: KtSourceModuleBuilder.sourceRoots doesn't works with symbolic
links</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md">org.jetbrains.kotlin:kotlin-serialization's
changelog</a>.</em></p>
<blockquote>
<h2>2.3.20</h2>
<h3>Analysis API. FIR</h3>
<h4>New Features</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-78090"><code>KT-78090</code></a>
Implement stubs support for new conditional returns and holdsIn
contracts</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82948"><code>KT-82948</code></a>
'FirRegularClass' expected as a containing declaration, got
'FirTypeAliasImpl'</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83467"><code>KT-83467</code></a>
Package-level JSpecify annotations are ignored when coming from jars or
libraries</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82057"><code>KT-82057</code></a>
K2. Cannot infer type parameter 'R' in Ktor routing post() function with
explicit response type</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82846"><code>KT-82846</code></a>
AA: unresolved KtExpression.expressionType for the reference to the
parameter with default value</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-80485"><code>KT-80485</code></a>
False positive UNRESOLVED_REFERENCE on nested interface from super-super
class in the super type position inside an anonymous object</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82772"><code>KT-82772</code></a>
Flaky false positive deprecation warning on PersistentMap.put in Kotlin
repo in IDE mode</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-76487"><code>KT-76487</code></a>
StdLibSourcesLazyDeclarationResolveTestGenerated.testWrappedInt is
unstable</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82618"><code>KT-82618</code></a>
Various tests are failing with NPE in kt-master after updating the
compiler on 19.11.25</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82076"><code>KT-82076</code></a>
Error querying members of JavaClass created for
SymbolLightClassForAnnotationClass during library analysis</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71596"><code>KT-71596</code></a>
Include Js/Wasi checkers in AbstractLLFirDiagnosticsCollector</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82085"><code>KT-82085</code></a>
No OUTER_CLASS_ARGUMENTS_REQUIRED on type parameter bound in IDE</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81873"><code>KT-81873</code></a>
Provide a way of including traces in phase JFR events</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-71929"><code>KT-71929</code></a>
Consider leaving the non-post-compute version at
EnhancementSymbolsCache.enhancedFunctions</li>
</ul>
<h3>Analysis API. Infrastructure</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83173"><code>KT-83173</code></a>
Analysis API Tests: Library names with RC versions aren't sanitised</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-65140"><code>KT-65140</code></a>
LL FIR: Implement AbstractFirPsiJsDiagnosticTest for LL FIR</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82212"><code>KT-82212</code></a>
[Analysis API, LL FIR] Implement AbstractDiagnosticsFirWasmTest and
AbstractDiagnosticsFirWasmWasiTest for LL FIR</li>
</ul>
<h3>Analysis API. Light Classes</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82227"><code>KT-82227</code></a>
Value classes should expose regular static methods</li>
</ul>
<h3>Analysis API. PSI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81710"><code>KT-81710</code></a>
'KtTypeReference.getTypeText' does not account for 'suspend' modifier on
suspend lambdas</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82258"><code>KT-82258</code></a>
Prepare PSI for migration from context receivers to context
parameters</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81074"><code>KT-81074</code></a>
KDoc: List rendering is broken</li>
</ul>
<h3>Analysis API. Providers and Caches</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82449"><code>KT-82449</code></a>
K2 IDE Analysis Freezes During Gradle Sync (Recursive Module Dependency
Computation in
KotlinModuleDependentsProviderBase.computeTransitiveDependents)</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-82629"><code>KT-82629</code></a>
'collectDiagnostics' returns stale syntax error after editor fix</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-74907"><code>KT-74907</code></a>
Analysis API: Apply platform-based library module content restrictions
consistently</li>
</ul>
<h3>Analysis API. Standalone</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-81107"><code>KT-81107</code></a>
AA: KtSourceModuleBuilder.sourceRoots doesn't works with symbolic
links</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d57eb4a26e"><code>d57eb4a</code></a>
Add ChangeLog for 2.3.20-RC3</li>
<li><a
href="41886bbf57"><code>41886bb</code></a>
[Gradle] Update KGP npm tooling dependency versions</li>
<li><a
href="210a9bde68"><code>210a9bd</code></a>
[Native] Do not mark iosX64 target as deprecate in DSL</li>
<li><a
href="7ed446ef70"><code>7ed446e</code></a>
Add ChangeLog for 2.3.20-RC2</li>
<li><a
href="520eadedf4"><code>520eade</code></a>
[K/JVM] Fix incorrect optimization of local delegation</li>
<li><a
href="7ef8bccc4b"><code>7ef8bcc</code></a>
Reflection: add LazyKProperty to fix recent performance regression</li>
<li><a
href="9fa7cf20c6"><code>9fa7cf2</code></a>
[Gradle] Link NoActiveThreadsAfterCompilerInvocationIT with
KT-84566</li>
<li><a
href="d410596086"><code>d410596</code></a>
[Gradle] Shutdown coroutines dispatcher threads after compiler
invocation</li>
<li><a
href="348430b268"><code>348430b</code></a>
[BTA] Fix compatibility between API 2.3.20 and KC 2.3.10</li>
<li><a
href="4058f3c6cd"><code>4058f3c</code></a>
[CMP] HiddenFromObjC remove outdated offset check</li>
<li>Additional commits viewable in <a
href="https://github.com/JetBrains/kotlin/compare/v2.3.10...v2.3.20">compare
view</a></li>
</ul>
</details>
<br />
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fixes#242
## How Has This Been Tested?
new and existing tests pass
## Breaking Changes
none
## Types of changes
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
Validate `mcp-protocol-version` HTTP header during `InitializeRequest`
Fix `DEFAULT_NEGOTIATED_PROTOCOL_VERSION` to match the spec
fixes#547
## How Has This Been Tested?
Updated existing test (removed TODO referencing #547) to verify init
request
## Breaking Changes
none
## Types of changes
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
Bumps the other-dependencies group with 1 update in the
/samples/kotlin-mcp-client directory:
[com.anthropic:anthropic-java](https://github.com/anthropics/anthropic-sdk-java).
Updates `com.anthropic:anthropic-java` from 2.24.0 to 2.25.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-java/releases">com.anthropic:anthropic-java's
releases</a>.</em></p>
<blockquote>
<h2>v2.25.0</h2>
<h2>2.25.0 (2026-04-14)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.24.0...v2.25.0">v2.24.0...v2.25.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> mark Sonnet and Opus 4 as deprecated (<a
href="81c750e06a">81c750e</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>streaming:</strong> add missing events (<a
href="4ac1b6a507">4ac1b6a</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>client:</strong> reset .stats.yml (<a
href="1d409eaa60">1d409ea</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>improve examples (<a
href="64896b84b4">64896b8</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-java/blob/main/CHANGELOG.md">com.anthropic:anthropic-java's
changelog</a>.</em></p>
<blockquote>
<h2>2.25.0 (2026-04-14)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.24.0...v2.25.0">v2.24.0...v2.25.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> mark Sonnet and Opus 4 as deprecated (<a
href="81c750e06a">81c750e</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>streaming:</strong> add missing events (<a
href="4ac1b6a507">4ac1b6a</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>client:</strong> reset .stats.yml (<a
href="1d409eaa60">1d409ea</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>improve examples (<a
href="64896b84b4">64896b8</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="30a74c5119"><code>30a74c5</code></a>
chore: release main (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-java/issues/320">#320</a>)</li>
<li>See full diff in <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.24.0...v2.25.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Add warn-only validation for tool names at registration time, following
the MCP tool naming standard (SEP-986)
closes#417
## How Has This Been Tested?
unit tests
## Breaking Changes
none
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
Add optional `$schema` field to `ToolSchema`, establishing JSON Schema
2020-12 as the default dialect per SEP-1613.
closes#422
## How Has This Been Tested?
unit tests
## Breaking Changes
none
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
Remove Codecov configuration and CI steps for uploading coverage/test
reports.
## Motivation and Context
- Codecov integration relies on third-party credentials
- Codecov has not demonstrated clear value for the project:
- Coverage analysis is already handled by kover, which runs locally and
in CI
- PR reviews still require manual inspection of tests regardless of
codecov reports
- Codecov flaky test detection is unreliable, it marks 3325 out of all
tests as flaky with similar failure rates, making the signal useless
(https://app.codecov.io/gh/modelcontextprotocol/kotlin-sdk/tests)
Remove unused OpenAPI Generator plugin, its configuration, and the
`.openapi-generator-ignore` file.
## Breaking Changes
none
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
- Added `setup-node` with Node.js 22 to the release workflow — without
it, TypeScript integration tests fail because the macOS runner has an
incompatible pre-installed Node.js version
Bumps the all-dependencies group in
/integration-test/src/jvmTest/typescript with 1 update:
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node).
Updates `@types/node` from 25.5.2 to 25.6.0
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
mcp kotlin-sdk 0.11.0 -> 0.11.1
## Breaking Changes
none
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
`appendSseHeaders()` was called inside Ktor's `sse {}` block where
response headers are already committed. On Netty this throws
`UnsupportedOperationException`, killing the SSE stream and causing the
client to retry in a loop
## How Has This Been Tested?
unit, simple-streamable-server sample
## Breaking Changes
none
## Types of changes
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x ] I have added appropriate error handling
- [ x] I have added or updated documentation as needed
Bumps [hono](https://github.com/honojs/hono) from 4.12.9 to 4.12.12.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/honojs/hono/releases">hono's
releases</a>.</em></p>
<blockquote>
<h2>v4.12.12</h2>
<h2>Security fixes</h2>
<p>This release includes fixes for the following security issues:</p>
<h3>Middleware bypass via repeated slashes in serveStatic</h3>
<p>Affects: Serve Static middleware. Fixes a path normalization
inconsistency where repeated slashes (<code>//</code>) could bypass
route-based middleware protections and allow access to protected static
files. GHSA-wmmm-f939-6g9c</p>
<h3>Path traversal in toSSG() allows writing files outside the output
directory</h3>
<p>Affects: <code>toSSG()</code> for Static Site Generation. Fixes a
path traversal issue where crafted <code>ssgParams</code> values could
write files outside the configured output directory.
GHSA-xf4j-xp2r-rqqx</p>
<h3>Incorrect IP matching in ipRestriction() for IPv4-mapped IPv6
addresses</h3>
<p>Affects: IP Restriction Middleware. Fixes improper handling of
IPv4-mapped IPv6 addresses (e.g. <code>::ffff:127.0.0.1</code>) that
could cause allow/deny rules to be bypassed. GHSA-xpcf-pg52-r92g</p>
<h3>Missing validation of cookie name on write path in setCookie()</h3>
<p>Affects: <code>setCookie()</code>, <code>serialize()</code>, and
<code>serializeSigned()</code> from <code>hono/cookie</code>. Fixes
missing validation of cookie names on the write path, preventing
inconsistent handling between parsing and serialization.
GHSA-26pp-8wgv-hjvm</p>
<h3>Non-breaking space prefix bypass in cookie name handling in
getCookie()</h3>
<p>Affects: <code>getCookie()</code> from <code>hono/cookie</code>.
Fixes a discrepancy in cookie name handling that could allow
attacker-controlled cookies to override legitimate ones and bypass
prefix protections. GHSA-r5rp-j6wh-rvv4</p>
<hr />
<p>Users who use Serve Static, Static Site Generation, Cookie utilities,
or IP restriction middleware are strongly encouraged to upgrade to this
version.</p>
<h2>v4.12.11</h2>
<h2>What's Changed</h2>
<ul>
<li>feat(css): add classNameSlug option to createCssContext by <a
href="https://github.com/flow-pie"><code>@flow-pie</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4834">honojs/hono#4834</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/flow-pie"><code>@flow-pie</code></a>
made their first contribution in <a
href="https://redirect.github.com/honojs/hono/pull/4834">honojs/hono#4834</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/honojs/hono/compare/v4.12.10...v4.12.11">https://github.com/honojs/hono/compare/v4.12.10...v4.12.11</a></p>
<h2>v4.12.10</h2>
<h2>What's Changed</h2>
<ul>
<li>test(router): fix <code>Simple capturing group</code> test by <a
href="https://github.com/yusukebe"><code>@yusukebe</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4838">honojs/hono#4838</a></li>
<li>docs: fix impaired -> inspired typo in benchmark READMEs by <a
href="https://github.com/Abhi3975"><code>@Abhi3975</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4843">honojs/hono#4843</a></li>
<li>fix(jsx/dom): apply select value after children are rendered by <a
href="https://github.com/usualoma"><code>@usualoma</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4847">honojs/hono#4847</a></li>
<li>fix(compress): convert strong ETag to weak ETag when compressing by
<a href="https://github.com/usualoma"><code>@usualoma</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4848">honojs/hono#4848</a></li>
<li>docs(ip-restriction): add clear JSDoc examples and param types by <a
href="https://github.com/VISHNU7KASIREDDY"><code>@VISHNU7KASIREDDY</code></a>
in <a
href="https://redirect.github.com/honojs/hono/pull/4851">honojs/hono#4851</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Abhi3975"><code>@Abhi3975</code></a>
made their first contribution in <a
href="https://redirect.github.com/honojs/hono/pull/4843">honojs/hono#4843</a></li>
<li><a
href="https://github.com/VISHNU7KASIREDDY"><code>@VISHNU7KASIREDDY</code></a>
made their first contribution in <a
href="https://redirect.github.com/honojs/hono/pull/4851">honojs/hono#4851</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c37ba26da9"><code>c37ba26</code></a>
4.12.12</li>
<li><a
href="cc067c8559"><code>cc067c8</code></a>
Merge commit from fork</li>
<li><a
href="a586cd72e3"><code>a586cd7</code></a>
Merge commit from fork</li>
<li><a
href="48fa2233bc"><code>48fa223</code></a>
Merge commit from fork</li>
<li><a
href="b470278920"><code>b470278</code></a>
Merge commit from fork</li>
<li><a
href="9aff14bd72"><code>9aff14b</code></a>
Merge commit from fork</li>
<li><a
href="2c403c67eb"><code>2c403c6</code></a>
4.12.11</li>
<li><a
href="f82aba8e8e"><code>f82aba8</code></a>
feat(css): add classNameSlug option to createCssContext (<a
href="https://redirect.github.com/honojs/hono/issues/4834">#4834</a>)</li>
<li><a
href="9f374a55b2"><code>9f374a5</code></a>
4.12.10</li>
<li><a
href="a8c56a6620"><code>a8c56a6</code></a>
docs(ip-restriction): add clear JSDoc examples and param types (<a
href="https://redirect.github.com/honojs/hono/issues/4851">#4851</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/honojs/hono/compare/v4.12.9...v4.12.12">compare
view</a></li>
</ul>
</details>
<br />
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
bump project version to 0.11.0
## Motivation and Context
Release 0.11
## How Has This Been Tested?
Regression
## Breaking Changes
No
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
- enable rule for checking undocumented public api
- add kdoc skill
## How Has This Been Tested?
./gradlew detekt
## Breaking Changes
none
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [x] I have added or updated documentation as needed
---------
Co-authored-by: Konstantin Pavlov <1517853+kpavlov@users.noreply.github.com>
closes#546
## How Has This Been Tested?
unit
## Breaking Changes
none
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
Users currently must manually `install(ContentNegotiation) {
json(McpJson) }` before calling `mcp()`,
`mcpStreamableHttp()`, or `mcpStatelessStreamableHttp()`. Forgetting
this or using the default `json()`
instead of `json(McpJson)` causes silent serialization failures at
runtime (e.g., explicit null fields in JSON-RPC
responses). This PR makes the SDK install it automatically.
Fixes#664
## Changes
- **Core feature** — `mcp()`, `mcpStreamableHttp()`, and
`mcpStatelessStreamableHttp()` now auto-install `ContentNegotiation`
configured with `McpJson`. If the user already installed
`ContentNegotiation`, a warning is logged instead of crashing with
`DuplicatePluginException`.
- **`KtorServerHelpers.kt`** (new) — `installMcpContentNegotiation()`
internal helper with `pluginOrNull` guard and warning
- **`KtorServer.kt`** — calls the helper from all three entry points
- **`build.gradle.kts`** — adds `ktor-server-content-negotiation` and
`ktor-serialization` as `implementation` deps to `kotlin-sdk-server`
- **Removed manual installs** from `ConformanceServer.kt` and
`AbstractStreamableHttpIntegrationTest.kt`.
- **Test infrastructure** — replaced `slf4j-simple` with Logback and use
`ListAppender` (`LogCapture` utility) for deterministic log assertion.
Added `logback-test.xml` matching previous log levels.
- **`StreamableHttpServerConfigurationTest.kt`** (new) — verifies the
warning for all three entry points: `mcpStreamableHttp`,
`mcpStatelessStreamableHttp`, and `mcp` (SSE).
- **README.md** — removed manual `ContentNegotiation` boilerplate from
examples, documented automatic installation, added CORS configuration
snippet for browser-based clients.
- **CI** — added `ktlintCheck` to the Linux build matrix job.
## How Has This Been Tested?
Unit/integration tests. Conformance tests updated
## Breaking Changes
No
## Types of changes
- [x] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
Apply default values from the elicitation schema to the client's
response when the handler returns `Accept` with missing fields
closes#414
## How Has This Been Tested?
integration and conformance tests
## Breaking Changes
none
## Types of changes
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
SseTransportTest passes on wasm after updating ktor
## How Has This Been Tested?
jvm/js/wasm/macos
## Breaking Changes
none
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
## Summary
Add `maxRequestBodySize` parameter to
`StreamableHttpServerTransport.Configuration`, allowing consumers to set
a custom request body size limit lower than the default 4 MB.
- Add `maxRequestBodySize: Long` property to `Configuration` with a
default of 4 MB (`4,194,304` bytes)
- Replace hardcoded `MAXIMUM_MESSAGE_SIZE` constant with the
configurable value in `parseBody()`
- Use `Long` for content-length comparison to avoid `Int` overflow on
large values
## Motivation and Context
Closes#521
The `StreamableHttpServerTransport` has a hardcoded 4 MB request body
limit. Consumers who need a lower limit currently have to manually count
the request payload size before passing it to the SDK. This change makes
the limit configurable via `Configuration`.
## How Has This Been Tested?
- Existing unit tests continue to pass (default 4 MB behavior unchanged)
- Added `POST with custom max request body size rejects oversized
payload` — verifies `PayloadTooLarge` is returned for payloads exceeding
the custom limit
- Added `POST at exactly custom max request body size is not rejected as
payload too large` — verifies payloads at exactly the limit are not
rejected by the size check
```bash
./gradlew :kotlin-sdk-server:jvmTest --tests "*.StreamableHttpServerTransportTest"
```
## Breaking Changes
None. The new parameter has a default value matching the previous
hardcoded limit.
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
Add URL mode elicitation support and typed `PrimitiveSchemaDefinition`
hierarchy to align with MCP specification 2025-11-25
closes#540
## How Has This Been Tested?
unit/integration/conformance
## Breaking Changes
- `ElicitRequestParams` changed from `data class` to `sealed interface`.
A deprecated factory function preserves source compatibility for
`ElicitRequestParams(message, requestedSchema)`.
- `RequestedSchema.properties` changed from `JsonObject` to `Map<String,
PrimitiveSchemaDefinition>`.
- `ElicitRequest.requestedSchema` is deprecated, use `(params as
ElicitRequestFormParams).requestedSchema`.
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [x] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
## Update mcp-kotlin to 0.10.0 across sample projects
## How Has This Been Tested?
Locally, added ServerIntegrationTest to simple-streamable-server
## Breaking Changes
No
## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
- [x] Test update
## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed