clu
clu is an AI agent layer providing unified management over Slurm HPC clusters and SSH instances.
Remote Execution & Automation: Execute shell commands (
exec), transfer files (upload,download), and manage SSH connections (including proxy jumps) without exposing private keys.Resource Management (Slurm): Query cluster status (
status), check resource availability/free space (resources), submit batch jobs (submit), and cancel tasks (cancel).Interactive Job Allocation: Securely reserve compute resources (
alloc) and enter a dedicated remote shell (viaattach) for coding or running processes, ensuring sessions persist through network drops.Session & Workflow Tracking: Monitor running jobs (
jobs), list active sessions (session_list), and use a local ledger (ledger_query) to maintain a historical record of all cluster interactions.
Manages persistent tmux-hosted sessions over SSH, allowing AI agents to maintain and interact with long-running remote terminal sessions through a shared connection pool.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@clu show me the status and logs for my latest slurm job"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
clu
简体中文 | English
SSH 会话保持/管理 + Slurm 集群与普通服务器的 AI agent 能力层。 面向高校师生的单用户工具:任意 MCP 客户端(Claude Code、Codex 等)与
cluCLI 共享同一 daemon。
更快、更省:结构化 MCP 工具让 agent 一步拿到答案,而不是多轮手拼 ssh/sbatch 命令。 实测 4 个集群任务(Claude Code CLI + deepseek-v4-flash):token 仅 39%、耗时 44%、轮次 43% (对比裸 ssh 基线,见实测对比)。
1. 它解决什么问题
AI 直连集群:在 Claude Code 里说"看看队列""抢张 A100""传数据集上去", clu 经你自己的 SSH 通道完成,无需把密钥交给任何云服务
会话不丢:交互式资源(salloc)跑在远端 tmux 里,断网/合盖不丢 allocation
连接复用:本地 daemon 持有长连池,命令秒回、断线自动重连
留痕:每次执行写 SQLite,跨会话可查"上次那个作业怎么样了"
Related MCP server: SSH MCP Server
实测对比:更快、更省(2026-10-23)
真实会话实测:Claude Code CLI 2.1.309 + 模型 deepseek-v4-flash。
4 个测试任务(每任务一次 claude -p 单轮会话,--max-turns 12):
查看
cluster的gpu-a100分区空闲 GPU 卡数,以及哪些节点有空闲列出我当前的全部作业和状态
在
xxx分区提交一个测试作业(1 核 CPU、5 分钟、sleep 240),返回 job id查看该作业的状态与输出日志,然后取消它
成本按 token 计(输入 + 输出 + 缓存读,与中转计费口径一致)。



