| Filename | Latest commit message | Latest commit date |
|---|---|---|
Bumps [io.ktor:ktor-bom](https://github.com/ktorio/ktor) from 3.2.3 to 3.3.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/ktorio/ktor/releases">io.ktor:ktor-bom's releases</a>.</em></p> <blockquote> <h2>3.3.3</h2> <blockquote> <p>Published 26 November 2025</p> </blockquote> <h3>Improvements</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-6837">KTOR-6837</a> Discrepancies when parsing URL host with CIO and Darwin engines compared to the rest engines</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9050">KTOR-9050</a> Logging: SimpleLogger should be an object, not a class</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9094">KTOR-9094</a> Jetty Client: Support HTTP/2 over cleartext (h2c)</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9120">KTOR-9120</a> OpenAPI gen: missing operationId for KDoc fields</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-3019">KTOR-3019</a> Improve logging for CORS plugin</li> </ul> <h3>Bugfixes</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8671">KTOR-8671</a> Netty: RejectedExecutionException during shutdown on MacOS when dev mode is enabled</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9096">KTOR-9096</a> Darwin: New SSE handlers stop responding after canceling few SSE sessions</li> <li><a href="http://youtrack.jetbrains.com/issue/KTOR-9125">KTOR-9125</a> Double ResponseSent invocation when exception is thrown after respond</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8878">KTOR-8878</a> OpenAPI: StackOverflowError when a response object has property with <code>@Contextual</code> serializer</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8947">KTOR-8947</a> Java, ContentEncoding: IllegalHeaderNameException is thrown for ":status" pseudo header with HTTP/2</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9092">KTOR-9092</a> NettyHttp2Handler throws IllegalArgumentException: 'ktor.ApplicationCall' is already in use</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8924">KTOR-8924</a> Curl: Client sends both Transfer-Encoding and Content-Length headers for DELETE requests with body</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8838">KTOR-8838</a> Exception handling issue in client cache</li> </ul> <h2>3.3.2</h2> <blockquote> <p>Published 5 November 2025</p> </blockquote> <h3>Improvements</h3> <ul> <li>WebRTC Client. Remove redundant targets (<a href="https://youtrack.jetbrains.com/issue/KTOR-9062">KTOR-9062</a>)</li> <li>Add Socks proxy support to Darwin engine (<a href="https://youtrack.jetbrains.com/issue/KTOR-8968">KTOR-8968</a>)</li> <li>Java: Improve error message when SOCKS proxy is used (<a href="https://youtrack.jetbrains.com/issue/KTOR-2908">KTOR-2908</a>)</li> </ul> <h3>Bugfixes</h3> <ul> <li>HttpRequestRetry: SendCountExceedException when max retries is more than maxSendCount of HttpSend (<a href="https://youtrack.jetbrains.com/issue/KTOR-5850">KTOR-5850</a>)</li> <li>Darwin: The <code>maxFrameSize</code> option has no effect (<a href="https://youtrack.jetbrains.com/issue/KTOR-6963">KTOR-6963</a>)</li> <li>OpenAPI: StackOverflowError when a response object has property with <code>@Contextual</code> serializer (<a href="https://youtrack.jetbrains.com/issue/KTOR-8878">KTOR-8878</a>)</li> <li>OpenAPI gen: missing KDoc fields (<a href="https://youtrack.jetbrains.com/issue/KTOR-9021">KTOR-9021</a>)</li> <li>Server call.request.path() returns routing selectors in path (<a href="https://youtrack.jetbrains.com/issue/KTOR-7639">KTOR-7639</a>)</li> <li>StaticContent doesn't allow siblings (<a href="https://youtrack.jetbrains.com/issue/KTOR-9012">KTOR-9012</a>)</li> <li>HttpCache: FileStorage doesn't use given dispatcher for all file operations (<a href="https://youtrack.jetbrains.com/issue/KTOR-8832">KTOR-8832</a>)</li> <li>Curl: SOCKS proxy doesn't work (<a href="https://youtrack.jetbrains.com/issue/KTOR-9008">KTOR-9008</a>)</li> <li>Netty: java.lang.VerifyError is thrown on Android since 3.3.0 (<a href="https://youtrack.jetbrains.com/issue/KTOR-8916">KTOR-8916</a>)</li> <li>Response body channel is canceled while the body is being saved when having HttpRequestRetry and onDownload (<a href="https://youtrack.jetbrains.com/issue/KTOR-8975">KTOR-8975</a>)</li> <li>HttpCache: InvalidCacheStateException when varyKeys stored in files contain uppercase letters since 3.3.0 (<a href="https://youtrack.jetbrains.com/issue/KTOR-8970">KTOR-8970</a>)</li> </ul> <h2>3.3.1</h2> <blockquote> <p>Published 8 October 2025</p> </blockquote> <h3>Improvements</h3> <ul> <li>Add a note about SSE session lifetime in KDoc (<a href="https://youtrack.jetbrains.com/issue/KTOR-8440">KTOR-8440</a>)</li> <li>Update Kotlin to 2.2.20 (<a href="https://youtrack.jetbrains.com/issue/KTOR-8896">KTOR-8896</a>)</li> </ul> <h3>Bugfixes</h3> <ul> <li>NumberFormatException when Content-Length header value contains null bytes (<a href="https://youtrack.jetbrains.com/issue/KTOR-4828">KTOR-4828</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/ktorio/ktor/blob/main/CHANGELOG.md">io.ktor:ktor-bom's changelog</a>.</em></p> <blockquote> <h1>3.3.3</h1> <blockquote> <p>Published 26 November 2025</p> </blockquote> <h3>Improvements</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-6837">KTOR-6837</a> Discrepancies when parsing URL host with CIO and Darwin engines compared to the rest engines</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9050">KTOR-9050</a> Logging: SimpleLogger should be an object, not a class</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9094">KTOR-9094</a> Jetty Client: Support HTTP/2 over cleartext (h2c)</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9120">KTOR-9120</a> OpenAPI gen: missing operationId for KDoc fields</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-3019">KTOR-3019</a> Improve logging for CORS plugin</li> </ul> <h3>Bugfixes</h3> <ul> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8671">KTOR-8671</a> Netty: RejectedExecutionException during shutdown on MacOS when dev mode is enabled</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9096">KTOR-9096</a> Darwin: New SSE handlers stop responding after canceling few SSE sessions</li> <li><a href="http://youtrack.jetbrains.com/issue/KTOR-9125">KTOR-9125</a> Double ResponseSent invocation when exception is thrown after respond</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8878">KTOR-8878</a> OpenAPI: StackOverflowError when a response object has property with <a href="https://github.com/Contextual"><code>@Contextual</code></a> serializer</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8947">KTOR-8947</a> Java, ContentEncoding: IllegalHeaderNameException is thrown for ":status" pseudo header with HTTP/2</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-9092">KTOR-9092</a> NettyHttp2Handler throws IllegalArgumentException: 'ktor.ApplicationCall' is already in use</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8924">KTOR-8924</a> Curl: Client sends both Transfer-Encoding and Content-Length headers for DELETE requests with body</li> <li><a href="https://youtrack.jetbrains.com/issue/KTOR-8838">KTOR-8838</a> Exception handling issue in client cache</li> </ul> <h1>3.3.2</h1> <blockquote> <p>Published 5 November 2025</p> </blockquote> <h3>Improvements</h3> <ul> <li>WebRTC Client. Remove redundant targets (<a href="https://youtrack.jetbrains.com/issue/KTOR-9062">KTOR-9062</a>)</li> <li>Add Socks proxy support to Darwin engine (<a href="https://youtrack.jetbrains.com/issue/KTOR-8968">KTOR-8968</a>)</li> <li>Java: Improve error message when SOCKS proxy is used (<a href="https://youtrack.jetbrains.com/issue/KTOR-2908">KTOR-2908</a>)</li> </ul> <h3>Bugfixes</h3> <ul> <li>HttpRequestRetry: SendCountExceedException when max retries is more than maxSendCount of HttpSend (<a href="https://youtrack.jetbrains.com/issue/KTOR-5850">KTOR-5850</a>)</li> <li>Darwin: The <code>maxFrameSize</code> option has no effect (<a href="https://youtrack.jetbrains.com/issue/KTOR-6963">KTOR-6963</a>)</li> <li>OpenAPI: StackOverflowError when a response object has property with <a href="https://github.com/Contextual"><code>@Contextual</code></a> serializer (<a href="https://youtrack.jetbrains.com/issue/KTOR-8878">KTOR-8878</a>)</li> <li>OpenAPI gen: missing KDoc fields (<a href="https://youtrack.jetbrains.com/issue/KTOR-9021">KTOR-9021</a>)</li> <li>Server call.request.path() returns routing selectors in path (<a href="https://youtrack.jetbrains.com/issue/KTOR-7639">KTOR-7639</a>)</li> <li>StaticContent doesn't allow siblings (<a href="https://youtrack.jetbrains.com/issue/KTOR-9012">KTOR-9012</a>)</li> <li>HttpCache: FileStorage doesn't use given dispatcher for all file operations (<a href="https://youtrack.jetbrains.com/issue/KTOR-8832">KTOR-8832</a>)</li> <li>Curl: SOCKS proxy doesn't work (<a href="https://youtrack.jetbrains.com/issue/KTOR-9008">KTOR-9008</a>)</li> <li>Netty: java.lang.VerifyError is thrown on Android since 3.3.0 (<a href="https://youtrack.jetbrains.com/issue/KTOR-8916">KTOR-8916</a>)</li> <li>Response body channel is canceled while the body is being saved when having HttpRequestRetry and onDownload (<a href="https://youtrack.jetbrains.com/issue/KTOR-8975">KTOR-8975</a>)</li> <li>HttpCache: InvalidCacheStateException when varyKeys stored in files contain uppercase letters since 3.3.0 (<a href="https://youtrack.jetbrains.com/issue/KTOR-8970">KTOR-8970</a>)</li> </ul> <h1>3.3.1</h1> <blockquote> <p>Published 8 October 2025</p> </blockquote> <h3>Improvements</h3> <ul> <li>Add a note about SSE session lifetime in KDoc (<a href="https://youtrack.jetbrains.com/issue/KTOR-8440">KTOR-8440</a>)</li> <li>Update Kotlin to 2.2.20 (<a href="https://youtrack.jetbrains.com/issue/KTOR-8896">KTOR-8896</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
| .. | ||
| kotlin-mcp-client | ||
| kotlin-mcp-server | ||
| notebooks | ||
| simple-streamable-server | ||
| weather-stdio-server | ||
| README.md | ||
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 |
| 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 →
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 →