プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Proxmox VE

作者:akmalovaaバージョン 2.3.0i★ –iパソコンで動く
レジストリ名io.github.akmalovaa/proxmox-mcp

インストール

概要

作者による説明(英語の原文)

Manage Proxmox VE nodes, VMs, containers, storage and snapshots. Read-only by default.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 開発者ツール
  • 入力が必要なもの:PROXMOX_HOST, PROXMOX_TOKEN_VALUE, PROXMOX_PASSWORD, SENTRY_DSN

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: PROXMOX_HOST, PROXMOX_PORT, PROXMOX_VERIFY_SSL, PROXMOX_TIMEOUT, PROXMOX_USER, PROXMOX_TOKEN_NAME, PROXMOX_TOKEN_VALUE, PROXMOX_PASSWORD, PROXMOX_RISK_LEVEL, PROXMOX_TOOLS_ALLOW, PROXMOX_REDACT_SECRETS, PROXMOX_MCP_TRANSPORT, PROXMOX_MCP_HOST, PROXMOX_MCP_PORT, PROXMOX_MCP_PATH, PROXMOX_MCP_JSON_RESPONSE, PROXMOX_MCP_ALLOWED_HOSTS, PROXMOX_MCP_ALLOWED_ORIGINS, SENTRY_DSN

