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
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 isstreamable-http(with a hyphen), which matches many clients.However, in the
simple-auth-clientexample, the identifier is written asstreamable_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:
streamable-httpandstreamable_httpas input (lenient parsing), but documentstreamable-httpas the canonical form.streamable-httpas the only valid transport string in examples/docs, and raise an error/warning ifstreamable_httpis used.This would reduce developer confusion and ensure consistency with the spec and major client expectations.
Example Code
Python & MCP Python SDK