kotlin-sdk/samples
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dependabot[bot] be06a71053
chore(deps): bump org.jetbrains.kotlin.jvm from 2.4.10 to 2.4.20 in /samples/kotlin-mcp-client (#989)
Bumps [org.jetbrains.kotlin.jvm](https://github.com/JetBrains/kotlin)
from 2.4.10 to 2.4.20.
<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.20</h2>
<h2>Changelog</h2>
<h3>Analysis API</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86546"><code>KT-86546</code></a>
Check suspicious when over ConeKotlinType in
ConeTypeCompatibilityChecker</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85418"><code>KT-85418</code></a>
Implement an API for accessing deserialized file annotations in Analysis
API</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-74448"><code>KT-74448</code></a>
K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt,
kotlinx.coroutines</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85856"><code>KT-85856</code></a>
containingSymbol of constructor property differs for local and non-local
classes</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-65417"><code>KT-65417</code></a>
K2 IDE: KTOR false positive expect-actual matching error on enum class
because of implicit clone() in non-JVM source sets</li>
</ul>
<h3>Analysis API. Code Compilation</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-76457"><code>KT-76457</code></a>
K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a
JVM counterpart” on evaluating inline fun from common module inside
jvm</li>
</ul>
<h3>Analysis API. FIR</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-70552"><code>KT-70552</code></a>
No expects for actual</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-69727"><code>KT-69727</code></a>
K2 IDE. Wrong error in the editor on calling <code>clone</code> function
of actual enum instance in non-jvm platform</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-69726"><code>KT-69726</code></a>
FP errors on declaring <code>fun clone()</code> in actual enum in
not-jvm source-set</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86014"><code>KT-86014</code></a>
Types are broken after remove parameter through change signature</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86363"><code>KT-86363</code></a>
KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier
found on companion blocks</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86147"><code>KT-86147</code></a>
Drop <code>kotlin.parallel.resolve.under.global.lock</code> registry
key</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85543"><code>KT-85543</code></a>
Avoid lazy resolve for the contracts phase if no constracts might be
resolved</li>
</ul>
<h3>Analysis API. Infrastructure</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-84914"><code>KT-84914</code></a>
Do not publish analysis-api-test-framework</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86986"><code>KT-86986</code></a>
<code>kotlin-compiler-common-for-ide</code> bundles unrelated Analysis
API modules</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86186"><code>KT-86186</code></a>
Analysis API: Codebase tests run twice in some analysis modules — pick a
single JUnit runner and migrate</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85360"><code>KT-85360</code></a>
Drop kotlin-compiler-testdata-for-ide artifact</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85585"><code>KT-85585</code></a>
Simplify the dependencies graph for the Analysis API modules</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85381"><code>KT-85381</code></a>
Remove tests for the FE10 implementation</li>
</ul>
<h3>Analysis API. Light Classes</h3>
<h4>New Features</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-84645"><code>KT-84645</code></a>
Support resolving to companion block members &amp; extensions from Java
(light classes)</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-80775"><code>KT-80775</code></a>
Support PsiClass#getRecordComponents in light classes</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-57537"><code>KT-57537</code></a>
SLC: propagate default parameter value from (<code>@JvmOverloads</code>)
<code>expect</code> declarations to <code>actual</code>
declarations</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85040"><code>KT-85040</code></a>
[Analysis API] Improve Java / Kotlin interop in KMP projects</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87301"><code>KT-87301</code></a>
SymbolLightAccessorMethod#isValid returns false for delegated
properties</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87171"><code>KT-87171</code></a>
SLC: non-mapped Kotlin collection supertype is dropped from supertype
list</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87250"><code>KT-87250</code></a>
JvmExposeBoxed: light classes shouldn't be autogenerated for private
declarations</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-70428"><code>KT-70428</code></a>
AA: good code is red when a Java class extends a Kotlin class
implementing MutableList by delegation</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-63568"><code>KT-63568</code></a>
Symbol Light Classes:
KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work
incorrectly when psi is not set</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.20</h2>
<h3>Analysis API</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86546"><code>KT-86546</code></a>
Check suspicious when over ConeKotlinType in
ConeTypeCompatibilityChecker</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85418"><code>KT-85418</code></a>
Implement an API for accessing deserialized file annotations in Analysis
API</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-74448"><code>KT-74448</code></a>
K2. False positive MISSING_DEPENDENCY_SUPERCLASS in LinkedListTest.kt,
kotlinx.coroutines</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85856"><code>KT-85856</code></a>
containingSymbol of constructor property differs for local and non-local
classes</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-65417"><code>KT-65417</code></a>
K2 IDE: KTOR false positive expect-actual matching error on enum class
because of implicit clone() in non-JVM source sets</li>
</ul>
<h3>Analysis API. Code Compilation</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-76457"><code>KT-76457</code></a>
K2 IDE / KMP Debugger: KISEWA “Cannot compile a common source without a
JVM counterpart” on evaluating inline fun from common module inside
jvm</li>
</ul>
<h3>Analysis API. FIR</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-70552"><code>KT-70552</code></a>
No expects for actual</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-69727"><code>KT-69727</code></a>
K2 IDE. Wrong error in the editor on calling <code>clone</code> function
of actual enum instance in non-jvm platform</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-69726"><code>KT-69726</code></a>
FP errors on declaring <code>fun clone()</code> in actual enum in
not-jvm source-set</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86014"><code>KT-86014</code></a>
Types are broken after remove parameter through change signature</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86363"><code>KT-86363</code></a>
KotlinIllegalArgumentExceptionWithAttachments: No dangling modifier
found on companion blocks</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86147"><code>KT-86147</code></a>
Drop <code>kotlin.parallel.resolve.under.global.lock</code> registry
key</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85543"><code>KT-85543</code></a>
Avoid lazy resolve for the contracts phase if no constracts might be
resolved</li>
</ul>
<h3>Analysis API. Infrastructure</h3>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-84914"><code>KT-84914</code></a>
Do not publish analysis-api-test-framework</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86986"><code>KT-86986</code></a>
<code>kotlin-compiler-common-for-ide</code> bundles unrelated Analysis
API modules</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-86186"><code>KT-86186</code></a>
Analysis API: Codebase tests run twice in some analysis modules — pick a
single JUnit runner and migrate</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85360"><code>KT-85360</code></a>
Drop kotlin-compiler-testdata-for-ide artifact</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85585"><code>KT-85585</code></a>
Simplify the dependencies graph for the Analysis API modules</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85381"><code>KT-85381</code></a>
Remove tests for the FE10 implementation</li>
</ul>
<h3>Analysis API. Light Classes</h3>
<h4>New Features</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-84645"><code>KT-84645</code></a>
Support resolving to companion block members &amp; extensions from Java
(light classes)</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-80775"><code>KT-80775</code></a>
Support PsiClass#getRecordComponents in light classes</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-57537"><code>KT-57537</code></a>
SLC: propagate default parameter value from (<code>@JvmOverloads</code>)
<code>expect</code> declarations to <code>actual</code>
declarations</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-85040"><code>KT-85040</code></a>
[Analysis API] Improve Java / Kotlin interop in KMP projects</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87301"><code>KT-87301</code></a>
SymbolLightAccessorMethod#isValid returns false for delegated
properties</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87171"><code>KT-87171</code></a>
SLC: non-mapped Kotlin collection supertype is dropped from supertype
list</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-87250"><code>KT-87250</code></a>
JvmExposeBoxed: light classes shouldn't be autogenerated for private
declarations</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-70428"><code>KT-70428</code></a>
AA: good code is red when a Java class extends a Kotlin class
implementing MutableList by delegation</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-63568"><code>KT-63568</code></a>
Symbol Light Classes:
KtAnnotationApplicationWithArgumentsInfo.normalizedArguments() may work
incorrectly when psi is not set</li>
<li><a
href="https://youtrack.jetbrains.com/issue/KT-36740"><code>KT-36740</code></a>
MPP: False-positive incompatible types in .java when using expect-class
returned by non-expect member from common when actual is actual
typealias</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="890ac1d94f"><code>890ac1d</code></a>
Add Changelog for 2.4.20-RC3</li>
<li><a
href="8860aed4ae"><code>8860aed</code></a>
🍒 [FIR] Fix suspend conversion when expected type is nullable (<a
href="https://redirect.github.com/JetBrains/kotlin/issues/7769">#7769</a>)</li>
<li><a
href="ab5bcd9428"><code>ab5bcd9</code></a>
Edit ChangeLog for 2.4.20-RC2</li>
<li><a
href="9464edc097"><code>9464edc</code></a>
Add ChangeLog for 2.4.20-RC2</li>
<li><a
href="0261e43b78"><code>0261e43</code></a>
Cherry-pick &quot;Fix <code>asBodyAndResultVar</code> call in
`visitInlinedLambdaInComposable...</li>
<li><a
href="0763513670"><code>0763513</code></a>
[box-tests] Workaround for klib compatibility tests (<a
href="https://redirect.github.com/JetBrains/kotlin/issues/7626">#7626</a>)</li>
<li><a
href="045aec6647"><code>045aec6</code></a>
[Wasm] Append scripts from webpack.config.d in the end of the file (<a
href="https://redirect.github.com/JetBrains/kotlin/issues/7615">#7615</a>)</li>
<li><a
href="cd7173bf0b"><code>cd7173b</code></a>
🍒 [2.4.20] [K/JS] Keep associated obj annotation only if getInstance
survives...</li>
<li><a
href="d36a2ffbcc"><code>d36a2ff</code></a>
CastsOptimizationPass: break aliases cycles (<a
href="https://redirect.github.com/JetBrains/kotlin/issues/7578">#7578</a>)</li>
<li><a
href="8664983b34"><code>8664983</code></a>
[CLI] Restore custom IC search scope creation</li>
<li>Additional commits viewable in <a
href="https://github.com/JetBrains/kotlin/compare/v2.4.10...v2.4.20">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.jetbrains.kotlin.jvm&package-manager=gradle&previous-version=2.4.10&new-version=2.4.20)](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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-15 15:44:06 +02:00
..
kotlin-mcp-client chore(deps): bump org.jetbrains.kotlin.jvm from 2.4.10 to 2.4.20 in /samples/kotlin-mcp-client (#989) 2026-09-15 15:44:06 +02:00
kotlin-mcp-server chore(deps): bump the other-dependencies group across 3 directories with 2 updates (#974) 2026-09-01 13:26:31 +02:00
kotlinlang-mcp-server chore(deps): bump the other-dependencies group across 3 directories with 4 updates (#968) 2026-08-24 13:14:04 +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 the other-dependencies group across 3 directories with 4 updates (#968) 2026-08-24 13:14:04 +02:00
weather-stdio-server chore(deps): bump the other-dependencies group across 3 directories with 2 updates (#974) 2026-09-01 13:26: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 →