「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "proxmox": {
      "command": "uvx",
      "args": [
        "proxmox-ve-mcp"
      ],
      "env": {
        "PROXMOX_HOST": "your-value",
        "PROXMOX_PORT": "your-value",
        "PROXMOX_VERIFY_SSL": "your-value",
        "PROXMOX_TIMEOUT": "your-value",
        "PROXMOX_USER": "your-value",
        "PROXMOX_TOKEN_NAME": "your-value",
        "PROXMOX_TOKEN_VALUE": "your-value",
        "PROXMOX_PASSWORD": "your-value",
        "PROXMOX_RISK_LEVEL": "your-value",
        "PROXMOX_TOOLS_ALLOW": "your-value",
        "PROXMOX_REDACT_SECRETS": "your-value",
        "PROXMOX_MCP_TRANSPORT": "your-value",
        "PROXMOX_MCP_HOST": "your-value",
        "PROXMOX_MCP_PORT": "your-value",
        "PROXMOX_MCP_PATH": "your-value",
        "PROXMOX_MCP_JSON_RESPONSE": "your-value",
        "PROXMOX_MCP_ALLOWED_HOSTS": "your-value",
        "PROXMOX_MCP_ALLOWED_ORIGINS": "your-value",
        "SENTRY_DSN": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add proxmox --env PROXMOX_HOST=your-value --env PROXMOX_PORT=your-value --env PROXMOX_VERIFY_SSL=your-value --env PROXMOX_TIMEOUT=your-value --env PROXMOX_USER=your-value --env PROXMOX_TOKEN_NAME=your-value --env PROXMOX_TOKEN_VALUE=your-value --env PROXMOX_PASSWORD=your-value --env PROXMOX_RISK_LEVEL=your-value --env PROXMOX_TOOLS_ALLOW=your-value --env PROXMOX_REDACT_SECRETS=your-value --env PROXMOX_MCP_TRANSPORT=your-value --env PROXMOX_MCP_HOST=your-value --env PROXMOX_MCP_PORT=your-value --env PROXMOX_MCP_PATH=your-value --env PROXMOX_MCP_JSON_RESPONSE=your-value --env PROXMOX_MCP_ALLOWED_HOSTS=your-value --env PROXMOX_MCP_ALLOWED_ORIGINS=your-value --env SENTRY_DSN=your-value -- uvx proxmox-ve-mcp

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "proxmox": {
      "command": "uvx",
      "args": [
        "proxmox-ve-mcp"
      ],
      "env": {
        "PROXMOX_HOST": "your-value",
        "PROXMOX_PORT": "your-value",
        "PROXMOX_VERIFY_SSL": "your-value",
        "PROXMOX_TIMEOUT": "your-value",
        "PROXMOX_USER": "your-value",
        "PROXMOX_TOKEN_NAME": "your-value",
        "PROXMOX_TOKEN_VALUE": "your-value",
        "PROXMOX_PASSWORD": "your-value",
        "PROXMOX_RISK_LEVEL": "your-value",
        "PROXMOX_TOOLS_ALLOW": "your-value",
        "PROXMOX_REDACT_SECRETS": "your-value",
        "PROXMOX_MCP_TRANSPORT": "your-value",
        "PROXMOX_MCP_HOST": "your-value",
        "PROXMOX_MCP_PORT": "your-value",
        "PROXMOX_MCP_PATH": "your-value",
        "PROXMOX_MCP_JSON_RESPONSE": "your-value",
        "PROXMOX_MCP_ALLOWED_HOSTS": "your-value",
        "PROXMOX_MCP_ALLOWED_ORIGINS": "your-value",
        "SENTRY_DSN": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "proxmox": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "proxmox-ve-mcp"
      ],
      "env": {
        "PROXMOX_HOST": "your-value",
        "PROXMOX_PORT": "your-value",
        "PROXMOX_VERIFY_SSL": "your-value",
        "PROXMOX_TIMEOUT": "your-value",
        "PROXMOX_USER": "your-value",
        "PROXMOX_TOKEN_NAME": "your-value",
        "PROXMOX_TOKEN_VALUE": "your-value",
        "PROXMOX_PASSWORD": "your-value",
        "PROXMOX_RISK_LEVEL": "your-value",
        "PROXMOX_TOOLS_ALLOW": "your-value",
        "PROXMOX_REDACT_SECRETS": "your-value",
        "PROXMOX_MCP_TRANSPORT": "your-value",
        "PROXMOX_MCP_HOST": "your-value",
        "PROXMOX_MCP_PORT": "your-value",
        "PROXMOX_MCP_PATH": "your-value",
        "PROXMOX_MCP_JSON_RESPONSE": "your-value",
        "PROXMOX_MCP_ALLOWED_HOSTS": "your-value",
        "PROXMOX_MCP_ALLOWED_ORIGINS": "your-value",
        "SENTRY_DSN": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • PROXMOX_HOST 必須 env
    Proxmox host IP or hostname.
  • PROXMOX_PORT env
    Proxmox API port.
  • PROXMOX_VERIFY_SSL env
    Verify the TLS certificate. Proxmox self-signs by default.
  • PROXMOX_TIMEOUT env
    Seconds to wait for each Proxmox API request.
  • PROXMOX_USER env
    API user, including the realm.
  • PROXMOX_TOKEN_NAME env
    API token name. Use this plus PROXMOX_TOKEN_VALUE, or PROXMOX_PASSWORD.
  • PROXMOX_TOKEN_VALUE 秘密 env
    API token secret.
  • PROXMOX_PASSWORD 秘密 env
    Password, used only when no API token is set.
  • PROXMOX_RISK_LEVEL env
    Which tools exist: read-only, plus lifecycle, or everything.
  • PROXMOX_TOOLS_ALLOW env
    Comma-separated tool names to register, intersected with the risk level. Unset = all of them.
  • PROXMOX_REDACT_SECRETS env
    Mask cipassword and sshkeys in every response.
  • PROXMOX_MCP_TRANSPORT env
    stdio (default) or streamable-http.
  • PROXMOX_MCP_HOST env
    HTTP bind address. Anything but loopback also needs PROXMOX_MCP_ALLOWED_HOSTS.
  • PROXMOX_MCP_PORT env
    HTTP port.
  • PROXMOX_MCP_PATH env
    Streamable HTTP endpoint path.
  • PROXMOX_MCP_JSON_RESPONSE env
    Answer with JSON instead of an SSE stream.
  • PROXMOX_MCP_ALLOWED_HOSTS env
    Comma-separated Host headers to accept over HTTP; '*' disables the check.
  • PROXMOX_MCP_ALLOWED_ORIGINS env
    Comma-separated browser origins allowed to call the endpoint. Empty = same-origin only.
  • SENTRY_DSN 秘密 env
    Optional: report tool traces and errors to Sentry. Unset disables it.

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント akmalovaa で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

開発者ツールのほかのサーバーとの比較i

  • このカテゴリのほかの4934件のうち0%よりスターが多い
  • このカテゴリのほかの4934件のうち39%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの4934件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Proxmox VEは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:PROXMOX_HOST, PROXMOX_TOKEN_VALUE, PROXMOX_PASSWORD, SENTRY_DSN

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(2.3.0)がレジストリに届いたのは2 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv), Dockerも必要です。

代わりに使えるものは?

同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

GitHub

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

作者:github広く使われている★ 3.4万5 日前更新

パソコンでもクラウドでも

Desktop Commander

MCP server for terminal commands, file operations, and process management

作者:wonderwhy-er広く使われている↓ 71万/週★ 1万17 日前更新

パソコンで動く

Cloudflare MCP

Cloudflare MCP servers

作者:cloudflare成長中★ 444614 か月前更新

クラウドで動く✓ mcp.cloudflare.com

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

Proxmox MCP server

Simple Proxmox MCP

MCP server for managing Proxmox VE

50 tools — nodes, QEMU VMs, LXC containers, storage, cluster, snapshots.

Why this one?
  • One image, multi-arch — docker run ghcr.io/akmalovaa/proxmox-mcp:latest and you're done
  • Just env vars — no config files, no database, no state
  • Read-only by default — destructive ops are gated behind an explicit PROXMOX_RISK_LEVEL
  • stdio or Streamable HTTP — one env var apart; stdio by default, HTTP binds loopback
  • Tiny codebase — a thin layer over Proxmoxer, no config files, no database, no state
  • Raw JSON out — no formatting, no emoji; LLM gets clean data
  • Readable failures — a 403, a dead host or a blocked tier come back as a sentence, not a stack trace

Quick start

Image: ghcr.io/akmalovaa/proxmox-mcp:latest (multi-arch: amd64 + arm64).

1. Export credentials in your shell profile (~/.zprofile, ~/.zshrc or ~/.bashrc):

# token auth (recommended — see "Least privilege" for the user and role to give it):

export PROXMOX_HOST=192.168.1.100 export PROXMOX_USER=mcp@pve export PROXMOX_TOKEN_NAME=mcp export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

or password auth:

export PROXMOX_USER=root@pam

export PROXMOX_PASSWORD=your-password

optional:

export PROXMOX_RISK_LEVEL=read

Reload: source ~/.zprofile (or restart the shell).

2. Add to `~/.claude/settings.json` (Claude Code) or `claude_desktop_config.json` (Claude Desktop):

{

"mcpServers": { "proxmox": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "PROXMOX_HOST", "-e", "PROXMOX_USER", "-e", "PROXMOX_PASSWORD", "ghcr.io/akmalovaa/proxmox-mcp:latest"] } } }

or token auth:

{

"mcpServers": { "proxmox": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "PROXMOX_HOST", "-e", "PROXMOX_USER", "-e", "PROXMOX_TOKEN_NAME", "-e", "PROXMOX_TOKEN_VALUE", "ghcr.io/akmalovaa/proxmox-mcp:latest"] } } }

