import json
import os
import socket
import sys
import tempfile
API_NAME = "mcpmesh-local/1"
def endpoint_path() -> str:
xdg = os.environ.get("XDG_RUNTIME_DIR")
base = xdg if xdg and os.path.isabs(xdg) else (os.environ.get("TMPDIR") or tempfile.gettempdir())
return os.path.join(base, "mcpmesh", "mcpmesh.sock")
def main() -> None:
path = endpoint_path()
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
sock.connect(path)
except OSError:
sys.exit(f"no daemon reachable at {path} — start one with `mcpmesh status`")
wire = sock.makefile("rw", encoding="utf-8", newline="\n")
hello = json.loads(wire.readline())
if hello.get("api") != API_NAME:
sys.exit(f"unexpected api {hello.get('api')!r} (want {API_NAME!r}) — hanging up")
wire.write(json.dumps({"method": "status"}) + "\n")
wire.flush()
reply = json.loads(wire.readline())
if "error" in reply:
sys.exit(f"daemon refused: {reply['error']}")
status = reply["result"]
print(f"mcpmesh {status['stack_version']}")
for svc in status.get("services", []):
print(f" serving {svc['name']} -> {', '.join(svc['allow']) or 'nobody yet'}")
for peer in status.get("peers", []):
print(f" {peer['name']} shares: {', '.join(peer['services'])}")
for probe in status.get("reachability", []):
if probe.get("age_secs") is None:
state = "checking…" elif probe["reachable"]:
rtt = probe.get("rtt_ms")
state = f"online · {rtt} ms" if rtt is not None else "online"
else:
state = "offline"
print(f" {probe['name']} is {state}")
if __name__ == "__main__":
main()