dtu-hpc
The dtu-hpc server provides secure, audited access to the DTU HPC LSF cluster for job submission, monitoring, and management, along with account and file operations. It includes safety features like resource limits, jailed file access, and audit logging.
Connection and account: Check control plane status (
hpc_status), list available operations (hpc_operations), view user identity/group/quotas (hpc_whoami,hpc_quota).Queue and GPU discovery: List queues (
hpc_queues), view GPU entitlements and caps (hpc_gpu_entitlement), check current GPU node availability and models per queue (hpc_gpu_nodes,hpc_gpu_models).Project file management: Upload project files with size limits (
hpc_sync_project) and fetch logs or text files (hpc_fetch_log).Job submission: Render job scripts for preview (
hpc_render_job), submit single jobs (hpc_submit_run) or checkpoint-resumed chains (hpc_submit_chain) with resource caps and user confirmation for high-threshold jobs.Job monitoring and diagnosis: List user's jobs including finished ones (
hpc_jobs), get detailed status/history (hpc_job_status,hpc_job_history), see pending reasons (hpc_pending_reason), and check CPU/memory efficiency (hpc_job_efficiency).Job control and auditing: Cancel jobs (
hpc_cancel) and review an audit log of all actions (hpc_audit).
Click on "Install 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., "@dtu-hpcSubmit a training job on 2 A100 GPUs for 4 hours."
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.
dtu-hpc
Let your coding agent run your DTU HPC jobs — without ever giving it a shell.
dtu-hpc connects MCP-capable agents (Claude Code, Codex, and others) to the
DTU Computing Center cluster through a small, audited set of operations. You
authenticate once a day; your agent submits, monitors, chains, and diagnoses
LSF jobs while you direct the research. No SSH terminal, no Cisco VPN in your
daily loop, and no interactive shell on the login node — every action the agent
can take is a named, argument-validated operation under limits it cannot
raise.
Why not just give the agent SSH?
Because your student account is personally accountable for everything that happens on a shared, rationed cluster — and agents are already being used over raw SSH today, with no guardrails at all. This tool is the safer path for something that is happening anyway:
No shell on the login node. Agents choose from named operations (submit job, check queue, fetch logs). Every argument is validated. There is no "run this command", and agents never supply script text — they send a spec, and the trusted daemon writes the job script itself.
Jailed writes. Agents can only touch approved project folders, with paths re-checked after the server resolves them, so a planted symlink can't escape. Your dotfiles and SSH keys are structurally out of reach.
Hard limits the agent cannot raise. GPUs, cores, memory, walltime, chain length, concurrent jobs, and submissions per hour, enforced inside the credentialed daemon from a file outside your project. Raising one takes a human edit plus a restart.
Audit trail. Every action — including every denied one — is logged locally. You can always answer "what did my agent do on the cluster?"
One kill switch. All access flows through one daemon on your laptop. Stop it and every agent loses cluster access instantly. (Jobs already queued keep running on DTU —
dtu-hpc downtells you which, so you can cancel them first if that's what you meant.)Nothing installed on the cluster. DCC sees ordinary SSH sessions and ordinary, well-formed job submissions. No daemons on login nodes.
No telemetry. This tool never phones home. Your usage data is yours.
Related MCP server: slurm_MCP
What your agent gets good at
DCC runs LSF, which most tutorials (and most LLMs) get wrong — they emit SLURM syntax the cluster rejects, or omit the flags that silently kill jobs at 15 minutes and 1 GB of RAM. The templates here encode the cluster's real rules, including the one that matters most for ML work:
GPU jobs die at 24 hours. dtu-hpc treats longer runs as first-class:
hpc_submit_chain splits a 72-hour training run into three checkpointed,
dependency-linked segments that resume from each other, with LSF signalling
your trainer ten minutes before each kill so it can flush a checkpoint.
Architecture
Claude Code / Codex agents: disposable, hold no secrets
│ stdio (MCP)
dtu-hpc MCP server stateless adapter
│ loopback + per-run token
dtuhpcd you type your password HERE, once — nowhere else
│ one persistent SSH session
login.hpc.dtu.dk → LSF cluster sees a normal user sessionSetup (once)
# Not on PyPI yet — install from source:
git clone https://github.com/PV-Bhat/dtu-hpc-mcp && cd dtu-hpc-mcp
python -m venv .venv && .venv/Scripts/activate # Linux/macOS: source .venv/bin/activate
pip install -e .
dtu-hpc init # key setup + cluster install + agent config snippetsinit walks you through installing an SSH key on the cluster (you type your
DTU password into OpenSSH's own prompt — this tool never sees it). After that,
the VPN is no longer needed for cluster work.
Daily use
dtu-hpc up # start the control plane, authenticate once
dtu-hpc status # check it
dtu-hpc audit # see everything your agents did
dtu-hpc down # revoke all agent accessThen talk to your agent:
"Run the GRPO config on 2 A100s with a 4-hour budget, and chase it — if it OOMs, halve the batch size and resubmit."
What this does NOT protect against
Being straight about the boundary, because the audience is students staking a real account: a batch job is arbitrary code running as you on a compute node. That is what a batch job is on every cluster. This tool bounds what gets submitted — resources, destinations, rate — and records all of it. It does not sandbox the code inside your job, and an agent that can submit jobs effectively has your Unix account on the compute nodes. The audit log is a plain file, so it is evidence against a confused agent, not a hostile one. Run this with agents you'd trust with your cluster account, and read the log.
Safety model in one paragraph
The daemon holds the only credential and the only connection. Agents reach it through a token-gated loopback socket and can only invoke allowlisted operations with regex-validated arguments. Writes are confined to declared project roots, re-validated after the server resolves symlinks. Job scripts are rendered by the daemon from a spec — agents never supply shell — and are checked against ceilings held outside the project tree, so a profile an agent can edit cannot raise them. Every operation, parameter, and denial is appended to a local audit log. Killing one process revokes access.
Status
Early but real: read, sync, submit, and chain paths all work and have been exercised against DCC. Five independent code reviews (2026-07) found and fixed a class of bugs where resource limits were enforced in the wrong process; see DESIGN.md §2 for what changed and why.
Known gaps, honestly: there is no durable run ledger yet, so a run's story lives across a manifest, the scheduler, and logs rather than one place. Human approval above thresholds is currently asserted by the agent rather than confirmed through a trusted channel. Artifact fetch (pulling results back) isn't built. There are no tests yet.
Issues and PRs welcome — especially from other DTU students. If you run a
cluster and want a backend for it, lsf.py is the template to copy.
For DCC / HPC support staff
This tool submits standard bsub jobs from a standard SSH session and runs
nothing on your infrastructure. It exists to make agent-assisted usage more
conservative than manual usage: validated scripts, capped resources, no
login-node compute, full local audit. We'd welcome your review of the
operation allowlist — open an issue or reach out.
Troubleshooting
Login failing? Read docs/AUTH.md first. The short version: outside the DTU VPN the cluster requires an SSH key and your password, so a missing key looks exactly like a wrong password. Turn on the VPN, start the daemon, press Enter at the passphrase prompt, type your DTU password.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityBmaintenanceAn MCP server that enables LLMs to execute Python code on GPU-accelerated compute nodes within SLURM-managed HPC environments. It bridges local clients to remote clusters by launching JupyterLab sessions via SLURM jobs to facilitate high-performance notebook-based computation.Last updated7
- Alicense-qualityCmaintenanceEnables interaction with Slurm HPC clusters via SSH, allowing job submission, monitoring, and error diagnosis through MCP clients like Claude Desktop.Last updated6MIT
- Alicense-qualityCmaintenanceProvides MCP tools for high-performance computing (HPC) and converged computing, enabling agentic interactions with HPC resources and workflows.Last updated6MIT
- Alicense-qualityAmaintenanceEnables MCP-compatible clients to connect to Swarm, providing access to Space memory, work coordination, artifacts, evaluations, context packs, and agent execution tools.Last updated28Apache 2.0
Related MCP Connectors
Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.
Remote MCP server for XDaLa workflow preparation on XGR.Network.
Workflow diagnostics, capability routing, and x402 settlement for MCP-compatible agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PV-Bhat/dtu-hpc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server