Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
MCP server for Proxmox VE management (VM, LXC, nodes)
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
NANDI_PROXMOX_CONFIGDu brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"nandi-proxmox": {
"command": "npx",
"args": [
"-y",
"nandi-proxmox-mcp"
],
"env": {
"NANDI_PROXMOX_CONFIG": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add nandi-proxmox --env NANDI_PROXMOX_CONFIG=your-value -- npx -y nandi-proxmox-mcpTrag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"nandi-proxmox": {
"command": "npx",
"args": [
"-y",
"nandi-proxmox-mcp"
],
"env": {
"NANDI_PROXMOX_CONFIG": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"nandi-proxmox": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"nandi-proxmox-mcp"
],
"env": {
"NANDI_PROXMOX_CONFIG": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 9. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto NANDI-Services bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Das musst du eintragen: NANDI_PROXMOX_CONFIG
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.4.1) kam vor 14 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, WCS Points
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
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.
West Coast Swing WSDC points registry: dancer points, divisions, level-ups, event results and rules.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
Turn your Proxmox cluster into an AI-driven platform with 140+ tools for automation, monitoring, and controlled execution.
Open source MCP server for Proxmox VE, powered by NANDI Services.
nandi-proxmox-mcp exposes Proxmox inventory, lifecycle, storage, backup, networking, firewall, access, monitoring, SSH diagnostics, and guarded remote/container operations without removing the safety rails needed for production clusters.
read-only, read-execute, full.PVE_MODULE_MODE=core|advanced.PVE_CATEGORIES, PVE_TOOL_BLACKLIST, PVE_TOOL_WHITELIST.confirm=true.listNodes, getVMStatus, startVM, stopContainer.stdio transport for MCP clients and Streamable HTTP transport for controlled remote deployments.The server needs two trust channels and both are preserved intentionally:
pct exec, batch SSH diagnostics, read-only host diagnostics, and container-level Docker inspection tools.pct and SSH-based diagnostics.More detail: docs/PERMISSIONS.md
Operations marked destructive do not execute unless the caller sends confirm=true.
Examples:
pve_exec_in_containerThe server returns a structured CONFIRMATION_REQUIRED error when confirmation is missing. This behavior is unchanged and reinforced.
confirm=true is supplied by the agent, not by you. A model that reads the rejection can simply retry with the flag set, so on its own that check guards against an accident rather than against a confident agent — and it never asks you anything.
So the 47 tools that require confirmation are also announced to the client as needing a person:
"_meta": { "anthropic/requiresUserInteraction": true }
In Claude Code 2.1.199 and later, a tool marked this way prompts on every call — including in auto and bypassPermissions modes — and cannot be pre-approved by an allow rule or by a PreToolUse hook returning allow. Under --permission-prompt-tool an automated approval is converted to a denial, and Remote Control withholds one-tap approval and sends you to the full prompt. The operator who answered is the one who authorised the operation.
One caveat, measured on 2.1.229 rather than taken from the documentation: the prompt still offers *"Yes, and don't ask again"*, even though the documentation says a flagged tool has no such option. Choosing it writes an allow rule that does not retire the gate — the next call prompts again. So the behaviour is right and only the button is misleading. Do not read its absence as the signal that the guard is on; verify by calling a gated tool twice.
Starting and resuming a guest are deliberately left out: they change state without destroying anything, and a guard people resent is a guard people route around.
setup additionally writes matching permissions.ask rules into .claude/settings.json, which cover Claude Code versions that predate the annotation. Rules are evaluated deny, then ask, then allow — first match wins — so an ask rule survives both bypassPermissions and a later "yes, don't ask again". For an install that was configured by hand rather than through setup:
nandi-proxmox-mcp harden # every configured instance
nandi-proxmox-mcp harden --name lab # just one
Both mechanisms are Claude Code specific. In any other client the guards are confirm=true and the access tier, so choose the tier deliberately there.
read-onlyread-executefullPVE_MODULE_MODE=core hides advanced tools without renaming or removing canonical tool IDs from the codebase.
Required:
PROXMOX_HOSTPROXMOX_USERPROXMOX_REALMPROXMOX_TOKEN_NAMEPROXMOX_TOKEN_SECRETPROXMOX_SSH_HOSTPROXMOX_SSH_USERPROXMOX_SSH_KEY_PATHOptional:
PROXMOX_PORT default 8006PROXMOX_SSH_PORT default 22PROXMOX_ALLOW_INSECURE_TLS default falsePVE_ACCESS_TIER=read-only|read-execute|fullPVE_MODULE_MODE=core|advancedPVE_CATEGORIESPVE_TOOL_BLACKLISTPVE_TOOL_WHITELISTHTTP transport:
MCP_TRANSPORT=stdio|httpMCP_HOST default 0.0.0.0MCP_PORT default 3000MCP_ALLOWED_HOSTSMCP_ALLOWED_ORIGINSMCP_RATE_LIMIT_WINDOW_MSMCP_RATE_LIMIT_MAXMCP_MAX_BODY_SIZE_BYTESMCP_HEADERS_TIMEOUT_MSMCP_REQUEST_TIMEOUT_MSMCP_KEEPALIVE_TIMEOUT_MSMCP_MAX_HEADERS_COUNTSetup writes one credentials file per configured Proxmox, .nandi-proxmox-mcp/ .json, plus a registration entry in each client config it was asked for — .mcp.json for Claude Code and .vscode/mcp.json for VS Code, by default both.
The credentials file is the only one holding the token, and it is gitignored. When NANDI_PROXMOX_CONFIG is not set, the server discovers it: a single configured instance is used automatically, and more than one is an error naming them rather than a guess.
The config loader now rejects:
Never used an MCP before? Start with
docs/EMPEZAR.md — a step-by-step guide (in Spanish) that
assumes no prior MCP knowledge and covers creating the Proxmox token, which
is the part that trips most people up.
You need an API token from your own Proxmox first. This prints the commands that create one, ready to paste into the Proxmox shell — it connects to nothing:
npx nandi-proxmox-mcp bootstrap --tier read-only
Then guided setup. By default this writes config for Claude Code (.mcp.json) and VS Code (.vscode/mcp.json), merging into either file if it already exists:
npx nandi-proxmox-mcp setup --access-tier read-only
npx nandi-proxmox-mcp doctor --check mcp-config,nodes,vms,cts,node-status,remote-op
Start with --access-tier read-only. The server's built-in default is full, which exposes every destructive tool including arbitrary command execution; passing the flag writes the tier explicitly into the client config so the choice is visible rather than implicit. Raise it once you trust the setup.
Pick specific clients, or print a block for any other MCP client:
npx nandi-proxmox-mcp setup --clients claude-code
npx nandi-proxmox-mcp setup --print-config # writes nothing, safe to pipe
.mcp.json holds only a config path and policy settings, so it is safe to commit and share. Your API token stays in .nandi-proxmox-mcp/config.json, which is gitignored.
Direct run with environment variables:
$env:PROXMOX_HOST="pve.local"
$env:PROXMOX_PORT="8006" $env:PROXMOX_USER="svc_mcp" $env:PROXMOX_REALM="pve" $env:PROXMOX_TOKEN_NAME="nandi-mcp" $env:PROXMOX_TOKEN_SECRET=" " $env:PROXMOX_SSH_HOST="pve.local" $env:PROXMOX_SSH_USER="root" $env:PROXMOX_SSH_KEY_PATH="$env:USERPROFILE\.ssh\id_ed25519"
npx nandi-proxmox-mcp run
This MCP server operates real Proxmox infrastructure and is not a sandboxed environment.
The following risks are inherent to the system design:
PROXMOX_ALLOW_INSECURE_TLS=true), TLS certificate validation is bypassed and may expose connections to MITM attacks. Intended for lab use only.Users are responsible for:
The HTTP transport performs no authentication. There is no bearer token,
API key, or client-certificate check on
POST /mcp; the controls below are
network-level only.
MCP_HOSTalso defaults to0.0.0.0, and the host
allowlist includes your configured Proxmox and SSH hosts. Anyone who can
reach the port and send a matching
Hostheader gets the full registered
tool surface — which, with the default
PVE_ACCESS_TIER=full, includes
destructive tools and arbitrary command execution.
Only enable
MCP_TRANSPORT=httpon a trusted network, behind an
authenticating reverse proxy, or bound to
127.0.0.1viaMCP_HOST. The
default stdio transport is not affected: it has no network surface.
When MCP_TRANSPORT=http is enabled, the server applies:
Origin header413 responses/mcpX-Content-Type-Options: nosniffCache-Control: no-storeHealth/readiness endpoints:
GET /healthGET /readyPOST /mcpFunctionality is unchanged, but the execution path is stricter:
spawn(..., { shell: false })BatchMode, IdentitiesOnly, public-key auth, and explicit connection liveness controlsdockerLogsInContainer now validates and shell-escapes container names instead of interpolating raw user inputpve_exec_in_container flow with confirmation requiredMitigations in the repo:
overrides for critical transitive packagesNur der Anfang wird gezeigt; den Rest findest du im Repo