docker run -e VAR without a value passes the host variable through — no secrets in the config file. Restart the client — 32 read-only Proxmox tools become available (more if you raise PROXMOX_RISK_LEVEL).

For password auth, swap the token vars for PROXMOX_PASSWORD.

Note: Claude Desktop on macOS is launched via launchd and does not inherit ~/.zprofile/~/.zshrc. Either put the exports in ~/.zshenv, or fall back to an inline "env": { ... } block in the config.

Configuration

All settings are environment variables — set them in your shell profile, pass them inline to docker run -e, or declare them in your MCP client's env block.

VariableDefaultDescription
PROXMOX_HOST—Proxmox host (IP or hostname)
PROXMOX_USERroot@pamAPI user
Auth—**token *or* password — see below**
PROXMOX_PORT8006API port
PROXMOX_VERIFY_SSLfalseVerify TLS certificate
PROXMOX_TIMEOUT15Seconds to wait for each API request
PROXMOX_RISK_LEVELreadread / lifecycle / all — see Risk levels
PROXMOX_TOOLS_ALLOW—Comma-separated tool names to register, on top of the risk level
PROXMOX_REDACT_SECRETStrueMask cipassword / sshkeys in responses

Transport settings live under a PROXMOX_MCP_ prefix — see Streamable HTTP.

