Skip to main content
Glama

MCP-сервер для Slurm HPC

MCP-сервер на базе Python, предназначенный для подключения к суперкомпьютерным кластерам Slurm через SSH и предоставления вызываемых возможностей кластера таким клиентам, как Claude Desktop, Claude Code, Cursor, MCP Inspector и другим.

Текущая версия прошла проверку реальной цепочки взаимодействия:

  • MCP-сервер успешно запускается

  • Claude/MCP Inspector успешно подключаются

  • Возможно подключение к удаленным узлам входа Slurm по SSH

  • Возможно выполнение реальных заданий sbatch

  • Возможно чтение логов заданий

  • Возможно проведение структурированной диагностики типичных ошибок HPC

Функциональность

В настоящее время предоставляются следующие возможности MCP:

  • list_jobs Просмотр текущей очереди заданий

  • list_partitions Просмотр информации о разделах

  • get_job_status Запрос статуса, кода выхода, причины и пути к логам указанного задания

  • submit_slurm_job Загрузка и отправка скрипта Slurm

  • diagnose_error Структурированная классификация ошибок на основе логов

  • job_log://{job_id} Чтение лога стандартного вывода задания

Related MCP server: claude-ssh-mcp

Технологический стек

  • Python

  • MCP Python SDK (mcp[cli])

  • Paramiko

  • Slurm CLI (squeue, sinfo, sacct, scontrol, sbatch)

Структура каталогов

slurm-hpc-mcp/
├─ mcp_hpc_server.py
├─ README.md
├─ requirements.txt
├─ claude_desktop_config.example.json
├─ mcp.inspector.template.json
├─ examples/
│  └─ example_job.slurm
└─ tests/
   └─ test_mcp_server.py

Установка

Рекомендуется использовать отдельное виртуальное окружение.

pip install -r requirements.txt

Способ настройки

Сервис считывает конфигурацию удаленного кластера через переменные окружения.

Обязательные:

  • SLURM_SSH_HOST

  • SLURM_SSH_USERNAME

Опциональные:

  • SLURM_SSH_PORT, по умолчанию 22

  • SLURM_SSH_KEY_PATH

  • SLURM_SSH_PASSWORD

  • SLURM_SSH_ALLOW_UNKNOWN_HOSTS, по умолчанию false

  • SLURM_REMOTE_WORKDIR, по умолчанию /tmp/mcp-slurm

  • SLURM_CONNECT_TIMEOUT, по умолчанию 15

  • SLURM_COMMAND_TIMEOUT, по умолчанию 60

  • SLURM_LOG_MAX_BYTES, по умолчанию 200000

  • MCP_TRANSPORT, по умолчанию stdio

Локальный запуск

По умолчанию запускается через stdio, что подходит для Claude Desktop, Claude Code, Cursor, Inspector:

python .\mcp_hpc_server.py

Если необходимо переключиться на HTTP-транспорт:

$env:MCP_TRANSPORT="streamable-http"
python .\mcp_hpc_server.py

Настройка Claude Desktop

Пожалуйста, обратитесь к:

  • claude_desktop_config.example.json

Пример:

{
    "mcpServers": {
      "slurm-hpc": {
        "type": "stdio",
        "command": "<your-python-executable>",
        "args": ["<your-project-dir>/mcp_hpc_server.py"],
        "env": {
        "SLURM_SSH_HOST": "your-login-host",
        "SLURM_SSH_PORT": "22",
        "SLURM_SSH_USERNAME": "your-username",
        "SLURM_SSH_KEY_PATH": "<your-ssh-private-key-path>",
        "SLURM_SSH_ALLOW_UNKNOWN_HOSTS": "true"
      }
    }
  }
}

Типичное расположение конфигурации Claude Desktop в Windows:

%APPDATA%\Claude\claude_desktop_config.json

MCP Inspector

Пожалуйста, обратитесь к:

  • mcp.inspector.template.json

Если вы настраиваете вручную прямо в Inspector:

  • В поле Command укажите путь к интерпретатору Python

  • В поле Arguments укажите путь к mcp_hpc_server.py

  • В переменных окружения укажите соответствующие параметры SLURM_SSH_*

Пример скрипта задания

См.:

  • examples/example_job.slurm

При отправке, пожалуйста, измените параметры в соответствии с реальными условиями вашего кластера:

  • Имя раздела

  • Ресурсы GRES / GPU / DCU

  • Ограничение по времени

  • Путь вывода

Описание инструментов

1. list_jobs

Просмотр заданий в текущей очереди.

Ввод:

{
  "user": "optional"
}

2. list_partitions

Просмотр состояния разделов.

Ввод:

{}

3. get_job_status

Запрос статуса указанного задания.

Ввод:

{
  "job_id": "37285107"
}

4. submit_slurm_job

Отправка скрипта Slurm.

Поле ввода — script_content, просто вставьте текст многострочного скрипта, не добавляя дополнительных кавычек.

5. diagnose_error

Структурированная классификация ошибок на основе текста лога.

Ввод:

{
  "log_content": "ModuleNotFoundError: No module named 'mpi4py'"
}

6. job_log://{job_id}

Чтение лога стандартного вывода задания через шаблон ресурса.

Механизмы безопасности

Перед отправкой выполняется проверка через ActionGuard, которая по умолчанию блокирует типичные опасные команды, например:

  • rm -rf /

  • mkfs

  • Прямая запись в /dev/*

  • shutdown / reboot

  • sudo

Это лишь первый уровень защиты. В производственной среде все равно рекомендуется:

  • Использовать SSH-аккаунт с низкими привилегиями

  • Ограничивать удаленную рабочую директорию

  • Сохранять логи операций

  • Не добавлять приватные ключи в репозиторий

Тестирование

Запуск минимального теста:

python -m unittest tests.test_mcp_server

Текущее минимальное тестирование охватывает:

  • Проверку первой строки скрипта

  • Нормализацию пакетных скриптов

  • Логику классификации ошибок

  • Парсинг разделов

  • Парсинг статуса заданий

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables SSH remote access to servers through Claude, allowing users to execute commands, transfer files via SFTP, and manage multiple remote connections using natural language.
    12
    8
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude Code to interact with a TACC or SLURM HPC cluster for bioinformatics pipelines, allowing job management, log reading, file browsing, remote script execution, and job submission through natural language.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage SLURM HPC clusters via SSH. Supports job submission, resource monitoring, queue management, and file operations.
    7 npm
    4
    -