tinyhumansai/openhuman · error
mcp --transport http unavailable: built without the http-ser
Error message
mcp --transport http unavailable: built without the http-server feature
What it means
The HTTP transport arm of the MCP server is compiled only under the `http-server` Cargo feature (axum + socketioxide, #5048), which is ON in default builds. In a slim build compiled without it, `--transport http` reaches a #[cfg(not(feature = "http-server"))] block that bails with this build fact and exits; the stdio arm still works. The message exists so the failure is a one-line diagnostic instead of a server that mysteriously never comes up.
Source
Thrown at src/openhuman/mcp/server/stdio.rs:112
let bind_addr: SocketAddr =
format!("{bind_host}:{port}").parse().map_err(|err| {
anyhow::anyhow!("invalid bind address `{bind_host}:{port}`: {err}")
})?;
log::debug!(
"[mcp_server] starting HTTP/SSE MCP server bind={bind_addr} auth={}",
auth_token.is_some()
);
rt.block_on(run_http(HttpServerConfig {
bind_addr,
auth_token,
}))?;
}
// Built without the axum transport (#5048): the stdio path above
// still works; `--transport http` reports the build fact.
#[cfg(not(feature = "http-server"))]
{
let _ = (&bind_host, port, &auth_token);
bail!("mcp --transport http unavailable: built without the http-server feature");
}
}
}
Ok(())
}
/// Initialize logging for the MCP server.
///
/// MCP servers run as subprocesses of clients (Claude Desktop, Cursor, …) which
/// surface the server's stderr to the user when something goes wrong. We
/// therefore always install the tracing subscriber — otherwise `log::error!` /
/// `log::warn!` events get silently dropped and field-debugging requires
/// re-running with `--verbose`.
///
/// Default level is `warn` to keep the stderr stream quiet under normal use
/// while still surfacing problems; `--verbose` promotes it to `debug` so
/// `[mcp_server]` traces become visible. A user-set `RUST_LOG` always wins.
fn init_mcp_logging(verbose: bool) {View on GitHub (pinned to 7491200858)
Solutions
- Rebuild with the gate: `cargo build --bin openhuman-core --features mcp,http-server` (the default feature set already includes both).
- Or use the stdio transport, which requires only `mcp`.
- If you embed the core, surface http-server availability at startup (the core has an http-server status surface) instead of discovering it at first invocation.
Example fix
# before — slim artifact without the axum transport $ cargo build --bin openhuman-core --no-default-features --features mcp $ openhuman-core mcp --transport http error: mcp --transport http unavailable: built without the http-server feature # after — include the gate (the http arm needs mcp + http-server) $ cargo build --bin openhuman-core --features mcp,http-server $ openhuman-core mcp --transport http --auth-token "$MCP_TOKEN"
Defensive patterns
Strategy: fallback
Validate before calling
fn mcp_http_transport_compiled_in() -> bool {
cfg!(all(feature = "mcp", feature = "http-server"))
}
// gate flag/UI exposure on this instead of letting users hit the runtime bail Try / catch
Catch the bail and fall back to the stdio transport (available under `mcp` alone), or surface 'rebuild with --features http-server' to the operator — this error is a build fact, not a runtime condition to retry.
Prevention
- Default features include http-server — document any deliberate deviation in slim builds.
- Assert feature flags in build scripts for artifacts expected to serve HTTP MCP.
- Embedders should consult the core's http-server status surface at startup rather than probing at first call.
When it happens
Trigger: Running `openhuman mcp --transport http` on a binary built `--no-default-features` or with an explicit feature list omitting `http-server`. Note the http arm actually requires both `mcp` and `http-server` (the run path is cfg(all(feature = "mcp", feature = "http-server"))).
Common situations: Slim/embedded builds trimmed for size or kernel-profile artifacts (`--no-default-features --features flows`) accidentally used as a full core; minimal CI binaries reused locally; custom embeds composing their own feature sets.
Related errors
- rpc_http transport was requested but this build was compiled
- mcp feature disabled at compile time: this build was compile
- tui feature disabled at compile time; rebuild with `--featur
- voice_not_compiled
- Socket not connected
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/afe4ea13fffd1e2c.
Report an issue: GitHub.