Co to znamená
majordomus mcp, příkaz spustitelného souboru v Rustu v apps/majordomus-cli/, který spouští klient MCP, čte vrstvu .ai/, odpovídá na initialize, resources/list, resources/read, tools/list a tools/call přes stdin a stdout a končí, když klient zavře rouru. Na stdout se zapisují jen rámce JSON-RPC; vše ostatní jde na stderr. První v checkoutu se stane jeho sdíleným serverem: naváže loopback HTTP projekci a zapíše jediný soubor, svůj lease pod .ai/local/state/mcp/ (docs/MCP.md); --standalone obsluhuje jen tohoto klienta, bez portu a bez leasu. Každý nástroj je oznámen s tím, co mění: většina čte a ty, jejichž efekt v registru je repository_mutation, zapisují do repozitáře a jsou jmenovány v instrukcích initialize.
Princip
src/repository.rs najde kořen, src/index.rs sestaví index v paměti, src/mcp/surface.rs jej promítne do zdrojů a nástrojů, src/mcp/protocol.rs mluví protokolem nad tímto povrchem a src/mcp/stdio.rs přenáší jeden rámec na řádek. Logování jde přes tracing na stderr pod MAJORDOMUS_LOG. Neexistuje knihovna MCP ani asynchronní runtime: podmnožina protokolu, kterou server potřebuje, je dost malá, aby se vešla do jednoho souboru za indexem.
Jak to vidět
cargo build --manifest-path apps/majordomus-cli/Cargo.toml
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"you","version":"0"}}}' \
'{"jsonrpc":"2.0","id":2,"method":"resources/read","params":{"uri":"majordomus://prompt/continue"}}' \
| apps/majordomus-cli/target/debug/majordomus mcp 2>/dev/null
Vrátí se dva řádky, oba JSON; druhý nese .ai/repo/prompts/continue.md tak, jak byl přečten. Přidejte MAJORDOMUS_LOG=debug a diagnostika se objeví na stderr, zatímco stdout zůstane stejné dva řádky.
Co nepokrývá
Jeden transport, stdio; žádná odběr, žádná oznámení o změně seznamu, žádná schopnost promptů (prompty repozitáře vykreslují {{CONTEXT}} z lokálního stavu checkoutu, který vlastní shellový nástroj, takže se servírují jako zdroje, nevykreslené a tak označené). Interoperabilita je prokázána proti skutečným rámcům protokolu, ne proti každému klientovi.
Proč existuje
Nástroje mluvící MCP neumějí číst shellový nástroj. Vrstva patří repozitáři, je čitelná bez jakéhokoli nástroje, a toto je čtečka pro klienty, které čtou přes protokol, podřízená shellovému nástroji, který vrstvu validuje a vynucuje. test/cases/72_rust_mcp.sh komunikuje se sestavenou binárkou uvnitř repozitáře, který napsal init shellového nástroje; apps/majordomus-cli/tests/mcp_stdio.rs podrobuje každý frame výše uvedeným pravidlům, včetně toho, že relace nic nemění.