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

  1. Use exactly `stdio` or `http`, lowercase.
  2. Map remote/SSE-style server configs to `http` — that is this binary's network transport.
  3. 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

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


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/34b9a74cd300dfb8. Report an issue: GitHub.