#196 Update build configuration and workflows for enhanced local
publishing and sample builds
- Add `mavenLocal()` to repository configuration in sample projects.
- Update dependencies to distinguish between `mcp.kotlin.client` and
`mcp.kotlin.server`.
- Include `JAVA_OPTS` for optimized memory usage in GitHub workflow.
- Enhance build workflow to include local publishing and build steps for
sample projects.
- Add package-lock.json for Kotlin JS/WASM Store
- Switch to SNAPSHOT versions by default
## Motivation and Context
#196 Samples MUST be validated as part of the build
## How Has This Been Tested?
```sh
./gradlew :kotlin-sdk-core:publishToMavenLocal
./gradlew :kotlin-sdk-client:publishToMavenLocal
./gradlew :kotlin-sdk-server:publishToMavenLocal
( cd ./samples/kotlin-mcp-client && ./../../gradlew clean build )
( cd ./samples/kotlin-mcp-server && ./../../gradlew clean build )
( cd ./samples/weather-stdio-server && ./../../gradlew clean build )
```
## Breaking Changes
<!-- Will users need to update their code or configurations? -->
## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [ ] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
Bumps
[com.anthropic:anthropic-java](https://github.com/anthropics/anthropic-sdk-java)
from 0.8.0 to 2.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-java/releases">com.anthropic:anthropic-java's
releases</a>.</em></p>
<blockquote>
<h2>v2.6.0</h2>
<h2>2.6.0 (2025-09-02)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.5.1...v2.6.0">v2.5.1...v2.6.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>client:</strong> adds support for code-execution-2025-08-26
tool (<a
href="da4c57b12d">da4c57b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>client:</strong> ensure correct binary content type (<a
href="197fdd5433">197fdd5</a>)</li>
<li>fix casing issue (<a
href="c2c50097e4">c2c5009</a>)</li>
<li>update singularization rules (<a
href="afec494c85">afec494</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li><strong>internal:</strong> make formatting faster (<a
href="7c36322f9f">7c36322</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>api:</strong> remove unsupported endpoints (<a
href="d9b7be334b">d9b7be3</a>)</li>
<li><strong>ci:</strong> add build job (<a
href="061df8e702">061df8e</a>)</li>
<li><strong>ci:</strong> reduce log noise (<a
href="b91d7779f1">b91d777</a>)</li>
<li><strong>client:</strong> refactor closing / shutdown (<a
href="f0c796d723">f0c796d</a>)</li>
<li><strong>client:</strong> rename parameter (<a
href="197fdd5433">197fdd5</a>)</li>
<li><strong>internal:</strong> dynamically determine included projects
(<a
href="93db169c6c">93db169</a>)</li>
<li><strong>internal:</strong> run formatter (<a
href="06cd69ff9d">06cd69f</a>)</li>
<li><strong>internal:</strong> support passing arguments to test script
(<a
href="8528c63f15">8528c63</a>)</li>
<li><strong>internal:</strong> support running formatters directly (<a
href="e0de72e934">e0de72e</a>)</li>
<li>remove memory upper bound from publishing step (<a
href="cb2ac3b70f">cb2ac3b</a>)</li>
<li><strong>tests:</strong> setup cache creation in MessageAccumulator
test (<a
href="d5de4438df">d5de443</a>)</li>
</ul>
<h2>v2.5.1</h2>
<h2>2.5.1 (2025-08-13)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.5.0...v2.5.1">v2.5.0...v2.5.1</a></p>
<h3>Chores</h3>
<ul>
<li>deprecate older claude-3-5 sonnet models (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-java/issues/591">#591</a>)
(<a
href="c7c4cc1a08">c7c4cc1</a>)</li>
<li><strong>internal:</strong> format identity methods (<a
href="483576abc4">483576a</a>)</li>
</ul>
<h2>v2.5.0</h2>
<h2>2.5.0 (2025-08-12)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.4.0...v2.5.0">v2.4.0...v2.5.0</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/anthropics/anthropic-sdk-java/blob/main/CHANGELOG.md">com.anthropic:anthropic-java's
changelog</a>.</em></p>
<blockquote>
<h2>2.6.0 (2025-09-02)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.5.1...v2.6.0">v2.5.1...v2.6.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>client:</strong> adds support for code-execution-2025-08-26
tool (<a
href="da4c57b12d">da4c57b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>client:</strong> ensure correct binary content type (<a
href="197fdd5433">197fdd5</a>)</li>
<li>fix casing issue (<a
href="c2c50097e4">c2c5009</a>)</li>
<li>update singularization rules (<a
href="afec494c85">afec494</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li><strong>internal:</strong> make formatting faster (<a
href="7c36322f9f">7c36322</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>api:</strong> remove unsupported endpoints (<a
href="d9b7be334b">d9b7be3</a>)</li>
<li><strong>ci:</strong> add build job (<a
href="061df8e702">061df8e</a>)</li>
<li><strong>ci:</strong> reduce log noise (<a
href="b91d7779f1">b91d777</a>)</li>
<li><strong>client:</strong> refactor closing / shutdown (<a
href="f0c796d723">f0c796d</a>)</li>
<li><strong>client:</strong> rename parameter (<a
href="197fdd5433">197fdd5</a>)</li>
<li><strong>internal:</strong> dynamically determine included projects
(<a
href="93db169c6c">93db169</a>)</li>
<li><strong>internal:</strong> run formatter (<a
href="06cd69ff9d">06cd69f</a>)</li>
<li><strong>internal:</strong> support passing arguments to test script
(<a
href="8528c63f15">8528c63</a>)</li>
<li><strong>internal:</strong> support running formatters directly (<a
href="e0de72e934">e0de72e</a>)</li>
<li>remove memory upper bound from publishing step (<a
href="cb2ac3b70f">cb2ac3b</a>)</li>
<li><strong>tests:</strong> setup cache creation in MessageAccumulator
test (<a
href="d5de4438df">d5de443</a>)</li>
</ul>
<h2>2.5.1 (2025-08-13)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.5.0...v2.5.1">v2.5.0...v2.5.1</a></p>
<h3>Chores</h3>
<ul>
<li>deprecate older claude-3-5 sonnet models (<a
href="https://redirect.github.com/anthropics/anthropic-sdk-java/issues/591">#591</a>)
(<a
href="c7c4cc1a08">c7c4cc1</a>)</li>
<li><strong>internal:</strong> format identity methods (<a
href="483576abc4">483576a</a>)</li>
</ul>
<h2>2.5.0 (2025-08-12)</h2>
<p>Full Changelog: <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v2.4.0...v2.5.0">v2.4.0...v2.5.0</a></p>
<h3>Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="42fce65f72"><code>42fce65</code></a>
release: 2.6.0</li>
<li><a
href="2b10838cc9"><code>2b10838</code></a>
feat(client): adds support for code-execution-2025-08-26 tool</li>
<li><a
href="ab1254a8ab"><code>ab1254a</code></a>
chore(internal): run formatter</li>
<li><a
href="5611d37f31"><code>5611d37</code></a>
chore(tests): setup cache creation in MessageAccumulator test</li>
<li><a
href="95918dc6c0"><code>95918dc</code></a>
codegen metadata</li>
<li><a
href="d4fffce28f"><code>d4fffce</code></a>
codegen metadata</li>
<li><a
href="f02db72ed9"><code>f02db72</code></a>
codegen metadata</li>
<li><a
href="2e258deed3"><code>2e258de</code></a>
codegen metadata</li>
<li><a
href="31c46ff041"><code>31c46ff</code></a>
fix: fix casing issue</li>
<li><a
href="6fdc91169f"><code>6fdc911</code></a>
fix: update singularization rules</li>
<li>Additional commits viewable in <a
href="https://github.com/anthropics/anthropic-sdk-java/compare/v0.8.0...v2.6.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Konstantin Pavlov <1517853+kpavlov@users.noreply.github.com>
## Motivation and Context
Flaky integration tests
## How Has This Been Tested?
`./gradlew check`
## Changes
- Use random port for Ktor in tests
- Remove unused `TestUtils` utility class.
- Replace `runTest` with `runBlocking` in test cases.
- Adjust imports and formatting for consistency.
- Add `Awaitility` dependency for dynamic server setup.
- Update `Duration` usage from milliseconds to seconds.
- Minor configuration and code formatting updates.
## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [x] Test update
## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [ ] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [ ] My code follows the repository's style guidelines
- [ ] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
<!-- Provide a brief summary of your changes -->
Replace the CIO dependency with only server/client core dependency.
## Motivation and Context
<!-- Why is this change needed? What problem does it solve? -->
In order to minimize the size of package. There are probably other
existing engines like Netty/Tomcat(server) or Java/OkHttp/Apache(client)
in the classpath. So we can reuse existing infrastructure.
## How Has This Been Tested?
<!-- Have you tested this in a real application? Which scenarios were
tested? -->
I have run:
- kotlin-sdk-client: jvmTest, jsTest
- kotlin-sdk-test: jvmTest, jsTest
- kotlin-sdk-server: allTests
- All `build` of samples
I have an issue about `samples/kotlin-mcp-server`.
`io.modelcontextprotocol` is not found in `commonMain`.
## Breaking Changes
<!-- Will users need to update their code or configurations? -->
Yes. They need to `implementation` CIO engine manually if they use it in
their app.
## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [x] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [ ] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [ ] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
closes https://github.com/modelcontextprotocol/kotlin-sdk/issues/111
---------
Co-authored-by: Konstantin Pavlov <1517853+kpavlov@users.noreply.github.com>
* Modularize SDK: migrated client and server implementations to separate modules. Removed old configuration files and reorganized the source code structure
* add support native targets and update js/wasm configurations
* Refactor sample projects: add samples as composite builds, replace hardcoded dependencies with version catalog, remove obsolete gradle wrapper files
* Update .gitignore: exclude SWE agent directories (.claude/ and .junie/)
* Refine CodeQL workflow: update Kotlin build steps to target individual modules separately instead of building all at once
* add wasm and ios targets
* add yarn.lock file to gitignore
* clean up code
* fix typo in method name
* add wasm server example
* update jrelease publishing for klibs
* update gradle-publish workflow to use macos runner
* update README to reflect multiplatform support and clarify server setup for JVM and WASM
* remove the old main file from the kotlin-mcp-server example
* update api dump
* Refactor `build.gradle.kts`
* clean up imports and remove unnecessary charset specification in tests
* add JS target configuration and update API dump
* Change required dependencies from implementation to api
* Add kotlin mcp server sample
Fixes#6
* Add explicit nop logger to clean CLI
* Update readme with reference