{"record":{"id":"fb0acccfb84ab24d","repo":"zeroclaw-labs/zeroclaw","slug":"mcp-servers-i-with-transport-stdio-requires-non","errorCode":null,"errorMessage":"mcp.servers[{i}] with transport=stdio requires non-empty command","messagePattern":"mcp\\.servers\\[(.+?)\\] with transport=stdio requires non-empty command","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-config/src/schema.rs","lineNumber":10107,"sourceCode":"                    format!(\"mcp.servers[{i}].tool_timeout_secs\"),\n                    \"mcp.servers[{i}].tool_timeout_secs must be greater than 0\"\n                );\n            }\n            if timeout > MCP_MAX_TOOL_TIMEOUT_SECS {\n                anyhow::bail!(\n                    \"mcp.servers[{i}].tool_timeout_secs exceeds max {MCP_MAX_TOOL_TIMEOUT_SECS}\"\n                );\n            }\n        }\n\n        // The transport -> required-leaf relationship is owned by\n        // `McpTransport::required_leaf`, which feeds the `x-required-by-transport`\n        // schema metadata. The validator matches on the `McpTransport` enum so a\n        // new variant is a compile error here rather than a runtime fall-through.\n        match server.transport {\n            McpTransport::Stdio => {\n                if server.command.trim().is_empty() {\n                    anyhow::bail!(\n                        \"mcp.servers[{i}] with transport=stdio requires non-empty command\"\n                    );\n                }\n            }\n            McpTransport::Http | McpTransport::Sse => {\n                let url = server\n                    .url\n                    .as_deref()\n                    .map(str::trim)\n                    .filter(|value| !value.is_empty())\n                    .ok_or_else(|| {\n                        let transport_str = server.transport.wire_name();\n                        ::zeroclaw_log::record!(\n                            WARN,\n                            ::zeroclaw_log::Event::new(\n                                module_path!(),\n                                ::zeroclaw_log::Action::Reject\n                            )","sourceCodeStart":10089,"sourceCodeEnd":10125,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-config/src/schema.rs#L10089-L10125","documentation":"Error \"mcp.servers[{i}] with transport=stdio requires non-empty command\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-config/src/schema.rs:10107 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a non-empty command for the stdio MCP server, or switch its transport to HTTP."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}