Mirror of https://github.com/modelcontextprotocol/kotlin-sdk — The official Kotlin SDK for Model Context Protocol servers and clients. Maintained in collaboration with JetBrains
  • Kotlin 98%
  • TypeScript 1.7%
  • Shell 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dependabot[bot] 1b60df89ed
Bump ktor from 3.2.3 to 3.3.0 (#265)
Bumps `ktor` from 3.2.3 to 3.3.0.
Updates `io.ktor:ktor-client-core` from 3.2.3 to 3.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/releases">io.ktor:ktor-client-core's
releases</a>.</em></p>
<blockquote>
<h2>3.3.0</h2>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/blob/main/CHANGELOG.md">io.ktor:ktor-client-core's
changelog</a>.</em></p>
<blockquote>
<h1>3.3.0</h1>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b9abe3113e"><code>b9abe31</code></a>
Add changelog for 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5081">#5081</a>)</li>
<li><a
href="40eb608b9b"><code>40eb608</code></a>
Release 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5076">#5076</a>)</li>
<li><a
href="1324c4ccd4"><code>1324c4c</code></a>
Update netty.tcnative to v2.0.73.Final</li>
<li><a
href="dbbbaee137"><code>dbbbaee</code></a>
Update dependency io.swagger.parser.v3:swagger-parser to v2.1.33</li>
<li><a
href="55e77cff55"><code>55e77cf</code></a>
KTOR-8044 Get flaky tests under control</li>
<li><a
href="fab7164d06"><code>fab7164</code></a>
KTOR-8753 Change OkHttp specific sse session to default sse session (<a
href="https://redirect.github.com/ktorio/ktor/issues/5072">#5072</a>)</li>
<li><a
href="6f0c34e799"><code>6f0c34e</code></a>
Merge pull request <a
href="https://redirect.github.com/ktorio/ktor/issues/5069">#5069</a>
from ktorio/zibet27/ktor-client-webrtc-android</li>
<li><a
href="cb0bca4171"><code>cb0bca4</code></a>
Merge branch 'main' into zibet27/ktor-client-webrtc-android</li>
<li><a
href="1c9ecadd95"><code>1c9ecad</code></a>
KTOR-8785 Fix for DI shutdown hook</li>
<li><a
href="e0d204c82f"><code>e0d204c</code></a>
KTOR-8820 Performance regression when using ContentEncoding and
HttpRequestRe...</li>
<li>Additional commits viewable in <a
href="https://github.com/ktorio/ktor/compare/3.2.3...3.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `io.ktor:ktor-server-sse` from 3.2.3 to 3.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/releases">io.ktor:ktor-server-sse's
releases</a>.</em></p>
<blockquote>
<h2>3.3.0</h2>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/blob/main/CHANGELOG.md">io.ktor:ktor-server-sse's
changelog</a>.</em></p>
<blockquote>
<h1>3.3.0</h1>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b9abe3113e"><code>b9abe31</code></a>
Add changelog for 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5081">#5081</a>)</li>
<li><a
href="40eb608b9b"><code>40eb608</code></a>
Release 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5076">#5076</a>)</li>
<li><a
href="1324c4ccd4"><code>1324c4c</code></a>
Update netty.tcnative to v2.0.73.Final</li>
<li><a
href="dbbbaee137"><code>dbbbaee</code></a>
Update dependency io.swagger.parser.v3:swagger-parser to v2.1.33</li>
<li><a
href="55e77cff55"><code>55e77cf</code></a>
KTOR-8044 Get flaky tests under control</li>
<li><a
href="fab7164d06"><code>fab7164</code></a>
KTOR-8753 Change OkHttp specific sse session to default sse session (<a
href="https://redirect.github.com/ktorio/ktor/issues/5072">#5072</a>)</li>
<li><a
href="6f0c34e799"><code>6f0c34e</code></a>
Merge pull request <a
href="https://redirect.github.com/ktorio/ktor/issues/5069">#5069</a>
from ktorio/zibet27/ktor-client-webrtc-android</li>
<li><a
href="cb0bca4171"><code>cb0bca4</code></a>
Merge branch 'main' into zibet27/ktor-client-webrtc-android</li>
<li><a
href="1c9ecadd95"><code>1c9ecad</code></a>
KTOR-8785 Fix for DI shutdown hook</li>
<li><a
href="e0d204c82f"><code>e0d204c</code></a>
KTOR-8820 Performance regression when using ContentEncoding and
HttpRequestRe...</li>
<li>Additional commits viewable in <a
href="https://github.com/ktorio/ktor/compare/3.2.3...3.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `io.ktor:ktor-server-websockets` from 3.2.3 to 3.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/releases">io.ktor:ktor-server-websockets's
releases</a>.</em></p>
<blockquote>
<h2>3.3.0</h2>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/blob/main/CHANGELOG.md">io.ktor:ktor-server-websockets's
changelog</a>.</em></p>
<blockquote>
<h1>3.3.0</h1>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b9abe3113e"><code>b9abe31</code></a>
Add changelog for 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5081">#5081</a>)</li>
<li><a
href="40eb608b9b"><code>40eb608</code></a>
Release 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5076">#5076</a>)</li>
<li><a
href="1324c4ccd4"><code>1324c4c</code></a>
Update netty.tcnative to v2.0.73.Final</li>
<li><a
href="dbbbaee137"><code>dbbbaee</code></a>
Update dependency io.swagger.parser.v3:swagger-parser to v2.1.33</li>
<li><a
href="55e77cff55"><code>55e77cf</code></a>
KTOR-8044 Get flaky tests under control</li>
<li><a
href="fab7164d06"><code>fab7164</code></a>
KTOR-8753 Change OkHttp specific sse session to default sse session (<a
href="https://redirect.github.com/ktorio/ktor/issues/5072">#5072</a>)</li>
<li><a
href="6f0c34e799"><code>6f0c34e</code></a>
Merge pull request <a
href="https://redirect.github.com/ktorio/ktor/issues/5069">#5069</a>
from ktorio/zibet27/ktor-client-webrtc-android</li>
<li><a
href="cb0bca4171"><code>cb0bca4</code></a>
Merge branch 'main' into zibet27/ktor-client-webrtc-android</li>
<li><a
href="1c9ecadd95"><code>1c9ecad</code></a>
KTOR-8785 Fix for DI shutdown hook</li>
<li><a
href="e0d204c82f"><code>e0d204c</code></a>
KTOR-8820 Performance regression when using ContentEncoding and
HttpRequestRe...</li>
<li>Additional commits viewable in <a
href="https://github.com/ktorio/ktor/compare/3.2.3...3.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `io.ktor:ktor-server-core` from 3.2.3 to 3.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/releases">io.ktor:ktor-server-core's
releases</a>.</em></p>
<blockquote>
<h2>3.3.0</h2>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/blob/main/CHANGELOG.md">io.ktor:ktor-server-core's
changelog</a>.</em></p>
<blockquote>
<h1>3.3.0</h1>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b9abe3113e"><code>b9abe31</code></a>
Add changelog for 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5081">#5081</a>)</li>
<li><a
href="40eb608b9b"><code>40eb608</code></a>
Release 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5076">#5076</a>)</li>
<li><a
href="1324c4ccd4"><code>1324c4c</code></a>
Update netty.tcnative to v2.0.73.Final</li>
<li><a
href="dbbbaee137"><code>dbbbaee</code></a>
Update dependency io.swagger.parser.v3:swagger-parser to v2.1.33</li>
<li><a
href="55e77cff55"><code>55e77cf</code></a>
KTOR-8044 Get flaky tests under control</li>
<li><a
href="fab7164d06"><code>fab7164</code></a>
KTOR-8753 Change OkHttp specific sse session to default sse session (<a
href="https://redirect.github.com/ktorio/ktor/issues/5072">#5072</a>)</li>
<li><a
href="6f0c34e799"><code>6f0c34e</code></a>
Merge pull request <a
href="https://redirect.github.com/ktorio/ktor/issues/5069">#5069</a>
from ktorio/zibet27/ktor-client-webrtc-android</li>
<li><a
href="cb0bca4171"><code>cb0bca4</code></a>
Merge branch 'main' into zibet27/ktor-client-webrtc-android</li>
<li><a
href="1c9ecadd95"><code>1c9ecad</code></a>
KTOR-8785 Fix for DI shutdown hook</li>
<li><a
href="e0d204c82f"><code>e0d204c</code></a>
KTOR-8820 Performance regression when using ContentEncoding and
HttpRequestRe...</li>
<li>Additional commits viewable in <a
href="https://github.com/ktorio/ktor/compare/3.2.3...3.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `io.ktor:ktor-client-mock` from 3.2.3 to 3.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/releases">io.ktor:ktor-client-mock's
releases</a>.</em></p>
<blockquote>
<h2>3.3.0</h2>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/blob/main/CHANGELOG.md">io.ktor:ktor-client-mock's
changelog</a>.</em></p>
<blockquote>
<h1>3.3.0</h1>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b9abe3113e"><code>b9abe31</code></a>
Add changelog for 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5081">#5081</a>)</li>
<li><a
href="40eb608b9b"><code>40eb608</code></a>
Release 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5076">#5076</a>)</li>
<li><a
href="1324c4ccd4"><code>1324c4c</code></a>
Update netty.tcnative to v2.0.73.Final</li>
<li><a
href="dbbbaee137"><code>dbbbaee</code></a>
Update dependency io.swagger.parser.v3:swagger-parser to v2.1.33</li>
<li><a
href="55e77cff55"><code>55e77cf</code></a>
KTOR-8044 Get flaky tests under control</li>
<li><a
href="fab7164d06"><code>fab7164</code></a>
KTOR-8753 Change OkHttp specific sse session to default sse session (<a
href="https://redirect.github.com/ktorio/ktor/issues/5072">#5072</a>)</li>
<li><a
href="6f0c34e799"><code>6f0c34e</code></a>
Merge pull request <a
href="https://redirect.github.com/ktorio/ktor/issues/5069">#5069</a>
from ktorio/zibet27/ktor-client-webrtc-android</li>
<li><a
href="cb0bca4171"><code>cb0bca4</code></a>
Merge branch 'main' into zibet27/ktor-client-webrtc-android</li>
<li><a
href="1c9ecadd95"><code>1c9ecad</code></a>
KTOR-8785 Fix for DI shutdown hook</li>
<li><a
href="e0d204c82f"><code>e0d204c</code></a>
KTOR-8820 Performance regression when using ContentEncoding and
HttpRequestRe...</li>
<li>Additional commits viewable in <a
href="https://github.com/ktorio/ktor/compare/3.2.3...3.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `io.ktor:ktor-server-test-host` from 3.2.3 to 3.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/releases">io.ktor:ktor-server-test-host's
releases</a>.</em></p>
<blockquote>
<h2>3.3.0</h2>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/blob/main/CHANGELOG.md">io.ktor:ktor-server-test-host's
changelog</a>.</em></p>
<blockquote>
<h1>3.3.0</h1>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
debugger since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8810">KTOR-8810</a>)</li>
<li>HttpRedirect: The client is redirected when no Location header in
response (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8697">KTOR-8697</a>)</li>
<li>SerializationException when Application.propertyOrNull() is called
with type Map&lt;String, Any?&gt; (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8781">KTOR-8781</a>)</li>
<li>&quot;Failed resolution of:
Ljava/lang/management/ManagementFactory&quot; on Android when
JvmGcMetrics are initialized (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8714">KTOR-8714</a>)</li>
<li>HttpCache: all header values but first in HttpResponse.varyKeys()
are ignored (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6402">KTOR-6402</a>)</li>
<li>HttpCache: plugin selects wrong cache entry when filtering Vary
headers with different case (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7621">KTOR-7621</a>)</li>
<li>CountedByteWriteChannel: autoFlush of the source channel doesn't
make the channel auto flushing (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8411">KTOR-8411</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b9abe3113e"><code>b9abe31</code></a>
Add changelog for 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5081">#5081</a>)</li>
<li><a
href="40eb608b9b"><code>40eb608</code></a>
Release 3.3.0 (<a
href="https://redirect.github.com/ktorio/ktor/issues/5076">#5076</a>)</li>
<li><a
href="1324c4ccd4"><code>1324c4c</code></a>
Update netty.tcnative to v2.0.73.Final</li>
<li><a
href="dbbbaee137"><code>dbbbaee</code></a>
Update dependency io.swagger.parser.v3:swagger-parser to v2.1.33</li>
<li><a
href="55e77cff55"><code>55e77cf</code></a>
KTOR-8044 Get flaky tests under control</li>
<li><a
href="fab7164d06"><code>fab7164</code></a>
KTOR-8753 Change OkHttp specific sse session to default sse session (<a
href="https://redirect.github.com/ktorio/ktor/issues/5072">#5072</a>)</li>
<li><a
href="6f0c34e799"><code>6f0c34e</code></a>
Merge pull request <a
href="https://redirect.github.com/ktorio/ktor/issues/5069">#5069</a>
from ktorio/zibet27/ktor-client-webrtc-android</li>
<li><a
href="cb0bca4171"><code>cb0bca4</code></a>
Merge branch 'main' into zibet27/ktor-client-webrtc-android</li>
<li><a
href="1c9ecadd95"><code>1c9ecad</code></a>
KTOR-8785 Fix for DI shutdown hook</li>
<li><a
href="e0d204c82f"><code>e0d204c</code></a>
KTOR-8820 Performance regression when using ContentEncoding and
HttpRequestRe...</li>
<li>Additional commits viewable in <a
href="https://github.com/ktorio/ktor/compare/3.2.3...3.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `io.ktor:ktor-client-cio` from 3.2.3 to 3.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ktorio/ktor/releases">io.ktor:ktor-client-cio's
releases</a>.</em></p>
<blockquote>
<h2>3.3.0</h2>
<blockquote>
<p>Published 11 September 2025</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Support for server side http2 without tls (h2c) (<a
href="https://youtrack.jetbrains.com/issue/KTOR-4750">KTOR-4750</a>)</li>
<li>OpenAPI generation build extension preview (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8721">KTOR-8721</a>)</li>
<li>Serve static resources with caching headers and ETag based on sha256
of content (<a
href="https://youtrack.jetbrains.com/issue/KTOR-6700">KTOR-6700</a>)</li>
<li>Jetty engine: Upgrade Jetty dependencies to the latest version 12
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-6734">KTOR-6734</a>)</li>
<li>Static content: Support a custom respond logic if the file is not
found (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8496">KTOR-8496</a>)</li>
<li>Upgrade OkHttp to version 5.0.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8652">KTOR-8652</a>)</li>
<li>WebRTC Client, Android + WASM (<a
href="https://youtrack.jetbrains.com/issue/KTOR-7958">KTOR-7958</a>)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>SSE: Cannot read response body from SSEClientException (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8165">KTOR-8165</a>)</li>
<li>SSE: &quot;SSEClientException: Content-Length mismatch&quot; on
saving response body in DefaultResponseValidation (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8753">KTOR-8753</a>)</li>
<li><code>var Route.staticRootFolder: File?</code> should be deprecated
(<a
href="https://youtrack.jetbrains.com/issue/KTOR-5836">KTOR-5836</a>)</li>
<li>Add <code>image/bmp</code> to the ContentType (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8735">KTOR-8735</a>)</li>
<li>Add some missing image content types (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8624">KTOR-8624</a>)</li>
<li>Upgrade to Kotlin 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8647">KTOR-8647</a>)</li>
<li>Bump Kotlin API level to 2.2 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8637">KTOR-8637</a>)</li>
<li>CIO: The engine ignores system proxy settings (<a
href="https://youtrack.jetbrains.com/issue/KTOR-5922">KTOR-5922</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Performance regression when using ContentEncoding and
HttpRequestRetry since 3.2.0 (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8820">KTOR-8820</a>)</li>
<li>Big number of simultaneous outbound web socket connections leads to
a coroutine deadlock (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8829">KTOR-8829</a>)</li>
<li>DI: JobCancellationException during cleanup (<a
href="https://youtrack.jetbrains.com/issue/KTOR-8785">KTOR-8785</a>)</li>
<li>Autoreloading: JobCancellationException when app is reloaded in the
d...

_Description has been truncated_

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-15 14:06:57 +02:00
.github Fix upload reports in GitHub actions (#264) 2025-09-14 07:28:48 +03:00
buildSrc Release client and server (#260) 2025-09-11 21:05:43 +02:00
docs Update package name across the project (#2) 2024-12-17 07:28:51 +01:00
gradle Bump ktor from 3.2.3 to 3.3.0 (#265) 2025-09-15 14:06:57 +02:00
kotlin-sdk modularize sdk (#208) 2025-08-04 11:53:38 +02:00
kotlin-sdk-client Remove dependency on CIO engine (#223) 2025-09-11 14:30:36 +03:00
kotlin-sdk-core Add kotlinx-coroutines-core-wasm dependency (#255) 2025-09-11 18:49:11 +02:00
kotlin-sdk-server Remove dependency on CIO engine (#223) 2025-09-11 14:30:36 +03:00
kotlin-sdk-test Refactor integration tests (#256) 2025-09-11 19:38:09 +03:00
samples Bump com.anthropic:anthropic-java from 0.8.0 to 2.6.0 (#246) 2025-09-12 13:20:40 +02:00
.editorconfig Add ktlint (#213) 2025-08-05 13:10:44 +00:00
.gitignore modularize sdk (#208) 2025-08-04 11:53:38 +02:00
build.gradle.kts Release 0.7.0 (#254) 2025-09-11 15:34:12 +02:00
CODE_OF_CONDUCT.md Update license 2024-12-16 21:20:35 +01:00
CONTRIBUTING.md Update package name across the project (#2) 2024-12-17 07:28:51 +01:00
gradle.properties Refactor workflow, run on main (#251) 2025-09-11 12:48:07 +03:00
gradlew Fix release (#155) 2025-07-18 14:08:05 +00:00
gradlew.bat Fix release (#155) 2025-07-18 14:08:05 +00:00
LICENSE Update license 2024-12-16 21:20:35 +01:00
README.md Remove dependency on CIO engine (#223) 2025-09-11 14:30:36 +03:00
settings.gradle.kts modularize sdk (#208) 2025-08-04 11:53:38 +02:00

MCP Kotlin SDK

Kotlin Multiplatform Platforms Maven Central License

Kotlin Multiplatform implementation of the Model Context Protocol (MCP), providing both client and server capabilities for integrating with LLM surfaces across various platforms.

Overview

The Model Context Protocol allows applications to provide context for LLMs in a standardized way, separating the concerns of providing context from the actual LLM interaction. This SDK implements the MCP specification for Kotlin, enabling you to build applications that can communicate using MCP on the JVM, WebAssembly and iOS.

  • Build MCP clients that can connect to any MCP server
  • Create MCP servers that expose resources, prompts and tools
  • Use standard transports like stdio, SSE, and WebSocket
  • Handle all MCP protocol messages and lifecycle events

Samples

  • kotlin-mcp-server: demonstrates a multiplatform (JVM, Wasm) MCP server setup with various features and transports.
  • weather-stdio-server: shows how to build a Kotlin MCP server providing weather forecast and alerts using STDIO transport.
  • kotlin-mcp-client: demonstrates building an interactive Kotlin MCP client that connects to an MCP server via STDIO and integrates with Anthropic’s API.

Installation

Add the new repository to your build file:

repositories {
    mavenCentral()
}

Add the dependency:

dependencies {
    // See the badge above for the latest version
    implementation("io.modelcontextprotocol:kotlin-sdk:$mcpVersion")
}

MCP SDK uses Ktor, but does not come with a specific engine dependency. You should add Ktor client and/or Ktor server dependency to your project yourself, e.g.:

dependencies {
    // for client:
    implementation("io.ktor:ktor-client-cio:$ktorVersion")
    // for server:
    implementation("io.ktor:ktor-server-netty:$ktorVersion")
    
}

Quick Start

Creating a Client

import io.modelcontextprotocol.kotlin.sdk.client.Client
import io.modelcontextprotocol.kotlin.sdk.client.StdioClientTransport
import io.modelcontextprotocol.kotlin.sdk.Implementation

val client = Client(
    clientInfo = Implementation(
        name = "example-client",
        version = "1.0.0"
    )
)

val transport = StdioClientTransport(
    inputStream = processInputStream,
    outputStream = processOutputStream
)

// Connect to server
client.connect(transport)

// List available resources
val resources = client.listResources()

// Read a specific resource
val resourceContent = client.readResource(
    ReadResourceRequest(uri = "file:///example.txt")
)

Creating a Server

import io.modelcontextprotocol.kotlin.sdk.server.Server
import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions
import io.modelcontextprotocol.kotlin.sdk.server.StdioServerTransport
import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities

val server = Server(
    serverInfo = Implementation(
        name = "example-server",
        version = "1.0.0"
    ),
    options = ServerOptions(
        capabilities = ServerCapabilities(
            resources = ServerCapabilities.Resources(
                subscribe = true,
                listChanged = true
            )
        )
    )
)

// Add a resource
server.addResource(
    uri = "file:///example.txt",
    name = "Example Resource",
    description = "An example text file",
    mimeType = "text/plain"
) { request ->
    ReadResourceResult(
        contents = listOf(
            TextResourceContents(
                text = "This is the content of the example resource.",
                uri = request.uri,
                mimeType = "text/plain"
            )
        )
    )
}

// Start server with stdio transport
val transport = StdioServerTransport()
server.connect(transport)

Using SSE Transport

Directly in Ktor's Application:

import io.ktor.server.application.*
import io.modelcontextprotocol.kotlin.sdk.server.mcp

fun Application.module() {
    mcp {
        Server(
            serverInfo = Implementation(
                name = "example-sse-server",
                version = "1.0.0"
            ),
            options = ServerOptions(
                capabilities = ServerCapabilities(
                    prompts = ServerCapabilities.Prompts(listChanged = null),
                    resources = ServerCapabilities.Resources(subscribe = null, listChanged = null)
                )
            )
        )
    }
}

Inside a custom Ktor's Route:

import io.ktor.server.application.*
import io.ktor.server.sse.SSE
import io.modelcontextprotocol.kotlin.sdk.server.mcp

fun Application.module() {
    install(SSE)

    routing {
        route("myRoute") {
            mcp {
                Server(
                    serverInfo = Implementation(
                        name = "example-sse-server",
                        version = "1.0.0"
                    ),
                    options = ServerOptions(
                        capabilities = ServerCapabilities(
                            prompts = ServerCapabilities.Prompts(listChanged = null),
                            resources = ServerCapabilities.Resources(subscribe = null, listChanged = null)
                        )
                    )
                )
            }
        }
    }
}

Contributing

Please see the contribution guide and the Code of conduct before contributing.

License

This project is licensed under the MIT License—see the LICENSE file for details.