slurm-mcp
slurm-mcp
Ein schreibgeschützter MCP-Server, der Agenten den Zustand des Slurm-Schedulers bereitstellt. Die Allowlist wird im Code erzwungen, nicht in einem Prompt erbeten, und die Tool-Oberfläche nutzt progressive Offenlegung, damit eine Slurm-förmige Frage kein Slurm-förmiges Kontextfenster kostet.
v0.1.0. Der Guard, die Themenoberfläche und der stdio-Server sind gebaut und getestet. Der Server läuft gegen einen echten Cluster oder gegen aufgezeichnete Fixtures, wenn kein Slurm installiert ist.
Warum der Guard im Code steht
Ein System-Prompt, der „nur schreibgeschützte Befehle verwenden" sagt, ist eine Bitte, keine Kontrolle. Er fällt im Fehlerfall offen aus. Ein Jailbreak, ein fehlgeleiteter Tool-Aufruf oder eine gewöhnliche Halluzination genügt, um auf einem Produktions-Controller scontrol update zu erreichen.
Alles, was einen Node drainen könnte, muss unmöglich ausdrückbar sein, nicht nur untersagt. Deshalb liegt die Allowlist in guard.py und wird bei jedem Aufruf ausgeführt:
nur acht Lese-Binaries dürfen überhaupt laufen;
scontrolist fürshowerlaubt und wird fürupdate,reconfigure,shutdown,reboot,requeue,hold,powersowie fünfzehn weitere verweigert;Shell-Metazeichen in Argumenten werden abgelehnt, und Befehle werden ohnehin nur mit
shell=Falseausgeführt — Defence in Depth, nicht die einzige Barriere.
Das Bedrohungsmodell ist kein böswilliger Benutzer. Es ist ein Agent, der um drei Uhr nachts eine verwirrende Log-Zeile gelesen hat und im Begriff ist, etwas Entscheidendes zu tun.
Die Tests prüfen dies nicht mit Behauptungen über Prompt-Text, sondern mit 51 echten Mutations- und Injektionsversuchen, denn eine Zusage auf Prompt-Ebene kann nicht getestet werden.
make testRelated MCP server: mcp-slurm
Progressive Offenlegung
Das naheliegende Design stellt ein Tool pro Binary bereit — sinfo, squeue, sacct, sdiag, sprio, sshare, scontrol, sacctmgr — jedes mit einem Schema für seine Flags. Slurms Flag-Oberfläche gewaltig ist, und das meiste davon ist für eine konkrete Frage irrelevant, aber das gesamte Kontext in jeder Runde trägt.
Dieser Server stellt dagegen drei Tools bereit:
Tool | wann |
| Der Snapshot, mit dem die meisten Sessions starten — Nodes, Warteschlange und Diagnostik in einem Aufruf |
| Ein Thema plus optionale Filter. Themen sind ein geschlossenes Vokabular, keine Kommandozeile |
| Spaltenbedeutungen und Filter für ein Thema, das nur bei Bedarf abgerufen wird |
Gemessen, reproduzierbar mit make footprint:
resident, three tools 1088 chars
detail, fetched on request 3029 chars
flat one-tool-per-binary 4441 chars (4.1x resident)Das ist eine Messung der Kontextkosten, kein Qualitätsanspruch. Es besagt, dass die Details nicht im Kontext liegen, bis sie angefragt werden; es besagt nicht, dass ein Agent irgendetwas besser diagnostiziert. Nichts hier wurde auf slurm-rca-bench ausgewertet.
Themen: queue, nodes, accounting, priority, fairshare, diagnostics, config.
Quickstart
Kein Cluster erforderlich.
make install
make surface # the read-only allowlist, and what is denied
make demo # a full overview against recorded fixtures
make footprint # reproduce the context measurement above
make check # ruff, ruff format, mypy --strict, pytestBei einem echten Cluster lässt du --fixtures weg:
slurm-mcp overview
slurm-mcp query queue --filter user=alice
slurm-mcp describe accountingAls MCP-Server
pip install -e ".[server]"
slurm-mcp serve # stdio; add --fixtures to serve recorded dataRichte einen MCP-Client auf diesen Befehl aus. Jede Antwort ist mit [live] oder [fixture] gekennzeichnet, damit aufgezeichnete Daten niemals mit einem echten Cluster-Readsch verwechselt werden.
Einschränkungen
Schreibschutz gilt nur für die eigenen Oberfläche des Servers. Er sandboxiert den Host nicht und trifft keine Aussage über die anderen Tools, die einem Agenten zur Verfügung gestellt wurden.
Die Fixtures sind illustrativ, kein Benchmark. Sie bilden eine plausible Cluster-Form, damit die Oberfläche lauffähig ist; aus ihnen darf kein Ergebnis zitiert werden.
Kein Scoring. Der Anspruch hier betrifft die Tool-Oberfläche, nicht die diagnostische Genauigkeit. Die Messung, ob progressive Offenlegung die Diagnose eines Agenten verändert, ist Aufgabe von
cluster-sre-agentund ist nicht dann.Ein einziger Slurm-Dialekt. Die Ausgabeformat wurde gegen die Spaltenlayouts von Slurm 25.x getestet. Ältere Versionen können abweichen.
sacctkann blockieren. Ein degradierter Accounting-Pfad bringt ihn zum Hängen, statt dass er Fehler meldet; Aufrufe laufen nach 20 Sekunden in eine Timeout und melden dies auch ein — weil ein Agent, der ewig wartet, schlechter ist als ein Agent, dem gesagt wird, dass der Lesezugriff fehlgeschlagen ist.
Verwandtes
cluster-sre-agent — der Agent, der eine solche Oberfläche nutzt. Aus seiner internen schreibgeschützten Tool-Schicht stammt dieses Design; dies Repo ist der eigenständige Server.
cluster-ops-skills — die Runbooks, die ein Agent befolgt, sobald er den Cluster lesen kann.
slurm-rca-bench — wo ein Anspruch auf diagnostische Qualität zu beweisen wäre.
Lizenz
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Discover Frontier inference capabilities and read sanitized usage through read-only tools.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Runtime permission, approval, and audit layer for AI agent tool execution.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables read-only interaction with Proxmox homelab VMs and containers, allowing LLM agents to list VMs, monitor status and performance metrics, view snapshots, and check cluster health through natural language queries.8MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage SLURM HPC clusters via SSH. Supports job submission, resource monitoring, queue management, and file operations.4 npm4-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage SLURM cluster jobs with safety guardrails, including file transfer, job submission, log reading, and remote command execution.1MIT
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to OpenClaw and Codex operational data like status, tasks, sessions, logs, and Git changes. Ensures safety via redaction, allowlists, and bounded outputs.MIT