指标 | clu | baseline | 比例 |
总 token | 279,816 | 722,679 | 39% |
总墙钟 | 81s | 185s | 44% |
总轮次 | 18 | 42 | 43% |
正确性:两组 4/4 全部正确;提交的作业均真实存在(job id 经 squeue 与 clu 台账双向核对), 取消操作均生效。
为什么更快更省:resources、jobs、submit 等工具把"取原始数据 → 解析 → 拼命令"
收进一次调用——agent 不再需要 sinfo/scontrol/squeue 多轮试探。轮次从 42 降到 18,
token 从 72.3 万降到 28.0 万;MCP 工具 schema 本身只占约 3.9k tokens,远低于多轮命令的成本。
说明:单轮小样本,绝对数字会受模型与中转波动影响;相对差距(2–3 倍)在多次运行中稳定。
2. 安装
方式一:单文件二进制(推荐,无需 Python)
# macOS / Linux:下载对应平台二进制到 ~/.local/bin
curl -fsSL https://raw.githubusercontent.com/QiandingHuang666/clu-ssh/main/packaging/install.sh | sh
# 指定版本或目录:
# CLU_VERSION=v0.1.6 CLU_PREFIX=/usr/local/bin sh packaging/install.sh# Windows(PowerShell)
irm https://raw.githubusercontent.com/QiandingHuang666/clu-ssh/main/packaging/install.ps1 | iexReleases 页提供各平台产物:clu-<版本>-<系统>-<架构>.tar.gz(Windows 为 .zip)
与同名 .sha256 校验文件。clu-mcp 与 clu 是同一个二进制(按 argv[0] 分派)。
方式二:uv / pipx(需要 Python ≥ 3.11)
uv tool install clu-ssh
# 或 pipx install clu-ssh方式三:源码开发
git clone https://github.com/QiandingHuang666/clu-ssh
cd clu-ssh && uv sync
alias clu='uv run --project /path/to/clu-ssh clu'要求:SSH 公钥认证(不支持密码登录的连接)。Windows 上 clu attach 需要系统
OpenSSH 客户端。
接入 MCP 客户端
clu-mcp 是标准 stdio MCP server(服务器名 clu),启动时自动拉起本地 daemon,
无需任何环境变量。
Claude Code
claude mcp add --scope user clu -- clu-mcp # 用户级
claude mcp add clu -- clu-mcp # 项目级
# 源码安装时用绝对路径:/path/to/clu-ssh/.venv/bin/clu-mcpCodex CLI —— 编辑 ~/.codex/config.toml:
[mcp_servers.clu]
command = "clu-mcp"
args = []其他 MCP 客户端(Claude Desktop / Cursor / Cline / Windsurf 等)—— 在 MCP 配置中加入:
{
"mcpServers": {
"clu": { "command": "clu-mcp", "args": [] }
}
}常见位置:Claude Desktop(macOS ~/Library/Application Support/Claude/claude_desktop_config.json,
Windows %APPDATA%\Claude\claude_desktop_config.json)、Cursor(~/.cursor/mcp.json 或项目 .cursor/mcp.json);
Cline / Windsurf 在各自 MCP 设置界面添加同一条目。
接入后先执行 clu connection import 配置连接,可用工具见 §6 MCP 工具手册。
3. 五分钟上手
3.1 前置:配置 SSH 公钥登录(首次使用)
clu 只支持公钥认证,不保存任何密码。如果这台机器还没配过公钥登录,先做这一步:
# ① 看有没有现成密钥(有 .pub 就跳过生成)
ls ~/.ssh/id_ed25519.pub 2>/dev/null
# ② 没有就生成一对(一路回车即可;建议设置口令,交给 ssh-agent 记住)
ssh-keygen -t ed25519 -C "you@example.com"
# ③ 把公钥装到服务器(会提示输入一次服务器密码)
ssh-copy-id -p 22 you@hpc.example.edu.cn
# ④ 验证:这次应该不再询问密码
ssh -p 22 you@hpc.example.edu.cn hostnameWindows 没有 ssh-copy-id 时,在 PowerShell 里等价操作:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh -p 22 you@hpc.example.edu.cn "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"可选但推荐:把主机写进 ~/.ssh/config,以后 ssh gzu 就能连:
Host gzu
HostName hpc.example.edu.cn
Port 22
User you
IdentityFile ~/.ssh/id_ed255193.2 让 clu 认识你的机器
# 有 ~/.ssh/config:一次性导入(副本,只导公钥可达条目,自动解析 ProxyJump)
clu connection import
# 没有 ssh config:直接添加
clu connection add gzu --host hpc.example.edu.cn --user you --port 22
# Slurm 集群要标成 cluster(import 默认按 IP 启发式标 instance/local)
clu connection add gzu --host hpc.example.edu.cn --user you --port 22 --kind cluster
# 也可以编辑 ~/.config/clu/connections.toml 修改已有条目的 kind3.3 试一下
# 拉起 daemon(此后任何命令都会自动 ensure,通常不用手动)
clu server ensure
# 经连接池真连一次
clu connection check gzu
# 跑一条远程命令
clu exec gzu "squeue -u $USER | head"4. 核心概念
概念 | 说明 |
daemon | 本机常驻进程,持有 SSH 连接池、tmux 会话、转发与留痕。缺席时任意命令自动拉起( |
连接 |
|
跳板 | 连接可设 |
profile | 学校/集群定制(公共资源目录、重操作名单、抢占分区),挂在连接上,代码零硬编码 |
留痕 | 每次执行写 |
known_hosts | 首次连接记录主机密钥,之后严格校验,变更即拒绝(防中间人) |
5. CLI 参考
5.1 速查
clu server ensure | status | stop
clu connection import | add | remove | list | check
clu exec LABEL COMMAND...
clu resources LABEL [过滤]
clu alloc LABEL [资源]
clu attach LABEL PURPOSE
clu jobs LABEL [--states RUNNING,PENDING] 实时队列(squeue 实时查询)
clu submit LABEL [-f 脚本 | --script 内容 | stdin]
clu job list | log
clu session list | release
clu forward add | list | remove5.2 逐条说明
连接
clu connection import [--config ~/.ssh/config] [--overwrite] # 一次性导入公钥条目
clu connection add gzu --host hpc.example.edu.cn --user you --kind cluster \
[--port 22] [--identity ~/.ssh/id_ed25519] [--proxy 跳板label] [--profile 名]
clu connection remove gzu
clu connection list # 直读配置文件 + daemon 在线时附池状态
clu connection check gzu # 经连接池真连一次并执行 true远程执行
clu exec gzu "squeue -u $USER" # 受安全门约束(危险命令/登录节点重操作会拒绝)
clu exec gzu "df -h" --timeout 30资源查询
clu resources gzu # 分区聚合(紧凑视图)
clu resources gzu --partition gpu-a100 # 指定分区
clu resources gzu --cpu-free # 只看有空闲 CPU 的节点
clu resources gzu --cpu-gpu-free --gpu-only # CPU+GPU 都空闲,且只看 GPU 节点
clu resources gzu --fully-idle # CPU 与 GPU 全空闲
clu resources gzu --nodes # 附节点明细表抢占 / 交互式资源
clu alloc gzu # 默认 GPU 优先,无 GPU 空闲回退 CPU
clu alloc gzu --gpu --gpus 2 --cpus 16 # 指定卡数与核数
clu alloc gzu --cpu --cpus 8 # 只抢 CPU
clu alloc gzu -p gpu-a100-8card --purpose train --wait 60
# 输出 granted 后:
clu attach gzu train # 进入计算节点 shell(exit 即释放)
clu session list gzu # 查看托管会话(--deep 全量扫描所有连接)
clu session release gzu train # 释放单个
clu session release gzu --all # 释放该连接全部抢占选择逻辑:分区按单节点可满足度排名(GPU 数/CPU 核数都够才算),
提交被弹回时自动轮换候选分区;默认核数 = min(节点总核÷节点总卡, 节点空闲核)。
批处理作业
# 从文件提交(推荐)
clu submit gzu -f train.slurm --name train -p gpu-a100 --gpus 1 -c 16 -t 4:00:00
# 从标准输入提交
echo -e '#!/bin/bash\necho hi' | clu submit gzu --name echo-test -p cpu56c256g -c 1 -t 0:05:00
# 从字面量提交
clu submit gzu --script "#!/bin/bash
hostname
" --name probe
clu jobs gzu # 实时队列(当前用户全部作业)
clu jobs gzu --states RUNNING # 只看运行中
clu job list gzu # 台账(脚本路径/资源/节点/状态/提交时间)
clu job list gzu --active # 只看非终态
clu job log gzu 12345 # 读台账作业的 stdout/stderr(--tail N)提交行为:
脚本与日志落在远端
<家目录>/.clu/jobs/<连接>/<名称>-<时间戳>-<随机>.sh|-%j.out|-%j.err资源参数以
#SBATCH指令插在 shebang 之后;脚本中已声明的同类指令不被覆盖脚本内容、路径、资源、状态写入本地
jobs台账;daemon 每 60s 核对状态 (squeue 实时,已结束的用 sacct 补终态),job list看到的就是最近核对结果安全门同样作用于脚本内容(危险命令拒绝)
端口转发
clu forward add gzu 10.0.0.5 8888 --local-port 18888
clu forward list
clu forward remove fwd-16. MCP 工具手册
clu-mcp 提供 16 个工具;○ 为只读工具(可在客户端权限设置中配置免确认)。
所有写操作在 daemon 端经过安全门(见 §8)。
工具 | 说明 | 关键参数 |
○ | 连接与连接池健康状态 | — |
| 远程执行单条命令(安全门在 server 端强制生效) |
|
○ | 当前用户的作业列表(实时 squeue) |
|
○ | 分区与队列概览 |
|
○ | 资源余量:每分区 CPU/GPU 总量/已占/空闲与节点数(单次往返,AllocTRES 权威值); |
|
| 提交作业:脚本与 stdout/stderr 统一落远端 |
|
| 取消单个作业 |
|
○ | 作业台账:脚本路径与内容、申请资源、节点、日志路径、最近核对状态 |
|
○ | 作业 stdout(自动定位路径并 tail) |
|
| 抢占接口(自动选择,无需先查询):缺省 GPU 优先、无空闲 GPU 回退 CPU; |
|
○ | 托管会话列表(tmux / pty-daemon / setsid) |
|
○ | 会话详情:状态、job/节点、日志尾部 |
|
| 释放会话(资源归还) |
|
| SFTP 传输,双侧父目录自动创建 |
|
○ | 检索历史执行(跨会话记忆) |
|
7. 典型场景
查队列 / 提交 / 看日志(对 Claude Code 说,或自己跑):
"用 clu 看看 gzu 的队列和 GPU 空闲情况" "把这个训练脚本提交到 gzu 的 gpu 分区,2 张卡" "job 12345 的日志尾部 100 行"
抢卡 / 抢资源(一个接口,自动选择):
"用 clu 抢一张卡" →
alloc()(默认 GPU 优先,无空闲 GPU 自动回退 CPU) "抢 2 张 A100" →alloc(gpus=2);"抢 8 核 CPU" →alloc(resource="cpu", cpus=8)分区自动选(单节点余量排名);显式partition=则直用。 granted 后clu attach cluster-r <purpose>直接落计算节点 shell,exit 即释放; 用完 "释放 xxx 会话"(session_release)。忙分区提交被弹回时自动轮换候选分区重试。
断线续传场景:alloc 会话在远端 tmux 里,笔记本断网、换地方、
重启 Claude Code 都不影响;clu session list 随时可查。
提交批处理作业:
"用 clu 把这个脚本提交到 gpu 分区,2 张卡"
submit(connection="cluster-r", script=..., name="train", partition="gpu-a100", gpus=1, cpus=16)或命令行:clu submit cluster-r -f train.slurm -p gpu-a100 --gpus 1 -c 16脚本与日志落在远端
~/.clu/jobs/<连接>/;clu job list看状态(daemon 每 60s 自动核对),clu job log cluster-r <job_id>读 stdout/stderr。
传文件:
"把 ./data.csv 上传到 gzu 的
/data/ 下" / "把 gzu:/result.tar 下载到 ./out/"
端口转发(访问集群内 Web 服务):
clu forward add gzu 10.0.0.5 8888 --local-port 18888 # 打开 http://127.0.0.1:18888
clu forward list && clu forward remove fwd-18. 安全模型
两层(DESIGN §8):
Claude Code 工具权限(主):只读工具与写工具分开声明,按需配免确认白名单
server 端硬规则(不可绕过,任何客户端生效):
危险黑名单:递归删除根/系统目录/家目录、
mkfs、dd of=/dev/*、shutdown/reboot、scancel --all、fork 炸弹等 → 直接拒绝登录节点重操作拦截(profile 设
heavy_guard = false可关闭):在cluster连接上跑训练/编译/装环境 (torchrun、make -j、pip install等,profile 可增删)→ 拒绝并建议 submit/alloc
认证仅公钥,复用 ssh-agent 与 ~/.ssh;clu 不存储任何密钥。
9. 目录与配置
路径 | 内容 |
| 连接与 profile(可手改,保留注释) |
| 主机密钥(accept-new) |
| SQLite:执行留痕 + 会话登记 + 作业台账 |
| daemon socket 与日志 |
| Windows 的配置 / 数据 / 运行时目录 |
Windows 传输 | daemon 监听 127.0.0.1 随机端口, |
环境变量 CLU_CONFIG_DIR / CLU_DATA_DIR / CLU_RUNTIME_DIR 可重定位(测试用)。
9.1 数据库表(ledger.sqlite3)
exec_records —— 执行流水(ledger_query 检索)
字段 | 说明 |
| 自增主键 / UTC ISO8601 时间 |
| 连接 label |
| exec / submit / alloc / release / cancel / upload / download / forward |
| 命令或脚本摘要 |
| 退出码 / 耗时 |
| 关联的 slurm 作业(可空) |
| 一行摘要 |
sessions —— 托管会话登记 (label, purpose) 主键
字段 | 说明 |
| 连接 / 用途名(tmux 会话 |
| 分配到的作业与节点、分区 |
| 申请资源 |
| pending / granted(连接不可达时列表标注 stale) |
| 最近一次核对时间 |
jobs —— 批处理作业台账 (connection, job_id) 主键
字段 | 说明 |
| 作业名 |
| 远端脚本绝对路径 / 完整脚本内容 |
| 申请资源 |
| 实际分配节点(squeue/sacct 核对) |
| 日志绝对路径( |
| PENDING/RUNNING/COMPLETED/FAILED/CANCELLED/TIMEOUT/... |
| sacct 退出码(如 |
| 提交 / 最近核对时间 |
远端目录:~/.clu/jobs/<连接>/(脚本与日志)、~/.clu/alloc/<连接>/<purpose>.log(salloc 日志)。
10. 故障排查
现象 | 处理 |
|
|
连接处于退避期( | 刚失败过,等提示秒数;或 |
| 主机密钥变了。确认是重装系统等正当原因后,删掉 |
salloc 后 session 一直 pending | 正常排队; |
salloc 报 "--gres=gpu:N must be input" | 集群提交插件强制经典语法——clu 已内置 |
attach 后 hostname 是登录节点 | 已修复:clu 用 |
attach 后无提示符/配置未生效 | 已修复: |
转发不工作 | 转发绑定在连接上,连接断开后需重新 |
| 正常降级:该机器关机/网络不通,仅跳过其会话列举,其余照常(多连接并行探测,6s 上限) |
squeue 输出解析异常 | 各校魔改 Slurm 差异大——把 |
空闲 GPU 数量可疑 |
|
agent 循环重试同一命令 | 熔断保护:相同命令 120s 内执行满 5 次返回 |
远端没有 tmux |
|
11. 已知边界(v1)
文件传输为 SFTP 单文件;目录增量同步(rsync)在 v1.1
跳板仅单级(ProxyJump 一跳);多级链在路线图
转发仅本地
-L;SOCKS/远程-R在路线图平台 macOS + Linux + Windows(Windows 传输为 127.0.0.1 TCP + 一次性 token,见 §9 运行时目录的
daemon.port)密码认证的连接不支持(先
ssh-copy-id配好公钥)
Available Tools
17 toolsallocA
抢占资源并直接执行(绝不只返回命令):tmux 内 salloc + srun bash, 分配后 attach 即入计算节点 shell,断线不丢资源。同名 purpose 已有活会话时返回 state="exists"(附 job 与接入/释放指引)——不会静默复用旧会话。
抢占选择自动完成(无需先查询):resource 缺省 = GPU 优先、无空闲 GPU 回退 CPU; resource=gpu / cpu 只抢该类(无则失败并附当前余量摘要); partition 显式指定则直接使用。返回 granted/pending/failed 与 job_id/node。
Args: connection: cluster 连接 label purpose: 会话用途名(如 train-a100),用于 tmux 命名与检索 resource: gpu | cpu;缺省为自动(GPU 优先回退 CPU) gpus: GPU 卡数(默认 1;resource 含 gpu 时生效) cpus: CPU 核数(cpu 资源必给则默认 4;也可与 GPU 同时指定) partition: 显式分区(跳过自动选择) wait: 等待授予秒数(超时会话保留,session_info 随时查)
Inputs: connection (required), cpus, gpus, wait, +3 more. Returns: object
cancelA
取消指定作业(scancel 单个作业)。scancel --all 被安全门禁止。
Inputs: job_id (required), connection (required). Returns: object
connection_listARead-onlyIdempotent
列出全部受管连接及连接池健康状态(label/kind/host/state)。
Inputs: no named parameters. Returns: object
downloadC
下载远端文件到本地(SFTP,本地父目录自动创建)。
Inputs: connection (required), local_path (required), remote_path (required). Returns: object
execA
在远程连接上执行单条 shell 命令。危险命令与集群登录节点重操作会被服务端拒绝。
Args: connection: 连接 label(见 connection_list) command: 要执行的 shell 命令 timeout: 超时秒数(默认 60)
Inputs: command (required), connection (required), timeout. Returns: object
job_listCRead-onlyIdempotent
查询本地作业台账:脚本路径与内容、申请资源、节点、stdout/stderr 路径、 最近一次核对的状态(daemon 定期刷新)。
Inputs: connection, active_only. Returns: object
jobsBRead-onlyIdempotent
列出 Slurm 集群上当前用户的作业(job_id/状态/分区/耗时/资源,结构化)。
Inputs: connection (required), states. Returns: object
ledger_queryBRead-onlyIdempotent
检索执行留痕(跨会话记忆):按连接/类型/关键词/作业号过滤,时间倒序。
Inputs: kind, limit, since, job_id, +2 more. Returns: object
logBRead-onlyIdempotent
读取作业 stdout(自动定位 StdOut 路径并 tail)。
Inputs: job_id (required), connection (required), tail. Returns: object
resourcesARead-onlyIdempotent
查询集群资源余量:每分区 CPU/GPU 的总量/已占/空闲与节点数。
一开始就限定查看范围(agent 与人类同款口径): flt=cpu_free(有空闲 CPU 的节点)、flt=cpu_gpu_free(CPU 和 GPU 都有空闲)、 flt=fully_idle(CPU 与 GPU 全空闲);gpu_only=true 只看有 GPU 的节点(可叠加)。 partition 限定分区。默认紧凑(分区聚合);带任一过滤或 include_nodes 才返回节点明细。不要自己拼 sinfo/scontrol。
Args: connection: cluster 连接 label partition: 只看该分区 flt: cpu_free | cpu_gpu_free | fully_idle gpu_only: 只看有 GPU 的节点(与其他条件叠加) include_nodes: 返回全部节点明细(大集群建议配合过滤)
Inputs: connection (required), flt, gpu_only, partition, +1 more. Returns: object
session_infoBRead-onlyIdempotent
查看某个托管会话详情:分配状态、job_id、节点、日志尾部。
Inputs: purpose (required), connection (required). Returns: object
session_listARead-onlyIdempotent
列出 tmux 托管会话(仅 alloc 抢占产生的资源会话;普通查询任务请用 exec)。
要求远端装有 tmux;机器上没有 tmux 时列表为空或 alloc 会明确报错。
Inputs: connection. Returns: object
session_releaseB
释放托管会话:杀 tmux → salloc 退出 → 资源归还集群。
Inputs: purpose (required), connection (required). Returns: object
session_startA
在任意连接(集群/服务器)上开一个保活托管会话。
后端自动选择:远端有 tmux → 交互会话(attach 可回);无 tmux → 部署 pty-daemon 静态守护(可 attach,远端零依赖);部署不可行且给了 command → setsid 后台保活(不可 attach,仅日志)。普通查询任务不要用 本工具,直接用 exec。
Args: connection: 连接 label purpose: 会话用途名(唯一标识,重复会报 exists 或复用) backend: 显式指定 tmux | pty-daemon | setsid(缺省自动) command: setsid 后端必填的后台命令
Inputs: purpose (required), connection (required), backend, command. Returns: object
statusBRead-onlyIdempotent
Slurm 集群概览:分区(节点/CPU/内存/GPU)与队列状态计数。
Inputs: connection (required). Returns: object
submitA
提交 Slurm 批处理作业:脚本写入 ~/.clu/jobs/<连接>/ 后 sbatch。
stdout/stderr 默认重定向到同目录 -<时间>-%j.out/.err(脚本自带 #SBATCH -o/-e 时尊重脚本);脚本内容、路径、资源与状态记入本地 jobs 台账。
Args: connection: cluster 连接 label script: sbatch 脚本内容(含 shebang) name: 作业名(默认 job) partition: 分区(脚本未声明时注入) nodes: 节点数(脚本未声明时注入) cpus: 每任务 CPU 核数 gpus: GPU 卡数(注入 --gres=gpu:N) time_limit: 时限(如 4:00:00)
Inputs: script (required), connection (required), cpus, gpus, +4 more. Returns: object
uploadB
上传本地文件到远端(SFTP,远端父目录自动创建)。
Inputs: connection (required), local_path (required), remote_path (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Several query-oriented tools overlap conceptually: status/resources both describe cluster capacity, while jobs/job_list/ledger_query all surface job-related records at different layers. Descriptions clarify the distinctions, but names like status, jobs, and job_list are not self-evidently distinct without reading.
The set mixes bare verbs (submit, alloc, exec, cancel, upload), noun-like tools (status, log, jobs, resources), and noun_verb compounds (job_list, session_start, ledger_query). The conventions are readable but not predictable as a single pattern.
17 tools is slightly above the ideal compact range but still reasonable for a Slurm cluster/session/file-transfer management surface. The tools group into coherent areas: job lifecycle, resource inspection, sessions, files, and connections.
The surface covers core job submission, listing, logging, cancellation, resource inspection, session management, file transfer, and connection listing. Minor gaps include connection lifecycle management and richer Slurm accounting/history, but core workflows are well supported.
Maintenance
Related MCP Connectors
On-demand GPU nodes for agents: create nodes, run commands, and submit jobs, billed by the minute.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Context and control for any AI. Agent identity, scoped access, and proof across tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to establish and manage persistent SSH connections to remote hosts for executing commands. Supports SSH config files, multi-host management, and automatic reconnection with thread-safe concurrent operations.1554 PyPI11MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to securely execute commands, transfer files, and manage port forwarding on remote servers via SSH.158 npm38Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage SLURM HPC clusters via SSH. Supports job submission, resource monitoring, queue management, and file operations.8 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