loading…
Search for a command to run...
loading…
Enables interaction with Slurm HPC clusters via SSH, allowing job submission, monitoring, and error diagnosis through MCP clients like Claude Desktop.
Enables interaction with Slurm HPC clusters via SSH, allowing job submission, monitoring, and error diagnosis through MCP clients like Claude Desktop.
一个基于 Python 的 MCP Server,用于通过 SSH 连接 Slurm 超算集群,并向 Claude Desktop、Claude Code、Cursor、MCP Inspector 等客户端暴露可调用的集群能力。
当前版本已经完成真实链路验证:
sbatch 作业当前提供以下 MCP 能力:
list_jobs
查看当前作业队列list_partitions
查看分区信息get_job_status
查询指定作业状态、退出码、原因、日志路径submit_slurm_job
上传并提交 Slurm 脚本diagnose_error
对日志做结构化错误分类job_log://{job_id}
读取作业标准输出日志mcp[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_HOSTSLURM_SSH_USERNAME可选:
SLURM_SSH_PORT,默认 22SLURM_SSH_KEY_PATHSLURM_SSH_PASSWORDSLURM_SSH_ALLOW_UNKNOWN_HOSTS,默认 falseSLURM_REMOTE_WORKDIR,默认 /tmp/mcp-slurmSLURM_CONNECT_TIMEOUT,默认 15SLURM_COMMAND_TIMEOUT,默认 60SLURM_LOG_MAX_BYTES,默认 200000MCP_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_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"
}
}
}
}
Windows 下 Claude Desktop 常见配置位置:
%APPDATA%\Claude\claude_desktop_config.json
请参考:
mcp.inspector.template.json如果你直接在 Inspector 里手工配置:
Command 填 Python 解释器路径Arguments 填 mcp_hpc_server.py 路径SLURM_SSH_* 相关项参考:
examples/example_job.slurm提交时请根据你的集群实际情况修改:
list_jobs查看当前队列中的作业。
输入:
{
"user": "optional"
}
list_partitions查看分区状态。
输入:
{}
get_job_status查询指定作业状态。
输入:
{
"job_id": "37285107"
}
submit_slurm_job提交 Slurm 脚本。
输入字段是 script_content,直接填多行脚本正文,不要额外包引号。
diagnose_error对日志文本进行结构化故障分类。
输入:
{
"log_content": "ModuleNotFoundError: No module named 'mpi4py'"
}
job_log://{job_id}通过资源模板读取作业标准输出日志。
提交前会经过 ActionGuard 检查,默认拦截典型危险命令,例如:
rm -rf /mkfs/dev/* 的直接写入shutdown / rebootsudo这只是第一层防护。生产环境仍建议:
运行最小测试:
python -m unittest tests.test_mcp_server
当前最小测试覆盖:
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"slurm-mcp": {
"command": "npx",
"args": []
}
}
}