tinyhumansai/openhuman · error · anyhow::Error
stdio MCP response missing `result`: {payload}
Error message
stdio MCP response missing `result`: {payload} What it means
A JSON-RPC frame arrived from the stdio MCP server with neither a "result" nor (checked just before) a usable payload shape — the message is valid JSON but not a response the client can correlate. Typically a server bug or a notification sent where a response was expected.
Source
Thrown at src/openhuman/mcp/config_servers/stdio.rs:249
}
if !trimmed.starts_with('{') && !trimmed.starts_with('[') {
tracing::debug!(
target: "[mcp_client::stdio]",
command = %self.command,
line = %trimmed,
"ignoring non-JSON stdout line from stdio MCP server"
);
continue;
}
let payload: Value = serde_json::from_str(trimmed)
.with_context(|| format!("parsing stdio MCP response: {trimmed}"))?;
if let Some(err) = payload.get("error") {
anyhow::bail!("MCP stdio error: {err}");
}
return payload
.get("result")
.cloned()
.ok_or_else(|| anyhow::anyhow!("stdio MCP response missing `result`: {payload}"));
}
}
async fn send_notification_on_session(
&self,
session: &mut StdioSession,
method: &str,
params: Value,
) -> anyhow::Result<()> {
let line = serde_json::to_string(&json!({
"jsonrpc": "2.0",
"method": method,
"params": params,
}))?;
session.stdin.write_all(line.as_bytes()).await?;
session.stdin.write_all(b"\n").await?;
session.stdin.flush().await?;
Ok(())View on GitHub (pinned to 7491200858)
Solutions
- Inspect the logged payload to identify which request the malformed reply answers
- Upgrade or report the MCP server — responses must carry a "result" or "error" member
- Retry the request; a one-off garbled frame may be transient
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/openhuman/mcp/config_servers/stdio.rs:249 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/573de77bec0e7bb1.
Report an issue: GitHub.