kotlin-sdk/samples
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dependabot[bot] f1cf484e25
chore(deps): bump kotlin from 2.4.0 to 2.4.10 in /samples/kotlinlang-mcp-server (#903)
Bumps `kotlin` from 2.4.0 to 2.4.10.
Updates `org.jetbrains.kotlin.jvm` from 2.4.0 to 2.4.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin.jvm's
releases</a>.</em></p>
<blockquote>
<h2>Kotlin 2.4.10</h2>
<h2>Changelog</h2>
<h3>Backend. Wasm</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87066"><code>KT-87066</code></a>
K/Wasm: Not all files are presented in compiler output directory with
multimodule-closed-world and incremental compilation</li>
</ul>
<h3>Compiler</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86939"><code>KT-86939</code></a>
JVM: IllegalStateException &quot;No value for annotation parameter&quot;
when using const val in nested Java annotation array argument</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83766"><code>KT-83766</code></a>
K2: Wrong sourcePsi is set for <code>SymbolPsiLiteral</code> in SLC for
annotation arguments referencing a const val</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86728"><code>KT-86728</code></a>
Reified type inference: expected type not propagated into inline call
inside lambda with elvis operator</li>
</ul>
<h3>Compose Compiler</h3>
<ul>
<li><a
href="https://issuetracker.google.com/issues/522127447"><code>b/522127447</code></a>
Compose Compiler 2.4: classes previously inferred <code>stable</code>
now reported <code>runtime</code>/<code>Uncertain</code></li>
</ul>
<h3>Klibs</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86501"><code>KT-86501</code></a>
Native: IrTypeAliasSymbolImpl is already bound. Signature:
kotlinx.datetime/Instant|null[0] on iosSimulatorArm64</li>
</ul>
<h3>Tools. CLI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86930"><code>KT-86930</code></a>
Introduce <code>kotlinr</code> in the Kotlin distribution</li>
</ul>
<h3>Tools. Gradle. BCV</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87223"><code>KT-87223</code></a>
Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath
causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of
2.4.0</li>
</ul>
<h3>Tools. Gradle. JS</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87304"><code>KT-87304</code></a>
jsBrowserTest fails with &quot;exited with errors (exit code:
1)&quot;</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86057"><code>KT-86057</code></a>
kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall
is up-to-date, causing kotlinStoreYarnLock to fail</li>
</ul>
<h3>Tools. Gradle. Multiplatform</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87084"><code>KT-87084</code></a>
False positive warning for JS and Wasm compilations when CRI is
enabled</li>
</ul>
<h3>Tools. Scripts</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87076"><code>KT-87076</code></a>
<code>@file</code>:CompilerOptions(&quot;-jvm-target&quot;, ...) ignored
in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target
1.8</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86352"><code>KT-86352</code></a>
K2 scripting: FirResolvedTypeRef exception when resolving extension
functions from imported scripts</li>
</ul>
<h2>Kotlin 2.4.10-RC2</h2>
<h2>Changelog</h2>
<h3>Backend. Wasm</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87066"><code>KT-87066</code></a>
K/Wasm: Not all files are presented in compiler output directory with
multimodule-closed-world and incremental compilation</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.jvm's
changelog</a>.</em></p>
<blockquote>
<h2>2.4.10</h2>
<h3>Backend. Wasm</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87066"><code>KT-87066</code></a>
K/Wasm: Not all files are presented in compiler output directory with
multimodule-closed-world and incremental compilation</li>
</ul>
<h3>Compiler</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86939"><code>KT-86939</code></a>
JVM: IllegalStateException &quot;No value for annotation parameter&quot;
when using const val in nested Java annotation array argument</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83766"><code>KT-83766</code></a>
K2: Wrong sourcePsi is set for <code>SymbolPsiLiteral</code> in SLC for
annotation arguments referencing a const val</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86728"><code>KT-86728</code></a>
Reified type inference: expected type not propagated into inline call
inside lambda with elvis operator</li>
</ul>
<h3>Compose Compiler</h3>
<ul>
<li><a
href="https://issuetracker.google.com/issues/522127447"><code>b/522127447</code></a>
Compose Compiler 2.4: classes previously inferred <code>stable</code>
now reported <code>runtime</code>/<code>Uncertain</code></li>
</ul>
<h3>Klibs</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86501"><code>KT-86501</code></a>
Native: IrTypeAliasSymbolImpl is already bound. Signature:
kotlinx.datetime/Instant|null[0] on iosSimulatorArm64</li>
</ul>
<h3>Tools. CLI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86930"><code>KT-86930</code></a>
Introduce <code>kotlinr</code> in the Kotlin distribution</li>
</ul>
<h3>Tools. Gradle. BCV</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87223"><code>KT-87223</code></a>
Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath
causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of
2.4.0</li>
</ul>
<h3>Tools. Gradle. JS</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87304"><code>KT-87304</code></a>
jsBrowserTest fails with &quot;exited with errors (exit code:
1)&quot;</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86057"><code>KT-86057</code></a>
kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall
is up-to-date, causing kotlinStoreYarnLock to fail</li>
</ul>
<h3>Tools. Gradle. Multiplatform</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87084"><code>KT-87084</code></a>
False positive warning for JS and Wasm compilations when CRI is
enabled</li>
</ul>
<h3>Tools. Scripts</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87076"><code>KT-87076</code></a>
<code>@file</code>:CompilerOptions(&quot;-jvm-target&quot;, ...) ignored
in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target
1.8</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86352"><code>KT-86352</code></a>
K2 scripting: FirResolvedTypeRef exception when resolving extension
functions from imported scripts</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5687445832"><code>5687445</code></a>
Add Changelog for 2.4.10-RC2</li>
<li><a
href="ba30392c45"><code>ba30392</code></a>
[Wasm] Support regenerate unchanged modules flag on KGP</li>
<li><a
href="6307e7310d"><code>6307e73</code></a>
[Wasm] Implement Xwasm-IC-generate-unchanged-modules flag</li>
<li><a
href="39d7aee847"><code>39d7aee</code></a>
Add ChangeLog for 2.4.10-RC2</li>
<li><a
href="a2956bed85"><code>a2956be</code></a>
[Gradle] Update karma.conf.js to use 'require(...)' instead plain
strings</li>
<li><a
href="9b1361ce7a"><code>9b1361c</code></a>
[Gradle] KT-87223: Updated regression test</li>
<li><a
href="a4c153af52"><code>a4c153a</code></a>
[Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat
config</li>
<li><a
href="bc04b90d24"><code>bc04b90</code></a>
Add ChangeLog for 2.4.10-RC</li>
<li><a
href="bbcb94baa2"><code>bbcb94b</code></a>
[CRI] explicitly disable CRI generation for non-JVM targets to avoid
false-po...</li>
<li><a
href="6c2c458f1d"><code>6c2c458</code></a>
Scripting: fix jvmTarget processing from script annotations</li>
<li>Additional commits viewable in <a
href="https://github.com/JetBrains/kotlin/compare/v2.4.0...v2.4.10">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.jetbrains.kotlin.plugin.serialization` from 2.4.0 to 2.4.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin.plugin.serialization's
releases</a>.</em></p>
<blockquote>
<h2>Kotlin 2.4.10</h2>
<h2>Changelog</h2>
<h3>Backend. Wasm</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87066"><code>KT-87066</code></a>
K/Wasm: Not all files are presented in compiler output directory with
multimodule-closed-world and incremental compilation</li>
</ul>
<h3>Compiler</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86939"><code>KT-86939</code></a>
JVM: IllegalStateException &quot;No value for annotation parameter&quot;
when using const val in nested Java annotation array argument</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83766"><code>KT-83766</code></a>
K2: Wrong sourcePsi is set for <code>SymbolPsiLiteral</code> in SLC for
annotation arguments referencing a const val</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86728"><code>KT-86728</code></a>
Reified type inference: expected type not propagated into inline call
inside lambda with elvis operator</li>
</ul>
<h3>Compose Compiler</h3>
<ul>
<li><a
href="https://issuetracker.google.com/issues/522127447"><code>b/522127447</code></a>
Compose Compiler 2.4: classes previously inferred <code>stable</code>
now reported <code>runtime</code>/<code>Uncertain</code></li>
</ul>
<h3>Klibs</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86501"><code>KT-86501</code></a>
Native: IrTypeAliasSymbolImpl is already bound. Signature:
kotlinx.datetime/Instant|null[0] on iosSimulatorArm64</li>
</ul>
<h3>Tools. CLI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86930"><code>KT-86930</code></a>
Introduce <code>kotlinr</code> in the Kotlin distribution</li>
</ul>
<h3>Tools. Gradle. BCV</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87223"><code>KT-87223</code></a>
Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath
causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of
2.4.0</li>
</ul>
<h3>Tools. Gradle. JS</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87304"><code>KT-87304</code></a>
jsBrowserTest fails with &quot;exited with errors (exit code:
1)&quot;</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86057"><code>KT-86057</code></a>
kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall
is up-to-date, causing kotlinStoreYarnLock to fail</li>
</ul>
<h3>Tools. Gradle. Multiplatform</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87084"><code>KT-87084</code></a>
False positive warning for JS and Wasm compilations when CRI is
enabled</li>
</ul>
<h3>Tools. Scripts</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87076"><code>KT-87076</code></a>
<code>@file</code>:CompilerOptions(&quot;-jvm-target&quot;, ...) ignored
in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target
1.8</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86352"><code>KT-86352</code></a>
K2 scripting: FirResolvedTypeRef exception when resolving extension
functions from imported scripts</li>
</ul>
<h2>Kotlin 2.4.10-RC2</h2>
<h2>Changelog</h2>
<h3>Backend. Wasm</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87066"><code>KT-87066</code></a>
K/Wasm: Not all files are presented in compiler output directory with
multimodule-closed-world and incremental compilation</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.plugin.serialization's
changelog</a>.</em></p>
<blockquote>
<h2>2.4.10</h2>
<h3>Backend. Wasm</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87066"><code>KT-87066</code></a>
K/Wasm: Not all files are presented in compiler output directory with
multimodule-closed-world and incremental compilation</li>
</ul>
<h3>Compiler</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86939"><code>KT-86939</code></a>
JVM: IllegalStateException &quot;No value for annotation parameter&quot;
when using const val in nested Java annotation array argument</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-83766"><code>KT-83766</code></a>
K2: Wrong sourcePsi is set for <code>SymbolPsiLiteral</code> in SLC for
annotation arguments referencing a const val</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86728"><code>KT-86728</code></a>
Reified type inference: expected type not propagated into inline call
inside lambda with elvis operator</li>
</ul>
<h3>Compose Compiler</h3>
<ul>
<li><a
href="https://issuetracker.google.com/issues/522127447"><code>b/522127447</code></a>
Compose Compiler 2.4: classes previously inferred <code>stable</code>
now reported <code>runtime</code>/<code>Uncertain</code></li>
</ul>
<h3>Klibs</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86501"><code>KT-86501</code></a>
Native: IrTypeAliasSymbolImpl is already bound. Signature:
kotlinx.datetime/Instant|null[0] on iosSimulatorArm64</li>
</ul>
<h3>Tools. CLI</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86930"><code>KT-86930</code></a>
Introduce <code>kotlinr</code> in the Kotlin distribution</li>
</ul>
<h3>Tools. Gradle. BCV</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87223"><code>KT-87223</code></a>
Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath
causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of
2.4.0</li>
</ul>
<h3>Tools. Gradle. JS</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87304"><code>KT-87304</code></a>
jsBrowserTest fails with &quot;exited with errors (exit code:
1)&quot;</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86057"><code>KT-86057</code></a>
kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall
is up-to-date, causing kotlinStoreYarnLock to fail</li>
</ul>
<h3>Tools. Gradle. Multiplatform</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87084"><code>KT-87084</code></a>
False positive warning for JS and Wasm compilations when CRI is
enabled</li>
</ul>
<h3>Tools. Scripts</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87076"><code>KT-87076</code></a>
<code>@file</code>:CompilerOptions(&quot;-jvm-target&quot;, ...) ignored
in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target
1.8</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86352"><code>KT-86352</code></a>
K2 scripting: FirResolvedTypeRef exception when resolving extension
functions from imported scripts</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5687445832"><code>5687445</code></a>
Add Changelog for 2.4.10-RC2</li>
<li><a
href="ba30392c45"><code>ba30392</code></a>
[Wasm] Support regenerate unchanged modules flag on KGP</li>
<li><a
href="6307e7310d"><code>6307e73</code></a>
[Wasm] Implement Xwasm-IC-generate-unchanged-modules flag</li>
<li><a
href="39d7aee847"><code>39d7aee</code></a>
Add ChangeLog for 2.4.10-RC2</li>
<li><a
href="a2956bed85"><code>a2956be</code></a>
[Gradle] Update karma.conf.js to use 'require(...)' instead plain
strings</li>
<li><a
href="9b1361ce7a"><code>9b1361c</code></a>
[Gradle] KT-87223: Updated regression test</li>
<li><a
href="a4c153af52"><code>a4c153a</code></a>
[Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat
config</li>
<li><a
href="bc04b90d24"><code>bc04b90</code></a>
Add ChangeLog for 2.4.10-RC</li>
<li><a
href="bbcb94baa2"><code>bbcb94b</code></a>
[CRI] explicitly disable CRI generation for non-JVM targets to avoid
false-po...</li>
<li><a
href="6c2c458f1d"><code>6c2c458</code></a>
Scripting: fix jvmTarget processing from script annotations</li>
<li>Additional commits viewable in <a
href="https://github.com/JetBrains/kotlin/compare/v2.4.0...v2.4.10">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>
2026-08-04 20:55:25 +02:00
..
kotlin-mcp-client chore(deps): bump io.modelcontextprotocol:kotlin-sdk-client from 0.14.0 to 0.15.0 in /samples/kotlin-mcp-client (#925) 2026-08-03 13:03:13 +02:00
kotlin-mcp-server chore(deps): bump kotlin from 2.4.0 to 2.4.10 in /samples/kotlin-mcp-server (#900) 2026-08-04 20:30:46 +02:00
kotlinlang-mcp-server chore(deps): bump kotlin from 2.4.0 to 2.4.10 in /samples/kotlinlang-mcp-server (#903) 2026-08-04 20:55:25 +02:00
notebooks samples: update mcp-kotlin to 0.10.0 across sample projects (#645) 2026-03-30 23:47:31 +03:00
simple-streamable-server chore(deps): bump kotlin from 2.4.0 to 2.4.10 in /samples/simple-streamable-server (#904) 2026-08-04 19:46:01 +02:00
weather-stdio-server chore(deps): bump kotlin from 2.4.0 to 2.4.10 in /samples/weather-stdio-server (#905) 2026-08-04 19:15:31 +02:00
README.md sample: kotlinlang mcp server (#713) 2026-04-27 15:07:03 +02:00

Kotlin MCP SDK Samples

Runnable projects demonstrating MCP server and client implementations with the Kotlin MCP SDK. For background on the protocol itself, see the MCP documentation.

Overview

Sample Type Transport MCP Features
simple-streamable-server Server Streamable HTTP Tools, Resources, Prompts, Logging
kotlinlang-mcp-server Server Streamable HTTP Tools
kotlin-mcp-server Server STDIO, SSE Tools, Resources, Prompts
weather-stdio-server Server STDIO Tools
kotlin-mcp-client Client STDIO Tool discovery & invocation
notebooks Client (Notebook) Streamable HTTP Tool discovery & invocation

Getting Started

  • Building a server? Start with simple-streamable-server — it uses the recommended Streamable HTTP transport and covers tools, resources, prompts, and logging.
  • Building a client? Open the notebooks sample for a step-by-step walkthrough, or see kotlin-mcp-client for a full CLI client with Anthropic API integration.

Samples

Simple Streamable HTTP Server

A minimal Streamable HTTP server with optional Bearer token authentication. Demonstrates tools (greet, multi-greet), a prompt template, a resource, and server-to-client logging notifications. Read more →

Kotlinlang MCP Server

A Streamable HTTP server that exposes the official Kotlin documentation (kotlinlang.org) to LLM clients — full-text search via Algolia and page retrieval in markdown. Demonstrates wrapping a real external API in an MCP server with in-memory caching. Read more →

Kotlin MCP Server

A multi-transport server supporting STDIO, SSE (plain), and SSE (Ktor plugin). Useful for exploring different transport modes side by side. Read more →

Weather STDIO Server

A focused STDIO server that exposes weather forecast and alert tools backed by the weather.gov API. Includes Claude Desktop integration instructions. Read more →

Kotlin MCP Client

An interactive CLI client that connects to any MCP server over STDIO and routes queries through Anthropic's Claude API, bridging MCP tools with LLM conversations. Read more →

MCP Client Notebook

A Kotlin notebook that connects to a remote MCP server via Streamable HTTP and demonstrates ping, tool listing, and tool invocation — all in an interactive cell-by-cell format. Read more →