diff --git a/README.md b/README.md index 09bd1b47..4fd0609e 100644 --- a/README.md +++ b/README.md @@ -40,10 +40,23 @@ Add the dependency: ```kotlin dependencies { - // Use the badge above for the latest version + // See the badge above for the latest version implementation("io.modelcontextprotocol:kotlin-sdk:$mcpVersion") } ``` +MCP SDK uses [Ktor](https://ktor.io/), but does not come with a specific engine dependency. +You should add [Ktor client](https://ktor.io/docs/client-dependencies.html#engine-dependency) +and/or [Ktor server](https://ktor.io/docs/client-dependencies.html#engine-dependency) dependency +to your project yourself, e.g.: +```kotlin +dependencies { + // for client: + implementation("io.ktor:ktor-client-cio:$ktorVersion") + // for server: + implementation("io.ktor:ktor-server-netty:$ktorVersion") + +} +``` ## Quick Start diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5b4a03c9..418e8f89 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -39,10 +39,10 @@ kotlinx-collections-immutable = { group = "org.jetbrains.kotlinx", name = "kotli kotlin-logging = { group = "io.github.oshai", name = "kotlin-logging", version.ref = "logging" } # Ktor -ktor-client-cio = { group = "io.ktor", name = "ktor-client-cio", version.ref = "ktor" } +ktor-client-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" } ktor-server-sse = { group = "io.ktor", name = "ktor-server-sse", version.ref = "ktor" } ktor-server-websockets = { group = "io.ktor", name = "ktor-server-websockets", version.ref = "ktor" } -ktor-server-cio = { group = "io.ktor", name = "ktor-server-cio", version.ref = "ktor" } +ktor-server-core = { group = "io.ktor", name = "ktor-server-core", version.ref = "ktor" } # Testing kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" } @@ -52,6 +52,8 @@ slf4j-simple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4 kotest-assertions-json = { group = "io.kotest", name = "kotest-assertions-json", version.ref = "kotest" } # Samples +ktor-client-cio = { group = "io.ktor", name = "ktor-client-cio", version.ref = "ktor" } +ktor-server-cio = { group = "io.ktor", name = "ktor-server-cio", version.ref = "ktor" } mcp-kotlin = { group = "io.modelcontextprotocol", name = "kotlin-sdk", version.ref = "mcp-kotlin" } anthropic-java = { group = "com.anthropic", name = "anthropic-java", version.ref = "anthropic" } ktor-client-content-negotiation = { group = "io.ktor", name = "ktor-client-content-negotiation", version.ref = "ktor" } diff --git a/kotlin-sdk-client/build.gradle.kts b/kotlin-sdk-client/build.gradle.kts index aaf6050c..5da48e6b 100644 --- a/kotlin-sdk-client/build.gradle.kts +++ b/kotlin-sdk-client/build.gradle.kts @@ -33,7 +33,7 @@ kotlin { commonMain { dependencies { api(project(":kotlin-sdk-core")) - api(libs.ktor.client.cio) + api(libs.ktor.client.core) implementation(libs.kotlin.logging) } } @@ -43,6 +43,7 @@ kotlin { implementation(kotlin("test")) implementation(libs.ktor.client.mock) implementation(libs.kotlinx.coroutines.test) + runtimeOnly(libs.slf4j.simple) } } } diff --git a/kotlin-sdk-core/build.gradle.kts b/kotlin-sdk-core/build.gradle.kts index 033bf55e..bd9a0205 100644 --- a/kotlin-sdk-core/build.gradle.kts +++ b/kotlin-sdk-core/build.gradle.kts @@ -47,5 +47,11 @@ kotlin { implementation(libs.kotest.assertions.json) } } + + jvmTest { + dependencies { + runtimeOnly(libs.slf4j.simple) + } + } } } diff --git a/kotlin-sdk-server/build.gradle.kts b/kotlin-sdk-server/build.gradle.kts index 0148b784..80adddcc 100644 --- a/kotlin-sdk-server/build.gradle.kts +++ b/kotlin-sdk-server/build.gradle.kts @@ -11,7 +11,7 @@ kotlin { commonMain { dependencies { api(project(":kotlin-sdk-core")) - api(libs.ktor.server.cio) + api(libs.ktor.server.core) api(libs.ktor.server.sse) implementation(libs.kotlin.logging) } @@ -21,7 +21,12 @@ kotlin { dependencies { implementation(kotlin("test")) implementation(libs.kotlinx.coroutines.test) - implementation(libs.slf4j.simple) + } + } + + jvmTest { + dependencies { + runtimeOnly(libs.slf4j.simple) } } } diff --git a/kotlin-sdk-test/build.gradle.kts b/kotlin-sdk-test/build.gradle.kts index cbe22a7f..36496c37 100644 --- a/kotlin-sdk-test/build.gradle.kts +++ b/kotlin-sdk-test/build.gradle.kts @@ -13,17 +13,18 @@ kotlin { dependencies { implementation(project(":kotlin-sdk")) implementation(kotlin("test")) - implementation(libs.ktor.server.test.host) - implementation(libs.kotlinx.coroutines.test) implementation(libs.kotest.assertions.json) + implementation(libs.kotlin.logging) + implementation(libs.kotlinx.coroutines.test) + implementation(libs.ktor.client.cio) + implementation(libs.ktor.server.cio) + implementation(libs.ktor.server.test.host) } } jvmTest { dependencies { implementation(kotlin("test-junit5")) - implementation(libs.kotlin.logging) - implementation(libs.ktor.server.cio) - implementation(libs.ktor.client.cio) + runtimeOnly(libs.slf4j.simple) } } } diff --git a/samples/kotlin-mcp-client/build.gradle.kts b/samples/kotlin-mcp-client/build.gradle.kts index 58254002..b34e8ed2 100644 --- a/samples/kotlin-mcp-client/build.gradle.kts +++ b/samples/kotlin-mcp-client/build.gradle.kts @@ -13,8 +13,9 @@ version = "0.1.0" dependencies { implementation(libs.mcp.kotlin) - implementation(libs.slf4j.simple) + implementation(libs.ktor.client.cio) implementation(libs.anthropic.java) + implementation(libs.slf4j.simple) } tasks.test { diff --git a/samples/kotlin-mcp-server/build.gradle.kts b/samples/kotlin-mcp-server/build.gradle.kts index 5ecbc43c..6a649687 100644 --- a/samples/kotlin-mcp-server/build.gradle.kts +++ b/samples/kotlin-mcp-server/build.gradle.kts @@ -44,6 +44,7 @@ kotlin { sourceSets { commonMain.dependencies { implementation(libs.mcp.kotlin) + implementation(libs.ktor.server.cio) } jvmMain.dependencies { implementation(libs.slf4j.simple) diff --git a/samples/weather-stdio-server/build.gradle.kts b/samples/weather-stdio-server/build.gradle.kts index 1b019d27..f82306cc 100644 --- a/samples/weather-stdio-server/build.gradle.kts +++ b/samples/weather-stdio-server/build.gradle.kts @@ -13,15 +13,17 @@ repositories { mavenCentral() } - group = "org.example" version = "0.1.0" dependencies { - implementation(libs.mcp.kotlin) - implementation(libs.slf4j.simple) implementation(libs.ktor.client.content.negotiation) implementation(libs.ktor.serialization.kotlinx.json) + implementation(libs.mcp.kotlin) + implementation(libs.ktor.server.cio) + implementation(libs.ktor.client.cio) + implementation(libs.slf4j.simple) + testImplementation(kotlin("test")) testImplementation(libs.kotlinx.coroutines.test) }