Co to znamená
Nikdo nespouští server ručně. Otevřete tento repozitář v Claude Code, Gemini CLI nebo Codexu a klient najde svou konfiguraci v kořeni, spustí bin/majordomus-mcp a mluví s ním MCP; launcher sestaví spustitelný soubor v Rustu, když chybí nebo je starší než zdroje, a pak spustí majordomus mcp, které nastartuje sdílený server repozitáře nebo se připojí k tomu, který už běží. První klient, který repozitář otevře, se stane serverem; druhý jej sdílí.
Princip
bin/majordomus-mcp (přenosný bash) určí repozitář podle vlastního umístění, zvolí apps/majordomus-cli/target/<profile>/majordomus (MAJORDOMUS_BUILD_PROFILE, výchozí debug), porovná ho se zdroji pomocí find -newer, v případě potřeby spustí cargo build --locked s výstupem na stderr, nastaví MAJORDOMUS_SHARE na share/ distribuce vedle sebe a spustí execem spustitelný soubor s mcp a všemi předanými argumenty. Nikdy nezapisuje na stdout, který patří protokolu. MAJORDOMUS_BIN pojmenuje spustitelný soubor k použití bez sestavení; MAJORDOMUS_NO_BUILD=1 odmítne sestavovat a skončí s kódem 12 a příkazem, který je třeba spustit. Všechny ho uvádějí .mcp.json (Claude Code, rozsah projektu, schváleno jednou), .gemini/settings.json (Gemini CLI, mcpServers.majordomus) i .codex/config.toml (Codex, [mcp_servers.majordomus], načítá se, když je projekt důvěryhodný).
Jak to vidět
cat .mcp.json .gemini/settings.json .codex/config.toml # the same launcher in each
bin/majordomus-mcp --help # builds if needed, then: Usage: majordomus mcp ...
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"you","version":"0"}}}\n' | bin/majordomus-mcp
# stderr: shared server listening on http://127.0.0.1:8741 — 7 surface(s): api .../api/v1, cockpit .../cockpit, ...; stdout: the initialize result
claude # in this directory: approve the project server once; the majordomus_* tools are thereCo nepokrývá
První build potřebuje toolchain Rustu a stahuje crates, které Cargo.lock připíná; timeout startu klienta může být třeba zvýšit (MCP_TIMEOUT v Claude Code, startup_timeout_sec v Codexu, timeout v Gemini CLI; dodané konfigurace nastavují poslední dva) nebo jednou předem spustit just build. Launcher je pro rozvržení tohoto repozitáře (bin/ vedle apps/ a share/); repozitář, který nástroj jen instaluje, pojmenovává sestavený executable přímo, jak ukazuje apps/majordomus-cli/README.md. Zda klient respektuje konfiguraci projektu, je věcí klienta: Claude Code žádá o schválení, Codex vyžaduje důvěru.
Proč existuje
Provozovatel požadoval, aby spuštění klienta automaticky sestavilo, spustilo a použilo server, pro Claude, Codex i Gemini stejně. Konfigurace jsou vlastní formáty klientů; launcher je jediné místo, kde se rozhoduje o buildu a sdíleném adresáři, aby všechny tři zůstaly shodné. test/cases/90_mcp_shared_server.sh spustí launcher se dvěma klienty v repozitáři, který zapsal init shellového nástroje, ověří, že ho všechny tři konfigurace jmenují, ověří, že stdout nese jen rámce protokolu, a ověří odmítnutí, když build není dovolen.