{"record":{"id":"3c1895a75244954e","repo":"Kuberwastaken/claurst","slug":"mcp-server-unsupported-transport-type","errorCode":null,"errorMessage":"MCP server '{}': unsupported transport type '{}'","messagePattern":"MCP server '(.+?)': unsupported transport type '(.+?)'","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-rust/crates/mcp/src/lib.rs","lineNumber":648,"sourceCode":"                                        protocol_version = %protocol_version_label,\r\n                                        error = %message,\r\n                                        \"Streamable HTTP protocol version unsupported; trying fallback\"\r\n                                    );\r\n                                    last_error = Some(e);\r\n                                    continue;\r\n                                }\r\n                                return Err(e);\r\n                            }\r\n                        }\r\n                    }\r\n                    Err(last_error.unwrap_or_else(|| {\r\n                        anyhow::anyhow!(\r\n                            \"MCP server '{}': no supported streamable HTTP protocol version found\",\r\n                            config.name\r\n                        )\r\n                    }))\r\n                }\r\n                other => Err(anyhow::anyhow!(\r\n                    \"MCP server '{}': unsupported transport type '{}'\",\r\n                    config.name,\r\n                    other\r\n                )),\r\n            }\r\n        }\r\n\r\n        pub(crate) fn is_unsupported_protocol_error(message: &str) -> bool {\r\n            // rmcp, servers, and gateways do not emit a single stable\r\n            // protocol-negotiation error string, so match the known variants\r\n            // conservatively to keep downgrade fallback working.\r\n            let lower = message.to_ascii_lowercase();\r\n            lower.contains(\"unsupported protocol version\")\r\n                || lower.contains(\"unsupported mcp-protocol-version\")\r\n                || (lower.contains(\"protocol version\") && lower.contains(\"unsupported\"))\r\n                || (lower.contains(\"mcp-protocol-version\") && lower.contains(\"bad request\"))\r\n        }\r\n\r","sourceCodeStart":630,"sourceCodeEnd":666,"githubUrl":"https://github.com/Kuberwastaken/claurst/blob/b0637c97ec34144387cbf2f74f65df6d16a6cef1/src-rust/crates/mcp/src/lib.rs#L630-L666","documentation":"McpClient::connect dispatches on config.server_type (\"stdio\", \"sse\", streamable-http). Any other string hits the catch-all arm and produces this error naming the server and the unrecognized transport type.","triggerScenarios":"An McpServerConfig whose server_type field is misspelled or an unsupported value (e.g. \"http\", \"websocket\", \"streamable_http\", empty string) passed to McpClient::connect.","commonSituations":"Hand-written settings.json with `\"type\": \"streamable_http\"` instead of the accepted spelling; newer/older config schema mixing; copy-pasted config from a different MCP client using different transport names.","solutions":["Set server_type to one of the supported values: \"stdio\", \"sse\", or the streamable-http value used by this library","Check spelling/casing of the server_type field in the MCP config","Consult docs for the exact accepted strings and update the config schema","If you need a new transport, implement it in connect's match rather than inventing a server_type"],"exampleFix":"// before\n{\"name\": \"fs\", \"server_type\": \"streamable_http\", ...}\n// after\n{\"name\": \"fs\", \"server_type\": \"streamable-http\", ...}","handlingStrategy":"validation","validationCode":"const VALID: &[&str] = &[\"stdio\", \"sse\", \"streamable-http\"];\nassert!(VALID.contains(&cfg.server_type.as_str()), \"bad server_type: {}\", cfg.server_type);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate server_type against an enum at config-load time","Use a serde enum with deny_unknown_fields for server configs","Copy transport names from the library docs, not other MCP clients"],"tags":["mcp","configuration","transport"],"backgroundTag":"invalid-config-value","analyzedSha":"b0637c97ec34144387cbf2f74f65df6d16a6cef1","analyzedAt":"2026-09-10T00:24:58.650Z","contentChangedAt":"2026-09-10T00:24:58.650Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}