Skip to content

Add Streamable HTTP transport to the MCP host (stdio parity, unauthenticated MVP) #161

Description

@mertsatilmaz

Carved out of #96 so the first slice of MCP transport work has a clean, reviewable home.

The MCP host currently supports stdio only (mcp_host.py / mcp_runtime.py, exposed through --mcp-host-target + --mcp-runtime-config since #145). This issue adds Streamable HTTP transport alongside it.

Scope

  • Config (mcp_runtime.py): accept transport: streamable_http on a server entry, with url and optional headers. Validate it the same way stdio entries are validated today.
  • Host (mcp_host.py): dispatch on server_config.transport to a _connect_streamable_http_server(...) alongside the existing _connect_stdio_server(...). Raise a clear AdapterError for unsupported transports and when the optional MCP SDK doesn't expose the client.
  • Behavior parity: stdio stays the default and its behavior is unchanged. HTTP runs must produce the same canonical trace shape (mcp_servers, mcp_tool_calls, mcp_events — mcp_connection_initialized → mcp_tools_discovered → mcp_tool_result → mcp_connection_closed).
  • Tests: focused transport-level coverage that doesn't require a live network service (fake/loopback in the spirit of tests/fixtures/mcp_servers/).
  • Docs: extend the "MCP host adapter" section of docs/adapters.md with a runtime-config example.
  • CHANGELOG: [Unreleased] entry (new user-visible config surface).

Out of scope (stays in #96)

OAuth / authenticated transports, SSE, MCP resources, prompts, sampling, default-deny roots.

Notes

An unauthenticated MVP is the right first step — auth lands in a follow-up so the transport plumbing can be reviewed on its own.

Assigned to @Flames4fun, who built the stdio host runtime (#107) and the CLI wiring (#145).

Activity

  1. added
    enhancementNew feature or request
    adapterTarget adapters and live execution integrations.
    httpHTTP target contract, HTTP adapter behavior, and HTTP examples.
    on Jul 27, 2026
  2. Flames4fun commented on Jul 27, 2026

    @Flames4fun
    Contributor

    Thanks for carving this out and for assigning it to me, @mertsatilmaz

    I’m on it and have started working through the current stdio implementation and the Streamable HTTP client surface in the MCP SDK.

    I’ll keep the PR strictly scoped to #161: runtime config support for streamable_http, transport dispatch in the host, stdio behavior parity, clear adapter errors, focused network-free tests, documentation, and the changelog entry.

    OAuth, SSE, resources, prompts, sampling, and the remaining lifecycle work will stay out of this PR as requested.

    I’ll also review the transport diff from #160 as reference material, while implementing and validating the change independently against the current codebase and supported MCP SDK range.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    adapterTarget adapters and live execution integrations.enhancementNew feature or requesthttpHTTP target contract, HTTP adapter behavior, and HTTP examples.mcp

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions