Skip to content

Transport type naming inconsistency: streamable_http in example vs streamable-http in spec and other SDKs #1386

@jeonsoh

Description

@jeonsoh

Initial Checks

Description

In the MCP specification, the transport name is defined as “Streamable HTTP”.
In the Python SDK server code (e.g., fastmcp/server.py), the string identifier is streamable-http (with a hyphen), which matches many clients.
However, in the simple-auth-client example, the identifier is written as streamable_http (with an underscore). This discrepancy can confuse developers, and some clients (e.g., Continue) only accept the hyphenated form (streamable-http).

Problem
Following the example as-is leads developers to use streamable_http, which does not work with some clients.

Expected behavior
Please align SDK/examples with one clear approach and document it explicitly:

  • Option A (accept both): Allow both streamable-http and streamable_http as input (lenient parsing), but document streamable-http as the canonical form.
  • Option B (unify on one): Standardize on streamable-http as the only valid transport string in examples/docs, and raise an error/warning if streamable_http is used.

This would reduce developer confusion and ensure consistency with the spec and major client expectations.

Example Code

Python & MCP Python SDK

**Environment**  
- Python: 3.13 (project requires Python >= 3.13)  
- MCP Python SDK:  
  - fastmcp 2.10.1  
  - mcp 1.10.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    PR welcomePRs for this issue are welcome and will be reviewed by maintainers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions