[eos][mcp] exec liefert keinen Exit-Codes

  • Ü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:

    Kommandoeosctleoscloud-mcp
    true0(leer)
    sh -c "exit 42"42(leer, kein Fehler)
    systemctl status nginx (läuft / gestoppt)0 / 3Output, 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-nicht2 + stderrstderr, kein Code
    kommando-gibt-es-nicht-xyz127(leer, kein Fehler)

    Je nach ausgeführtem Kommando würde es dem Kleinen sicher helfen, den Exit-Code auch zu bekommen. :)