Skip to content

client.list_tools never returns when attempting to list tools from Docker's MCP Gateway #475

@rfurlan

Description

@rfurlan

Describe the bug
client.list_tools() blocks and never returns when attempting to list tools from Docker's MCP Gateway

To Reproduce
Steps to reproduce the behavior:

  1. Set up Docker's MCP Gateway listening on port 8000
  2. Execute: "cargo run --example clients_streamable_http"

Expected behavior
client.list_tools() should return a list of available tools, instead the clients_streamable_http example hangs.

Logs

MCP Gateway logs shows client connection was sucessfull:

- Reading configuration...
  - Reading catalog from [https://desktop.docker.com/mcp/catalog/v2/catalog.yaml]
- Configuration read in 144.675575ms
- Using images:
  - mcp/playwright@sha256:6ae70022034e246c23534ef83e79274398997e5605100c6710809eaff7454743
> Images pulled in 10.556628ms
- Those servers are enabled: playwright
- Listing MCP tools...
  - Running mcp/playwright with [run --rm -i --init --security-opt no-new-privileges --cpus 1 --memory 4gb --pull never -l docker-mcp=true -l docker-mcp-tool-type=mcp -l docker-mcp-name=playwright -l docker-mcp-transport=stdio --network astra_default]
  > playwright: (21 tools)
> 21 tools listed in 1.410573275s
> Initialized in 1.58905636s
> Start streaming server on port 8000
- Client initialized test sse [email protected] 

Output from clients_streamable_http example:

C:\Development\rust-sdk [main ≡ +0 ~1 -0 !]> cargo run --example clients_streamable_http
warning: C:\Development\rust-sdk\examples\simple-chat-client\Cargo.toml: unused manifest key: dependencies.rmcp.no-default-features
    Blocking waiting for file lock on build directory
   Compiling mcp-client-examples v0.1.5 (C:\Development\rust-sdk\examples\clients)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.35s
     Running `target\debug\examples\clients_streamable_http.exe`
2025-10-06T19:21:30.755906Z  INFO serve_inner: rmcp::service: Service initialized as client peer_info=Some(InitializeResult { protocol_version: ProtocolVersion("2025-03-26"), capabilities: ServerCapabilities { experimental: None, logging: Some({}), completions: None, prompts: Some(PromptsCapability { list_changed: Some(true) }), resources: Some(ResourcesCapability { subscribe: Some(true), list_changed: Some(true) }), tools: Some(ToolsCapability { list_changed: Some(true) }) }, server_info: Implementation { name: "Docker AI MCP Gateway", title: None, version: "2.0.1", icons: None, website_url: None }, instructions: None })
2025-10-06T19:21:30.756303Z  INFO clients_streamable_http: Connected to server: Some(
    InitializeResult {
        protocol_version: ProtocolVersion(
            "2025-03-26",
        ),
        capabilities: ServerCapabilities {
            experimental: None,
            logging: Some(
                {},
            ),
            completions: None,
            prompts: Some(
                PromptsCapability {
                    list_changed: Some(
                        true,
                    ),
                },
            ),
            resources: Some(
                ResourcesCapability {
                    subscribe: Some(
                        true,
                    ),
                    list_changed: Some(
                        true,
                    ),
                },
            ),
            tools: Some(
                ToolsCapability {
                    list_changed: Some(
                        true,
                    ),
                },
            ),
        },
        server_info: Implementation {
            name: "Docker AI MCP Gateway",
            title: None,
            version: "2.0.1",
            icons: None,
            website_url: None,
        },
        instructions: None,
    },
)

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-bugBug fixes and error corrections

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions