Kuberwastaken/claurst · error · anyhow::Error
MCP server ' ': no supported streamable HTTP protocol…
Error message
MCP server '{}': no supported streamable HTTP protocol version found What it means
During streamable-HTTP connect the client tries each supported protocol version in turn and remembers the last failure. If the version list produced no error to report (conceptually, the attempts were exhausted without a recorded error), it throws this fallback error naming the server.
Solutions
- Check the per-attempt errors logged just before this message to find the real failure cause
- Ensure the MCP server supports at least one streamable-HTTP protocol version the client offers
- Verify STREAMABLE_HTTP_PROTOCOL_VERSIONS is non-empty and unpolluted in the installed build
- Fall back to server_type "sse" if the server only supports legacy transport
Defensive patterns
Strategy: fallback
Try / catch
match connect(streamable_cfg).await {
Err(e) if e.to_string().contains("no supported streamable HTTP protocol version") => {
connect(sse_cfg).await? // fall back to legacy SSE
}
r => r?,
} Prevention
- Confirm server/client protocol-version overlap before deploying
- Capture and log per-version attempt errors during connect
- Provide an SSE fallback config for older servers
When it happens
Trigger: MCP connect with server_type "streamable-http" where every protocol-version attempt failed and last_error was None — i.e. an empty/fully-filtered STREAMABLE_HTTP_PROTOCOL_VERSIONS list or a loop that never recorded an error.
Common situations: All protocol versions rejected (server incompatible) combined with code paths that swallow the per-attempt error; misconfigured feature flags emptying the version list; library build where the versions slice is empty.
Understand the failure class
Background: "is not a compatible type" / "cannot merge" errors: when a value's type doesn't match what the library requires — this error's family across 65 libraries.
Related errors
- MCP server ' ': invalid streamable HTTP protocol version
- Bridge session registration failed: authentication error
- MCP server ' ' is configured as ' ' but missing URL
- legacy SSE endpoint event did not include a POST endpoint
- MCP server ' ': legacy SSE stream returned HTTP
AI-assisted analysis of Kuberwastaken/claurst@b0637c97ec (2026-09-10).
Data as JSON: /api/errors/5de157162848f645.
Report an issue: GitHub.
Appendix: source
Thrown at src-rust/crates/mcp/src/lib.rs:642
Ok(backend) => return Ok(Self::from_backend(Arc::new(backend))),
Err(e) => {
let message = e.to_string();
if Self::is_unsupported_protocol_error(&message) {
debug!(
server = %config.name,
protocol_version = %protocol_version_label,
error = %message,
"Streamable HTTP protocol version unsupported; trying fallback"
);
last_error = Some(e);
continue;
}
return Err(e);
}
}
}
Err(last_error.unwrap_or_else(|| {
anyhow::anyhow!(
"MCP server '{}': no supported streamable HTTP protocol version found",
config.name
)
}))
}
other => Err(anyhow::anyhow!(
"MCP server '{}': unsupported transport type '{}'",
config.name,
other
)),
}
}
pub(crate) fn is_unsupported_protocol_error(message: &str) -> bool {
// rmcp, servers, and gateways do not emit a single stable
// protocol-negotiation error string, so match the known variants
// conservatively to keep downgrade fallback working.
let lower = message.to_ascii_lowercase();
View on GitHub (pinned to b0637c97ec)