Über den MCP-Server ausgeführte Kommandos geben ihren Exit-Status nicht zurück; eosctl reicht ihn dagegen korrekt durch (systemctl status nginx liefert dort 0 bei laufendem und 3 bei gestopptem Dienst). Bei Kommandos mit Ausgabe fällt das kaum auf – systemctl status nginx liefert auch über MCP die vollständige Statusausgabe, in der active (running) bzw. inactive (dead) klar unterscheidbar sind. Sobald die Information aber ausschließlich im Exit-Code steckt, ist der Aufruf über MCP unbrauchbar: systemctl --quiet is-active nginx liefert bei laufendem wie bei gestopptem nginx eine identisch leere Rückgabe. Dasselbe gilt für sh -c "exit 42" und für nicht existierende Kommandos – beide sind über MCP nicht von einem Erfolg zu unterscheiden, während eosctl 42 bzw. 127 meldet.
Gegenüberstellung
Gleiche VM (Debian 13), gleiche Kommandos, einmal über eosctl, einmal über eoscloud-mcp:
| Kommando | eosctl | eoscloud-mcp |
|---|---|---|
| true | 0 | (leer) |
| sh -c "exit 42" | 42 | (leer, kein Fehler) |
| systemctl status nginx (läuft / gestoppt) | 0 / 3 | Output, kein Code – Zustand aber am Text erkennbar |
| systemctl --quiet is-active nginx (läuft / gestoppt) | 0 / 3 | (beide Male leer – nicht unterscheidbar) |
| ls /gibt-es-nicht | 2 + stderr | stderr, kein Code |
| kommando-gibt-es-nicht-xyz | 127 | (leer, kein Fehler) |
Je nach ausgeführtem Kommando würde es dem Kleinen sicher helfen, den Exit-Code auch zu bekommen. ![]()