@@ -14,12 +14,11 @@ import io.modelcontextprotocol.kotlin.sdk.PromptMessage
1414import io.modelcontextprotocol.kotlin.sdk.Role
1515import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities
1616import io.modelcontextprotocol.kotlin.sdk.Tool
17- import io.modelcontextprotocol.kotlin.sdk.server.MCP
18- import io.modelcontextprotocol.kotlin.sdk.server.SSEServerTransport
1917import io.modelcontextprotocol.kotlin.sdk.server.Server
2018import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions
19+ import io.modelcontextprotocol.kotlin.sdk.server.SseServerTransport
2120import io.modelcontextprotocol.kotlin.sdk.server.StdioServerTransport
22- import kotlinx.coroutines.CompletableDeferred
21+ import io.modelcontextprotocol.kotlin.sdk.server.mcp
2322import kotlinx.coroutines.Job
2423import kotlinx.coroutines.runBlocking
2524import kotlinx.io.asSink
@@ -48,8 +47,6 @@ fun main(args: Array<String>) {
4847}
4948
5049fun configureServer (): Server {
51- val def = CompletableDeferred <Unit >()
52-
5350 val server = Server (
5451 Implementation (
5552 name = " mcp-kotlin test server" ,
@@ -61,10 +58,7 @@ fun configureServer(): Server {
6158 resources = ServerCapabilities .Resources (subscribe = true , listChanged = true ),
6259 tools = ServerCapabilities .Tools (listChanged = true ),
6360 )
64- ),
65- onCloseCallback = {
66- def.complete(Unit )
67- }
61+ )
6862 )
6963
7064 server.addPrompt(
@@ -129,7 +123,7 @@ fun runMcpServerUsingStdio() {
129123 runBlocking {
130124 server.connect(transport)
131125 val done = Job ()
132- server.onCloseCallback = {
126+ server.onClose {
133127 done.complete()
134128 }
135129 done.join()
@@ -146,15 +140,15 @@ fun runSseMcpServerWithPlainConfiguration(port: Int): Unit = runBlocking {
146140 install(SSE )
147141 routing {
148142 sse(" /sse" ) {
149- val transport = SSEServerTransport (" /message" , this )
143+ val transport = SseServerTransport (" /message" , this )
150144 val server = configureServer()
151145
152146 // For SSE, you can also add prompts/tools/resources if needed:
153147 // server.addTool(...), server.addPrompt(...), server.addResource(...)
154148
155149 servers[transport.sessionId] = server
156150
157- server.onCloseCallback = {
151+ server.onClose {
158152 println (" Server closed" )
159153 servers.remove(transport.sessionId)
160154 }
@@ -164,7 +158,7 @@ fun runSseMcpServerWithPlainConfiguration(port: Int): Unit = runBlocking {
164158 post(" /message" ) {
165159 println (" Received Message" )
166160 val sessionId: String = call.request.queryParameters[" sessionId" ]!!
167- val transport = servers[sessionId]?.transport as ? SSEServerTransport
161+ val transport = servers[sessionId]?.transport as ? SseServerTransport
168162 if (transport == null ) {
169163 call.respond(HttpStatusCode .NotFound , " Session not found" )
170164 return @post
@@ -189,8 +183,8 @@ fun runSseMcpServerUsingKtorPlugin(port: Int): Unit = runBlocking {
189183 println (" Use inspector to connect to the http://localhost:$port /sse" )
190184
191185 embeddedServer(CIO , host = " 0.0.0.0" , port = port) {
192- MCP {
193- return @MCP configureServer()
186+ mcp {
187+ return @mcp configureServer()
194188 }
195189 }.start(wait = true )
196190}
0 commit comments