Track MCP LogoTrack MCP
Track MCP LogoTrack MCP

The world's largest repository of Model Context Protocol servers. Discover, explore, and submit MCP tools.

Product

  • Categories
  • Top MCP
  • New & Updated

Company

  • About

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2025 TrackMCP. All rights reserved.

Built with ❤️ by Krishna Goyal

    Kotlin Sdk

    The official Kotlin SDK for Model Context Protocol servers and clients. Maintained in collaboration with JetBrains Trusted by 1100+ developers.

    1,130 stars
    Kotlin
    Updated Nov 4, 2025
    kotlin-multiplatform
    mcp

    Documentation

    MCP Kotlin SDK

    Maven Central

    Build

    Kotlin

    Kotlin Multiplatform

    JVM

    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:

    kotlin
    repositories {
        mavenCentral()
    }

    Add the dependency:

    kotlin
    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.:

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

    Quick Start

    Creating a Client

    kotlin
    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

    kotlin
    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
                )
            )
        )
    ){ 
        "This server provides example resources and demonstrates MCP capabilities." 
    }
    
    // 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:

    kotlin
    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)
                    )
                ),
            ) { 
                "This SSE server provides prompts and resources via Server-Sent Events."
            }
        }
    }

    Inside a custom Ktor's Route:

    kotlin
    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)
                            )
                        ),
                    ) {
                        "Connect via SSE to interact with this MCP server."
                    }
                }
            }
        }
    }

    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.

    Similar MCP

    Based on tags & features

    • MC

      Mcpjungle

      Go·
      617
    • AN

      Anyquery

      Go·
      1.4k
    • MC

      Mcp Server Kubernetes

      TypeScript·
      1.1k
    • WE

      Web Eval Agent

      Python·
      1.2k

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k
    View All MCP Servers

    Similar MCP

    Based on tags & features

    • MC

      Mcpjungle

      Go·
      617
    • AN

      Anyquery

      Go·
      1.4k
    • MC

      Mcp Server Kubernetes

      TypeScript·
      1.1k
    • WE

      Web Eval Agent

      Python·
      1.2k

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k