Kuberwastaken/claurst · error
MCP server ' ': failed to open legacy SSE stream
Error message
MCP server '{}': failed to open legacy SSE stream '{}': {} What it means
The legacy SSE transport could not establish its event stream: the initial GET to the server's SSE URL (with Accept: text/event-stream and optional bearer auth) failed at the connection/request level. This is the first step of legacy-SSE endpoint discovery; no POST endpoint can be learned without the stream.
Solutions
- Verify the SSE URL is reachable and serves text/event-stream
- Check auth token validity if the server requires a bearer token
- Prefer the streamable-http transport if the server supports it
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src-rust/crates/mcp/src/rmcp_backend.rs:267 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Kuberwastaken/claurst@b0637c97ec (2026-09-10).
Data as JSON: /api/errors/21551796271d78a5.
Report an issue: GitHub.
Appendix: source
Thrown at src-rust/crates/mcp/src/rmcp_backend.rs:267
Ok(transport)
}
async fn start_sse_listener(&self) -> anyhow::Result<()> {
let (endpoint_tx, endpoint_rx) = oneshot::channel::<anyhow::Result<String>>();
let endpoint_tx = Arc::new(StdMutex::new(Some(endpoint_tx)));
let mut request = self
.client
.get(&self.sse_url)
.header(reqwest::header::ACCEPT, "text/event-stream");
if let Some(token) = &self.auth_token {
request = request.header(
reqwest::header::AUTHORIZATION,
transport::bearer_header_value(token)?,
);
}
let response = request.send().await.map_err(|e| {
anyhow::anyhow!(
"MCP server '{}': failed to open legacy SSE stream '{}': {}",
self.server_name,
self.sse_url,
e
)
})?;
if !response.status().is_success() {
let status = response.status();
let body = response.text().await.unwrap_or_default();
anyhow::bail!(
"MCP server '{}': legacy SSE stream returned HTTP {}: {}",
self.server_name,
status,
body
);
}
let server_name = self.server_name.clone();View on GitHub (pinned to b0637c97ec)