tinyhumansai/openhuman · error
unknown --transport value `{other}` (expected stdio or http)
Error message
unknown --transport value `{other}` (expected stdio or http) What it means
Argument parsing for `openhuman mcp` accepts exactly two lowercase transport literals — "stdio" and "http" — and rejects anything else at parse time, before the server or runtime starts. Matching is case-sensitive, so `HTTP` and `SSE` are equally invalid.
Source
Thrown at src/openhuman/mcp/server/stdio.rs:42
let mut bind_host = "127.0.0.1".to_string();
let mut port: u16 = 9300;
let mut auth_token: Option<String> = None;
let mut index = 0usize;
while index < args.len() {
match args[index].as_str() {
"-v" | "--verbose" => {
verbose = true;
index += 1;
}
"--transport" => {
let value = args
.get(index + 1)
.ok_or_else(|| anyhow::anyhow!("missing value for --transport"))?;
transport = match value.as_str() {
"stdio" => McpTransport::Stdio,
"http" => McpTransport::Http,
other => bail!("unknown --transport value `{other}` (expected stdio or http)"),
};
index += 2;
}
"--host" => {
bind_host = args
.get(index + 1)
.ok_or_else(|| anyhow::anyhow!("missing value for --host"))?
.clone();
index += 2;
}
"--port" => {
let raw = args
.get(index + 1)
.ok_or_else(|| anyhow::anyhow!("missing value for --port"))?;
port = raw
.parse()
.map_err(|_| anyhow::anyhow!("invalid --port value `{raw}`"))?;
index += 2;View on GitHub (pinned to 7491200858)
Solutions
- Use exactly `stdio` or `http`, lowercase.
- Map remote/SSE-style server configs to `http` — that is this binary's network transport.
- Run `openhuman mcp --help` (print_help) to confirm the accepted values on your build.
Example fix
# before $ openhuman mcp --transport SSE error: unknown --transport value `SSE` (expected stdio or http) # after $ openhuman mcp --transport http
Defensive patterns
Strategy: validation
Validate before calling
const VALID_TRANSPORTS: &[&str] = &["stdio", "http"];
if !VALID_TRANSPORTS.contains(&transport_arg.as_str()) {
anyhow::bail!("--transport must be one of {VALID_TRANSPORTS:?} (case-sensitive)");
} Type guard
fn is_valid_mcp_transport(v: &str) -> bool {
matches!(v, "stdio" | "http")
} Prevention
- Pin literal lowercase values in wrapper scripts and configs.
- Add a CI smoke test that runs `openhuman mcp --help` and asserts the accepted flag set.
- Translate other clients' `sse` naming to `http` at your integration boundary.
When it happens
Trigger: Passing `--transport SSE`, `--transport HTTP` (uppercase), `--transport ws`, or any other client-convention value to `openhuman mcp`. (A missing value after the flag is a separate, earlier error.)
Common situations: Values copied from other MCP clients' configs (Claude Desktop-era `sse` transport naming); case typos; scripts written against a different tool's CLI.
Related errors
- --auth-token must not be empty
- unknown mcp arg: {other}
- Socket not connected
- MCP HTTP {} — {}
- mcp feature disabled at compile time: this build was compile
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/34b9a74cd300dfb8.
Report an issue: GitHub.