kotlin-sdk/samples/kotlin-mcp-client
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dependabot[bot] 9981a7b67a
chore(deps): bump io.modelcontextprotocol:kotlin-sdk-client from 0.11.0 to 0.11.1 in /samples/kotlin-mcp-client (#699)
Bumps
[io.modelcontextprotocol:kotlin-sdk-client](https://github.com/modelcontextprotocol/kotlin-sdk)
from 0.11.0 to 0.11.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/modelcontextprotocol/kotlin-sdk/releases">io.modelcontextprotocol:kotlin-sdk-client's
releases</a>.</em></p>
<blockquote>
<h2>0.11.1</h2>
<h3>Description</h3>
<p>Fixes an SSE stream crash on Netty when clients connect to the
Streamable HTTP GET endpoint.</p>
<h3>Fixed</h3>
<ul>
<li>Fixed GET SSE stream crash on Netty in Streamable HTTP where
<code>appendSseHeaders()</code> was called after response headers were
already committed, causing <code>UnsupportedOperationException</code>
and client retry loops by <a
href="https://github.com/devcrocod"><code>@​devcrocod</code></a> in <a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/681">#681</a></li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>mcp-kotlin to v0.11.0 in <a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/672">#672</a>,
<a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/673">#673</a>,
<a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/675">#675</a>,
<a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/676">#676</a></li>
<li>Ktor BOM to v3.3.3 in <a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/650">#650</a>,
<a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/653">#653</a>,
<a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/656">#656</a></li>
<li>Kotest assertions to v6.1.11 in <a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/674">#674</a></li>
<li>anthropic-java to v2.19.0 in <a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/671">#671</a></li>
<li><code>@​modelcontextprotocol/sdk</code> to v1.29.0,
<code>@​types/node</code> update in <a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/677">#677</a></li>
<li>hono to v4.12.12 in <a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/680">#680</a></li>
<li><code>@​hono/node-server</code> to v1.19.13 in <a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/pull/679">#679</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/modelcontextprotocol/kotlin-sdk/compare/0.11.0...0.11.1">https://github.com/modelcontextprotocol/kotlin-sdk/compare/0.11.0...0.11.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f02f5d3d10"><code>f02f5d3</code></a>
release: bump mcp kotlin-sdk version to 0.11.1 (<a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/issues/682">#682</a>)</li>
<li><a
href="8a7f9f8d31"><code>8a7f9f8</code></a>
fix(server): GET SSE stream crash on Netty in Streamable HTTP (<a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/issues/681">#681</a>)</li>
<li><a
href="cceca4df58"><code>cceca4d</code></a>
chore(deps): bump io.ktor:ktor-bom from 3.2.3 to 3.3.3 in
/samples/kotlin-mcp...</li>
<li><a
href="12171dc2ec"><code>12171dc</code></a>
chore(deps): bump hono from 4.12.9 to 4.12.12 in
/integration-test/src/jvmTes...</li>
<li><a
href="66d17956c1"><code>66d1795</code></a>
chore(deps): bump <code>@​hono/node-server</code> from 1.19.11 to
1.19.13 in /integration-t...</li>
<li><a
href="8442ab852b"><code>8442ab8</code></a>
chore(deps): bump com.anthropic:anthropic-java from 2.18.0 to 2.19.0 in
/samp...</li>
<li><a
href="20ac69f9af"><code>20ac69f</code></a>
chore(deps): bump mcp-kotlin from 0.10.0 to 0.11.0 in
/samples/simple-streama...</li>
<li><a
href="4144db6736"><code>4144db6</code></a>
chore(deps): bump io.modelcontextprotocol:kotlin-sdk-client from 0.10.0
to 0....</li>
<li><a
href="3f7f499dbe"><code>3f7f499</code></a>
chore(deps): bump mcp-kotlin from 0.10.0 to 0.11.0 in
/samples/kotlin-mcp-ser...</li>
<li><a
href="7c87ed1ba5"><code>7c87ed1</code></a>
chore(deps): bump the kotest group with 3 updates (<a
href="https://redirect.github.com/modelcontextprotocol/kotlin-sdk/issues/674">#674</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/modelcontextprotocol/kotlin-sdk/compare/0.11.0...0.11.1">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-04-14 22:49:49 +02:00
..
gradle chore(deps): bump io.modelcontextprotocol:kotlin-sdk-client from 0.11.0 to 0.11.1 in /samples/kotlin-mcp-client (#699) 2026-04-14 22:49:49 +02:00
src/main docs: update client and server samples (#598) 2026-03-13 10:23:51 +01:00
build.gradle.kts Add Ktor BOM for dependency management across all modules, run Kotlin-MCP-Server Sample (#367) 2025-11-04 11:44:39 +02:00
gradle.properties #302 Update samples build workflow (#330) 2025-10-23 13:02:22 +03:00
gradlew chore(deps): bump the other-dependencies group across 4 directories with 4 updates (#634) 2026-03-27 00:58:15 +00:00
gradlew.bat chore(deps): bump the other-dependencies group across 4 directories with 4 updates (#634) 2026-03-27 00:58:15 +00:00
README.md docs: streamable server sample (#595) 2026-03-10 12:45:21 +01:00
settings.gradle.kts #302 Update samples build workflow (#330) 2025-10-23 13:02:22 +03:00

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_KEY environment 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 .jar file.

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.

Additional Resources