# Migrate Ktor extension functions from `Routing` to `Route` (#237) - Replaced `Routing` with `Route` in MCP-related functions for better composability in nested contexts. - Updated tests to verify compatibility with nested routes and subpaths. - Deprecated legacy signatures and removed redundant overloads. ## How Has This Been Tested? Unit test ## Breaking Changes `Routing.mcp(...) `extension was replaced with `Route.mcp(...)` ## Types of changes - [X] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply. --> - [x] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [x] My code follows the repository's style guidelines - [ ] New and existing tests pass locally - [ ] I have added appropriate error handling - [ ] I have added or updated documentation as needed ## Additional context Based on #314 by @IainHull but that PR is too outdated.
This commit is contained in:
parent
b2878ed406
commit
bb79e200c4
1 changed files with 373 additions and 70 deletions
|
|
@ -8,10 +8,6 @@ import io.ktor.server.application.install
|
|||
import io.ktor.server.engine.EmbeddedServer
|
||||
import io.ktor.server.engine.embeddedServer
|
||||
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
|
||||
import io.ktor.server.routing.delete
|
||||
import io.ktor.server.routing.get
|
||||
import io.ktor.server.routing.post
|
||||
import io.ktor.server.routing.route
|
||||
import io.ktor.server.routing.routing
|
||||
import io.modelcontextprotocol.kotlin.sdk.client.Client
|
||||
import io.modelcontextprotocol.kotlin.sdk.client.SseClientTransport
|
||||
|
|
@ -22,6 +18,7 @@ import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions
|
|||
import io.modelcontextprotocol.kotlin.sdk.server.StdioServerTransport
|
||||
import io.modelcontextprotocol.kotlin.sdk.server.StreamableHttpServerTransport
|
||||
import io.modelcontextprotocol.kotlin.sdk.server.mcp
|
||||
import io.modelcontextprotocol.kotlin.sdk.server.mcpStreamableHttp
|
||||
import io.modelcontextprotocol.kotlin.sdk.types.Implementation
|
||||
import io.modelcontextprotocol.kotlin.sdk.types.McpJson
|
||||
import io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities
|
||||
|
|
@ -54,6 +51,7 @@ abstract class KotlinTestBase {
|
|||
|
||||
// Transport selection
|
||||
protected enum class TransportKind { SSE, STDIO, STREAMABLE_HTTP }
|
||||
|
||||
protected open val transportKind: TransportKind = TransportKind.STDIO
|
||||
|
||||
// STDIO-specific fields
|
||||
|
|
@ -168,19 +166,7 @@ abstract class KotlinTestBase {
|
|||
install(ContentNegotiation) {
|
||||
json(McpJson)
|
||||
}
|
||||
routing {
|
||||
route("/mcp") {
|
||||
post {
|
||||
transport.handlePostRequest(null, call)
|
||||
}
|
||||
get {
|
||||
transport.handleGetRequest(null, call)
|
||||
}
|
||||
delete {
|
||||
transport.handleDeleteRequest(call)
|
||||
}
|
||||
}
|
||||
}
|
||||
mcpStreamableHttp(path = "/mcp") { server }
|
||||
}.start(wait = false)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue