|
1 | 1 | import dev.johnoreilly.climatetrace.data.ClimateTraceRepository
|
2 | 2 | import dev.johnoreilly.climatetrace.di.initKoin
|
3 |
| -import io.ktor.server.application.* |
4 | 3 | import io.ktor.server.cio.*
|
5 | 4 | import io.ktor.server.engine.*
|
6 |
| -import io.ktor.server.routing.* |
7 |
| -import io.ktor.server.sse.* |
8 |
| -import io.ktor.util.collections.* |
9 | 5 | import io.ktor.utils.io.streams.*
|
10 | 6 | import io.modelcontextprotocol.kotlin.sdk.*
|
11 |
| -import io.modelcontextprotocol.kotlin.sdk.server.Server |
12 |
| -import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions |
13 |
| -import io.modelcontextprotocol.kotlin.sdk.server.SseServerTransport |
14 |
| -import io.modelcontextprotocol.kotlin.sdk.server.StdioServerTransport |
| 7 | +import io.modelcontextprotocol.kotlin.sdk.server.* |
15 | 8 | import kotlinx.coroutines.Job
|
16 | 9 | import kotlinx.coroutines.runBlocking
|
17 | 10 | import kotlinx.io.asSink
|
@@ -118,33 +111,10 @@ fun `run mcp server using stdio`() {
|
118 | 111 | * @param port The port number on which the SSE server should be started.
|
119 | 112 | */
|
120 | 113 | fun `run sse mcp server`(port: Int): Unit = runBlocking {
|
121 |
| - val servers = ConcurrentMap<String, Server>() |
122 |
| - |
123 | 114 | val server = configureServer()
|
124 | 115 | embeddedServer(CIO, host = "0.0.0.0", port = port) {
|
125 |
| - install(SSE) |
126 |
| - routing { |
127 |
| - sse("/sse") { |
128 |
| - val transport = SseServerTransport("/message", this) |
129 |
| - |
130 |
| - servers[transport.sessionId] = server |
131 |
| - |
132 |
| - server.onClose { |
133 |
| - servers.remove(transport.sessionId) |
134 |
| - } |
135 |
| - |
136 |
| - server.connect(transport) |
137 |
| - } |
138 |
| - post("/message") { |
139 |
| - val sessionId: String = call.request.queryParameters["sessionId"]!! |
140 |
| - val transport = servers[sessionId]?.transport as? SseServerTransport |
141 |
| - if (transport == null) { |
142 |
| - call.respond("Session not found", null) |
143 |
| - return@post |
144 |
| - } |
145 |
| - |
146 |
| - transport.handlePostMessage(call) |
147 |
| - } |
| 116 | + mcp { |
| 117 | + server |
148 | 118 | }
|
149 | 119 | }.start(wait = true)
|
150 | 120 | }
|
0 commit comments