{"record":{"id":"61e2bcb28e457042","repo":"Kuberwastaken/claurst","slug":"failed-to-spawn-rmcp-stdio-child-for","errorCode":null,"errorMessage":"failed to spawn rmcp stdio child for '{}': {}","messagePattern":"failed to spawn rmcp stdio child for '(.+?)': (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-rust/crates/mcp/src/rmcp_backend.rs","lineNumber":126,"sourceCode":"    #[allow(dead_code)]\n    running: Mutex<RunningService<RoleClient, RmcpNotificationClient>>,\n    notifications_rx: Arc<Mutex<mpsc::UnboundedReceiver<Value>>>,\n}\n\nimpl RmcpClientBackend {\n    pub async fn connect_stdio(\n        config: &claurst_core::config::McpServerConfig,\n    ) -> anyhow::Result<Self> {\n        let command = config\n            .command\n            .clone()\n            .ok_or_else(|| anyhow::anyhow!(\"MCP server '{}' has no command configured\", config.name))?;\n\n        let transport = TokioChildProcess::new(Command::new(&command).configure(|cmd| {\n            cmd.args(&config.args);\n            cmd.envs(&config.env);\n        }))\n        .map_err(|e| anyhow::anyhow!(\"failed to spawn rmcp stdio child for '{}': {}\", config.name, e))?;\n\n        let client_info = build_client_info(rmcp_model::ProtocolVersion::default());\n        Self::connect_with_transport(config, transport, client_info, \"stdio\").await\n    }\n\n    pub async fn connect_http(\n        config: &claurst_core::config::McpServerConfig,\n        auth_token: Option<String>,\n        protocol_version: rmcp_model::ProtocolVersion,\n    ) -> anyhow::Result<Self> {\n        let endpoint = config\n            .url\n            .clone()\n            .ok_or_else(|| anyhow::anyhow!(\"MCP server '{}' has no URL configured\", config.name))?;\n\n        let mut transport_config = StreamableHttpClientTransportConfig::with_uri(endpoint);\n        if let Some(token) = auth_token {\n            transport_config = transport_config.auth_header(token);","sourceCodeStart":108,"sourceCodeEnd":144,"githubUrl":"https://github.com/Kuberwastaken/claurst/blob/b0637c97ec34144387cbf2f74f65df6d16a6cef1/src-rust/crates/mcp/src/rmcp_backend.rs#L108-L144","documentation":"TokioChildProcess::new failed while spawning the MCP server's stdio child process for the configured command. The OS-level spawn failed — executable not found on PATH, permission denied, or exec error — before any MCP handshake occurred.","triggerScenarios":"Thrown at src-rust/crates/mcp/src/rmcp_backend.rs:126 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the command exists on PATH (or use an absolute path) and is executable","Check execute permissions and dependencies (interpreter/runtime) of the MCP server binary","Look for OS-level errors in the appended error text for the exact cause"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b0637c97ec34144387cbf2f74f65df6d16a6cef1","analyzedAt":"2026-09-10T00:24:58.650Z","contentChangedAt":"2026-09-10T00:24:58.650Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}