| 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=" |
||
| .. | ||
| gradle | ||
| src/main | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
Kotlin MCP Client
An interactive CLI client that connects to any MCP server over STDIO and pipes queries through Anthropic's Claude API.
Overview
This sample demonstrates a complete MCP client workflow: launching an MCP server as a subprocess, discovering its tools, converting them to Anthropic's tool format, and running an interactive chat loop where Claude can call server tools on behalf of the user.
Prerequisites
- JDK 17+
- An
ANTHROPIC_API_KEYenvironment variable set with a valid Anthropic API key - An MCP server script to connect to (
.js,.py, or.jar)
Build & Run
Run the client, passing the path to an MCP server:
# Connect to a JVM server
./gradlew run --args="path/to/server.jar"
# Connect to a Python server
./gradlew run --args="path/to/server.py"
# Connect to a Node.js server
./gradlew run --args="path/to/build/index.js"
Note
The client uses STDIO transport, so it launches the MCP server as a subprocess. Ensure the server script is executable and is a valid
.js,.py, or.jarfile.
MCP Capabilities
From the client perspective, this sample demonstrates:
- Tool discovery — lists tools from the connected server and converts them to Anthropic's tool format.
- Tool invocation — when Claude's response requests a tool call, the client invokes the corresponding MCP tool and feeds the result back into the conversation.