{"record":{"id":"1f922566c104732b","repo":"tinyhumansai/openhuman","slug":"stdio-server-missing-stdout","errorCode":null,"errorMessage":"stdio server missing stdout","messagePattern":"stdio server missing stdout","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/mcp/config_servers/stdio.rs","lineNumber":114,"sourceCode":"            tracing::warn!(\n                target: \"[mcp_client::stdio]\",\n                command = %self.command,\n                \"stdio MCP command not found on resolved PATH\"\n            );\n            anyhow::bail!(spawn_env::missing_command_error(&self.command));\n        }\n\n        let mut child = command\n            .spawn()\n            .with_context(|| format!(\"spawning MCP stdio server `{}`\", self.command))?;\n        let stdin = child\n            .stdin\n            .take()\n            .ok_or_else(|| anyhow::anyhow!(\"stdio server missing stdin\"))?;\n        let stdout = child\n            .stdout\n            .take()\n            .ok_or_else(|| anyhow::anyhow!(\"stdio server missing stdout\"))?;\n        let mut session = StdioSession {\n            child,\n            stdin,\n            stdout: BufReader::new(stdout),\n            initialize: McpInitializeResult {\n                protocol_version: LATEST_PROTOCOL_VERSION.into(),\n                capabilities: json!({}),\n                server_info: json!({}),\n                instructions: None,\n            },\n        };\n\n        let response = self\n            .send_request_on_session(\n                &mut session,\n                \"initialize\",\n                json!({\n                    \"protocolVersion\": LATEST_PROTOCOL_VERSION,","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/mcp/config_servers/stdio.rs#L96-L132","documentation":"After spawning the stdio MCP child, child.stdout was None — stdout was not piped for this spawn, so the host can never read JSON-RPC responses from the server. A transport-setup defect, not a server behaviour problem.","triggerScenarios":"Thrown at src/openhuman/mcp/config_servers/stdio.rs:114 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the StdioCommand is created with stdout piped (Stdio::piped) before spawn","Verify the command is not redirecting stdout to a file or /dev/null","Re-spawn the child with both stdin and stdout piped"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}