Authentication: token *or* password

Pick one. If both are set, the token wins.

Token (recommended):

export PROXMOX_USER=mcp@pve

export PROXMOX_TOKEN_NAME=mcp export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Setting only one half of the pair is a startup error rather than a silent fallback to the password — a typo in PROXMOX_TOKEN_NAME used to mean quietly running as whoever PROXMOX_USER is.

Password (fallback):

export PROXMOX_PASSWORD=your-password
Least privilege

An MCP server is reachable by a model acting on text it did not write, so give it its own user and its own token rather than root@pam. On the Proxmox host:

# a user that is not root, with a role that matches the risk level you plan to run

pveum user add mcp@pve pveum acl modify / --users mcp@pve --roles PVEAuditor # read

pveum acl modify / --users mcp@pve --roles PVEVMAdmin # lifecycle / all

a token for that user. Privilege Separation ON (the default) means the token starts

with no rights at all, so grant it the same role explicitly:

pveum user token add mcp@pve mcp --privsep 1 pveum acl modify / --tokens 'mcp@pve!mcp' --roles PVEAuditor

Check what the token actually ended up with:

pveum user permissions mcp@pve --token mcp

PVEAuditor covers all 32 read tools. PVEVMAdmin on /vms adds guest lifecycle and snapshots; migrate_vm additionally needs VM.Migrate on the target node, and clone_vm needs Datastore.AllocateSpace on the target storage. Narrow the ACL path (/vms/101, /pool/homelab) if the server should only see part of the cluster.

root@pam still works and is the quickest thing for a local look around — it is just not what should be left running.

Risk levels

PROXMOX_RISK_LEVEL controls which tools exist. Tools above the active level are not registered, so they never appear in the MCP client's tool list:

LevelToolsAdds
read *(default)*32read-only tools
lifecycle46+ start / stop / reboot / suspend / clone / migrate / create-snapshot
all50+ delete-snapshot / rollback-snapshot

Each elevated call is also re-checked at call time and logged to stderr (ALLOW / DENY + tool + tier).

The active level is not otherwise observable from the client side — a tool that is missing looks the same as a tool that was never written — so get_server_info reports it, along with the versions and the tool count.

PROXMOX_TOOLS_ALLOW narrows further within the tier, for a deployment that serves one specific agent:

export PROXMOX_TOOLS_ALLOW=list_nodes,list_containers,get_container_status,get_cluster_resources

Names that do not exist are a startup error, so a typo cannot silently amputate the tool list. Keep get_server_info on the list unless you have a reason not to — it is how a client learns what the rest of the list means.

Response shape

Inventory listings (list_nodes, list_vms, list_containers, get_cluster_resources) return a compact subset of each row: identity, status, uptime, CPU and memory. What is dropped is per-second IO counters and PSI pressure gauges — real data, but nothing a triage decision turns on, and several times the volume of what is kept. Pass verbose=true for the untouched rows.

Write tools answer with the task Proxmox accepted, not with a finished result:

