Skip to content

MCP SSE Client generates incorrect URL's after connection (/mcp/mcp/) #129

Open
@GavinRay97

Description

@GavinRay97
@Test
fun `can connect to MCP SSE Server`() {
    val httpClient =
        HttpClient(CIO) {
            install(SSE)
            install(Logging)
        }

    runBlocking {
        val mcp = httpClient.mcpSse("http://localhost:8081/mcp")
        val response = mcp.ping()
        assertEquals(EmptyRequestResult(), response)
    }
}

The issue is that 2nd request goes to http://localhost:8081/mcp/mcp/messages

Full KTOR HTTP log:

McpSseClientTest > can connect to MCP SSE Server() STANDARD_OUT
    2025-06-29 07:29:32,258 INFO  [io.kto.cli.HttpClient] (DefaultDispatcher-worker-1 @ktor-cio-context#4) REQUEST: http://localhost:8081/mcp/sse
    METHOD: HttpMethod(value=GET)
    COMMON HEADERS
    -> Accept: */*
    -> Accept-Charset: UTF-8
    CONTENT HEADERS
    -> Content-Length: 0
    -> Accept: text/event-stream
    -> Cache-Control: no-store
    2025-06-29 07:29:32,344 INFO  [io.kto.cli.HttpClient] (DefaultDispatcher-worker-5 @ktor-cio-context#4) RESPONSE: 200 OK
    METHOD: HttpMethod(value=GET)
    FROM: http://localhost:8081/mcp/sse
    COMMON HEADERS
    -> content-type: text/event-stream
    -> transfer-encoding: chunked
    2025-06-29 07:29:32,374 INFO  [io.kto.cli.HttpClient] (Test worker @coroutine#3) REQUEST: http://localhost:8081/mcp/mcp/messages/NTI0NmFmZTEtM2I4ZS00YmYwLTk4OTAtYzM0NWQ2ZjQxYmE0
    METHOD: HttpMethod(value=POST)
    COMMON HEADERS
    -> Accept: */*
    -> Accept-Charset: UTF-8
    CONTENT HEADERS
    -> Content-Length: 221
    -> Content-Type: application/json
    2025-06-29 07:29:32,384 INFO  [io.kto.cli.HttpClient] (Test worker @coroutine#3) RESPONSE: 404 Not Found
    METHOD: HttpMethod(value=POST)
    FROM: http://localhost:8081/mcp/mcp/messages/NTI0NmFmZTEtM2I4ZS00YmYwLTk4OTAtYzM0NWQ2ZjQxYmE0
    COMMON HEADERS
    -> content-length: 53
    -> content-type: text/html; charset=utf-8

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions