slurm-mcp
slurm-mcp
MCP-сервер с доступом только на чтение, который отдаёт агентам состояние планировщика Slurm. Список разрешённых действий (allowlist) зашит в код, а не формулируется в промпте; инструментальная поверхность построена на принципе прогрессивного раскрытия, и поэтому вопрос про Slurm не требует контекстного окна на весь Slurm.
v0.1.0. Защитный слой, набор тем и stdio-сервер реализованы и покрыты тестами. Сервер работает с настоящим кластером или с записанными фикстурами — даже без установленного Slurm.
Почему защита в коде
Системный промпт, говорящий «используйте только read-only команды», — это просьба, а не механизм контроля. В сбое он остаётся открытым (fail-open). Джейлбрейка, перепутанного вызова инструмента или обычной галлюцинации достаточно, чтобы добраться до scontrol update на боевом контроллере.
Всё, что может перевести узел в режим drain, должно быть невозможно выразить, а не просто считаться нежелательным. Поэтому список разрешений живёт в guard.py и проверяется при каждом обращении:
выполняться могут только восемь read-бинарников;
scontrolразрешён дляshowи запрещён дляupdate,reconfigure,shutdown,reboot,requeue,hold,powerи ещё пятнадцати команд;метасимволы шелла в аргументах отклоняются, а команды и так запускаются с
shell=False— это защита в глубину, а не единственный рубеж.
Модель угрозы здесь — не злонамеренный пользователь. Это агент, который в три часа ночи прочитал сбивающую с толку строку лога и вот-вот сделает решительный шаг.
Тесты проверяют это на 51 реальной попытке изменения состояния и внедрения кода, а не на тексте промпта, потому что обещание на уровне промпта невозможно проверить:
make testRelated MCP server: mcp-slurm
Прогрессивное раскрытие
Очевидное решение — один инструмент на каждый бинарник: scontrol, sinfo, squeue, sacct, sdiag, sprio, sshare, sacctmgr, — каждый со своей схемой флагов. Поверхность флагов Slurm огромна, и почти всё в ней не относится к конкретному вопросу, но на каждом ходе диалога она целиком лежит в контексте.
Этот сервер предоставляет три инструмента:
инструмент | когда |
| снимок, с которого начинается большинство сессий: узлы, queue, диагностика — одним вызовом |
| одна тема и нопциональные фильтры. Темы — замкнутый словарь, а не командная строка |
| значения колонок и фильтры для одной темы, подтягиваются только при необходимости |
Измерено и воспроизводится командой make footprint:
resident, three tools 1088 chars
detail, fetched on request 3029 chars
flat one-tool-per-binary 4441 chars (4.1x resident)Это измерение стоимости контекста, а не утверждение о качестве. Оно говорит, что детали подгружаются только по запросу; оно не говорит, что агент станет диагностировать лучше. Ничего здесь nowadays not evaluated на slurm-rca-bench.
Темы: queue, nodes, accounting, priority, fairshare,
diagnostics, config.
Быстрый старт
Кластер не потребуется.
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, pytestДля работы против реального кластера уберите --fixtures:
slurm-mcp overview
slurm-mcp query queue --filter user=alice
slurm-mcp describe accountingКак MCP-сервер
pip install -e ".[server]"
slurm-mcp serve # stdio; add --fixtures to serve recorded dataНаправьте на эту команду любой MCP-клиент. Каждый ответ помечен [live] или [fixture], так что записанная запись никогда не будет принята за чтение настоящего кластера.
Ограничения
Режим только чтение обеспечен только в пределах собственного этой сервера поверхности. Он не песочница для хостовой системы и ничего не говорит о том, какие ещё инструменты переданы агенту.
Фикстуры иллюстративны, а не бенчмарк. Это правдоподобная форма кластера, которая делает поверхность исполнимой; никаких результатов на её основе нельзя цитировать.
Никакого скоринга. Утверждение здесь относится к инструментальной поверхности, а не к точности диагностики. Измерение того, влияет ли прогрессивное раскрытие на диагноз агента, — задача
cluster-sre-agent, и она пока не выполнена.Один диалект Slurm. Форматы вывода проверены на разметке колонок Slurm 25.x; в старее версиях они могут отличаться.
sacctможет блокироваться. Деградировавший учётный тракт заставляет его зависать, а не возвращать ошибку; вызовы заверяются через 20 секунд тайм-аутом с явным сообщением, потому что агент, ждущий бесконечно, хуже агента, которому сказано, что чтение не удалось.
Связанное
cluster-srustifyer — агент, которому потребляется инструментальная поверхность этого вида. Внутренний слой его инструментов только для чтения и есть источник этого подхода; этот репозиторий — самостоятельный сервер, вынесенный из него.
cluster-ops-skills — runbook-и, которым следует агент после того, как он смог прочитать с кластера.
slurm-rca-бench — место, где пришлось бы будущее доказывать любое утверждение о качестве диагностики.
Лицензия
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.7 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