{"state":"accepted","operation":"start_vm","node":"pve","vmid":101,

"upid":"UPID:pve:...","poll_with":"get_task_status"}

cipassword and sshkeys are replaced with ***redacted*** everywhere, keeping the key so the model can still tell that cloud-init is configured. Set PROXMOX_REDACT_SECRETS=false to get the raw values.

Streamable HTTP

stdio stays the default and is what an MCP client on your own machine should use. For a shared deployment — a container in a cluster, several clients on one URL — set the transport and nothing else changes:

docker run --rm -p 8000:8000 \

-e PROXMOX_HOST -e PROXMOX_TOKEN_NAME -e PROXMOX_TOKEN_VALUE \ -e PROXMOX_MCP_TRANSPORT=streamable-http \ -e PROXMOX_MCP_HOST=0.0.0.0 \ -e PROXMOX_MCP_ALLOWED_HOSTS=proxmox-mcp.example.com \ ghcr.io/akmalovaa/proxmox-mcp:latest

VariableDefaultDescription
PROXMOX_MCP_TRANSPORTstdiostdio or streamable-http
PROXMOX_MCP_HOST127.0.0.1Bind address — 0.0.0.0 in a container
PROXMOX_MCP_PORT8000Port
PROXMOX_MCP_PATH/mcpEndpoint path
PROXMOX_MCP_JSON_RESPONSEtrueJSON responses instead of an SSE stream
PROXMOX_MCP_ALLOWED_HOSTS—Host headers to accept; * disables the check
PROXMOX_MCP_ALLOWED_ORIGINS—Browser origins allowed; empty = same-origin only

The prefix is PROXMOX_MCP_, not PROXMOX_, because Kubernetes injects _PORT for every linked Service — a Service named proxmox would otherwise redefine PROXMOX_PORT.

Sessions are not used (stateless_http): they were removed from the protocol in revision 2026-07-28, and without them several clients can share one URL and a rolling update does not cut anyone off.

Host and Origin validation. Binding anything other than loopback requires PROXMOX_MCP_ALLOWED_HOSTS; the server refuses to start otherwise. A foreign Origin gets 403 and an unexpected Host gets 421 — this is what stops a page in a browser on the same LAN from driving the server through DNS rebinding. A request with no Origin header (curl, MCP clients) always passes. Set PROXMOX_MCP_ALLOWED_HOSTS=* only when something in front already validates it.

There is no authentication. Anyone who can reach the endpoint gets whatever PROXMOX_RISK_LEVEL allows. Put it behind a gateway, an authenticating proxy or a network boundary you trust, and keep PROXMOX_RISK_LEVEL=read unless the path to it is authenticated.

Health endpoints are served alongside /mcp and need no auth:

PathMeaning
GET /healthzThe process is up. Never touches Proxmox — a liveness probe that fails when Proxmox is down would restart the server in a loop and fix nothing.
GET /readyzProxmox answered version.get(). This is the one that should gate traffic; 503 with a readable reason otherwise.
livenessProbe:

httpGet: { path: /healthz, port: 8000 } readinessProbe: httpGet: { path: /readyz, port: 8000 }

Flags mirror the variables for interactive use: uvx proxmox-ve-mcp --transport streamable-http --port 8080.

Sentry (optional)

Tool calls and failures can be shipped to Sentry — every tools/call becomes a span, every failing tool an issue. Nothing is sent, and the SDK is never even imported, while SENTRY_DSN is unset.

The ghcr.io image already contains the SDK. From PyPI, install the extra:

uvx --from 'proxmox-ve-mcp[sentry]' proxmox-ve-mcp
VariableDefaultDescription
SENTRY_DSN—Set it to enable reporting
SENTRY_ENVIRONMENTproductionFree-form environment label
SENTRY_TRACES_SAMPLE_RATE1.0Share of tool calls traced

| `SENTRY_SEND_DEF

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く