- Explore MCP Servers
- kotlin-sdk
Kotlin SDK
What is Kotlin SDK
The MCP Kotlin SDK is a Kotlin Multiplatform implementation of the Model Context Protocol (MCP), enabling standardized context integration for large language models (LLMs) in applications across multiple platforms.
Use cases
Developers can build MCP clients to connect with any MCP server and create MCP servers that expose various resources, prompts, and tools. It is particularly useful for integrating LLM functionalities into applications that need to maintain a clear separation of context management from LLM interactions.
How to use
To use the MCP SDK, developers add the library dependency to their Kotlin project and can quickly create either a client or server. Clients connect to servers using several transport methods, while servers can provide resources and handle various requests, making it straightforward to implement standardized communication.
Key features
The SDK supports building both clients and servers that can communicate using standard transports like stdio, SSE, and WebSocket. It also provides functionalities to handle all MCP protocol messages and lifecycle events efficiently, allowing for multi-platform compatibility on JVM, WebAssembly, and iOS.
Where to use
The MCP Kotlin SDK is suitable for any application needing to interact with LLMs, especially in environments where context needs to be managed separately. It is ideal for web, mobile, or server-side applications that leverage advanced language processing capabilities.
Overview
What is Kotlin SDK
The MCP Kotlin SDK is a Kotlin Multiplatform implementation of the Model Context Protocol (MCP), enabling standardized context integration for large language models (LLMs) in applications across multiple platforms.
Use cases
Developers can build MCP clients to connect with any MCP server and create MCP servers that expose various resources, prompts, and tools. It is particularly useful for integrating LLM functionalities into applications that need to maintain a clear separation of context management from LLM interactions.
How to use
To use the MCP SDK, developers add the library dependency to their Kotlin project and can quickly create either a client or server. Clients connect to servers using several transport methods, while servers can provide resources and handle various requests, making it straightforward to implement standardized communication.
Key features
The SDK supports building both clients and servers that can communicate using standard transports like stdio, SSE, and WebSocket. It also provides functionalities to handle all MCP protocol messages and lifecycle events efficiently, allowing for multi-platform compatibility on JVM, WebAssembly, and iOS.
Where to use
The MCP Kotlin SDK is suitable for any application needing to interact with LLMs, especially in environments where context needs to be managed separately. It is ideal for web, mobile, or server-side applications that leverage advanced language processing capabilities.
Content
MCP Kotlin SDK
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 {
// Use the badge above for the latest version
implementation("io.modelcontextprotocol:kotlin-sdk:$mcpVersion")
}
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.