Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Fail-closed deterministic checks and hash-chained receipts for AI agent outputs via MCP.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"haltproof": {
"command": "uvx",
"args": [
"haltproof-cli",
"haltproof",
"mcp-server"
]
}
}
}Run this in your terminal
claude mcp add haltproof -- uvx haltproof-cli haltproof mcp-serverPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"haltproof": {
"command": "uvx",
"args": [
"haltproof-cli",
"haltproof",
"mcp-server"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"haltproof": {
"type": "stdio",
"command": "uvx",
"args": [
"haltproof-cli",
"haltproof",
"mcp-server"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account RudrenduPaul, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.3) reached the registry 3 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, First Sale Scout
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Playbooks and a 14-day checklist for founders winning their first paying customers.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Emergency-shutdown orchestration for Slurm, Kubernetes, and IPMI clusters, with an Ed25519-signed, hash-chained attestation record of exactly what ran.
Signed, dry-run-by-default shutdown orchestration for Slurm, Kubernetes, and IPMI clusters, with a tamper-evident audit trail.
HaltProof is an emergency-shutdown orchestration and cryptographic audit-proof layer for compute clusters. It does not implement a new low-level shutdown mechanism. It coordinates cluster primitives you already trust (Slurm, Kubernetes, IPMI/BMC) and produces a signed, tamper-evident record of exactly what was targeted, what ran, and who authorized it.
pip install haltproof-cli
(Full install options, including the npm wrapper, are in Install below.)
Operators already have the tools to drain a Slurm partition, cordon a Kubernetes node pool, or power-fence a physical host over IPMI. What's usually missing is:
HaltProof is that layer. It calls out to scontrol, kubectl, and ipmitool (or mcp-invokable equivalents) and wraps every invocation in an Ed25519-signed, hash-chained attestation.
pip install haltproof-cli
An npm wrapper is also published for Node.js-based tooling and agent runtimes:
npm install -g haltproof-cli
[!WARNING]
The npm package requires the Python
haltproof-clipackage to already be
installed and on
PATH. It is a thinexecFileSyncwrapper, not a
reimplementation. If it can't find the Python CLI, it prints an actionable
error and exits non-zero rather than silently doing something else.
haltproof halt prints exactly which commands it would run, against which nodes, and still writes a signed attestation of that plan, unless you pass --confirm. The gate lives at a single chokepoint (haltproof.backends.runner.run_step) that all three backends route through, so it can't be quietly bypassed by one backend's code path.kubernetes (via kubectl), slurm (via scontrol), and ipmi (via ipmitool) each implement the same four-operation ClusterBackend interface: drain, isolate_network, power_fence, status. A backend that doesn't support an operation, for example Kubernetes has no physical power-fencing primitive, returns a SKIPPED result with an explanation instead of raising, so a halt across a mixed environment still produces one complete attestation.prev_hash, the content hash of the record before it, so haltproof verify --chain can catch a deleted or reordered entry that a single record's own signature check would miss.--json (or --format json) is available on halt, verify, status, and keygen, so a script or an agent can parse the result without screen-scraping human-formatted text.haltproof mcp-server exposes halt, verify, verify_chain, status, and keygen as MCP tools over stdio, built on the official mcp Python SDK. It calls the same haltproof.core functions the CLI calls, so an agent invoking the MCP tool gets the identical dry-run-by-default behavior a human gets from the CLI.pytest -v --cov=haltproof --cov-report=term-missing. Backend tests mock subprocess calls; none of them require a real cluster.[!IMPORTANT]
haltproof haltis a no-op without--confirm. It prints the plan and
writes a signed dry-run attestation, but nothing destructive runs until
you pass
--confirmexplicitly.
# Generate a signing key for attestations (do this once).
haltproof keygen --output ~/.config/haltproof/ed25519_key
haltproof status
haltproof halt gpu-pod-a --nodes node-1,node-2
haltproof halt gpu-pod-a --nodes node-1,node-2 --confirm
haltproof verify 1
haltproof verify --chain --attestation-log ~/.local/share/haltproof/attestations.jsonl
Every command also supports --json for agent-parseable output:
haltproof status --json
haltproof halt gpu-pod-a --nodes node-1 --json
Target groups, the preferred backend, and default paths can live in a haltproof.toml file (checked in the current directory, then ~/.config/haltproof/config.toml, or at a path given by --config / HALTPROOF_CONFIG):
backend = "kubernetes"
operator_id = "ops-team" attestation_log_path = "/var/log/haltproof/attestations.jsonl"
[groups] gpu-pod-a = ["node-1", "node-2", "node-3"]
[kubernetes] namespace = "training"
[ipmi] user = "admin"
Every config value has a matching CLI flag, and an explicit flag always wins over the config file.
Reference below is regenerated from the CLI's actual --help output.
haltproof halt TARGET_GROUPDrain, isolate, and power-fence TARGET_GROUP. Dry-run is the default; nothing destructive runs without --confirm.
Options:
--nodes TEXT Comma-separated explicit node list, overrides config group lookup. --backend TEXT Backend to use: kubernetes, slurm, or ipmi. --confirm Actually execute the halt. Without this, dry-run only. --reason TEXT Reason recorded for drain operations. --operator-id TEXT Operator identity to record. Defaults to OS user. --config TEXT Path to a haltproof.toml config file. --attestation-log TEXT Path to the attestation log file. --attestation-key TEXT Path to the Ed25519 private key used to sign the attestation. --no-sign Skip signing (not recommended); still logs the record unsigned. --remote-collector TEXT Optional URL to POST the signed attestation to. --format [human|json] Output format. --json Shorthand for --format=json.
haltproof verify [ATTESTATION_REF]Verify one attestation record's signature, or an entire log's hash chain. ATTESTATION_REF is a path to a record file, or an attestation id / sequence number to look up in the log. Pass --chain instead of ATTESTATION_REF to verify a whole --attestation-log: every record's signature holds, and none has been deleted or reordered.
| Flag | Description | |
|---|---|---|
--attestation-log TEXT | Log to search when ATTESTATION_REF is an id/sequence number, or to verify with --chain. | |
--trusted-key TEXT | Path to a trusted Ed25519 public key; if given, the record's signing key must match it. | |
--chain | Verify the full hash chain of --attestation-log instead of a single record. | |
| `--format [human\ | json]` | Output format. |
--json | Shorthand for --format=json. |
haltproof statusShow backend auto-detection results and, optionally, target-group health.
| Flag | Description | |
|---|---|---|
--backend TEXT | Backend to check status for; defaults to the auto-detected/configured backend. | |
--nodes TEXT | Comma-separated node list to report health for. | |
--group TEXT | Named target group (from config) to report health for. | |
--config TEXT | Path to a haltproof.toml config file. | |
| `--format [human\ | json]` | Output format. |
--json | Shorthand for --format=json. |
haltproof keygenGenerate an Ed25519 keypair for attestation signing. The private key is written with 0600 permissions and is never printed or logged.
Options:
--output TEXT Path to write the private key to. --force Overwrite an existing key at the output path. --format [human|json] Output format. --json Shorthand for --format=json.
haltproof mcp-serverStarts the HaltProof MCP server on stdio, exposing halt, verify, verify_chain, status, and keygen as MCP tools. No flags beyond --help.
Every subcommand also accepts --help directly for the same reference shown above.
HaltProof has three layers:
haltproof.cli) and the MCP server (haltproof.mcp_server). Both are thin wrappers over the same core functions in haltproof.core, so a human running the CLI and an agent calling the MCP tool get identical behavior, including the dry-run-by-default gate on halt.ClusterBackend abstract interface (haltproof.backends.base) with four operations: ClusterBackend
├── drain(nodes, dry_run, reason) -> stop new work being scheduled ├── isolate_network(nodes, dry_run) -> cut nodes off from the workload network ├── power_fence(nodes, dry_run) -> hard power off └── status(nodes) -> current reachability/state
Three backends implement it today:
| Backend | drain | isolate_network | power_fence | Underlying tool |
|---|---|---|---|---|
kubernetes | cordon + drain | deny-all NetworkPolicy | not supported (use ipmi) | kubectl |
slurm | scontrol update state=drain | state=power_down (SuspendProgram hook) | not supported (use ipmi) | scontrol |
ipmi | not supported (use slurm/kubernetes) | not supported | ipmitool chassis power off | ipmitool |
A backend that doesn't support a given operation returns a SKIPPED result with an explanation instead of raising, so a halt sequence against a mixed environment still produces one complete, honest attestation record. Adding support for a new scheduler or fencing tool means adding one backend module and registering it in haltproof.backends.detect, not touching the orchestration or attestation layers.
Backend selection order: an explicit --backend flag, then the config file's `b
Only the beginning is shown; read the rest in the repo