proxmox-mcp
Proxmox-mcp
간단한 Proxmox MCP
Proxmox VE 관리를 위한 MCP 서버
38개의 도구 — 노드, QEMU VM, LXC 컨테이너, 스토리지, 클러스터, 스냅샷.
왜 이 도구인가요?
단일 이미지, 다중 아키텍처 지원 —
docker run ghcr.io/akmalovaa/proxmox-mcp:latest명령어로 즉시 실행 가능환경 변수만 사용 — 설정 파일, 데이터베이스, 상태 저장 없음
기본적으로 읽기 전용 — 파괴적인 작업은 명시적인
PROXMOX_RISK_LEVEL설정을 통해서만 가능작은 코드베이스 — Proxmoxer 기반의 순수 stdio MCP, HTTP 서버나 인증 계층, 불필요한 기능 없음
원시 JSON 출력 — 서식이나 이모지 없이 LLM이 데이터를 직접 처리 가능
빠른 시작
이미지: ghcr.io/akmalovaa/proxmox-mcp:latest (다중 아키텍처: amd64 + arm64).
1. 셸 프로필(~/.zprofile, ~/.zshrc 또는 ~/.bashrc)에 자격 증명 내보내기:
# base environment:
export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root@pam
export PROXMOX_PASSWORD=your-password
# or use token auth (recommended):
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# optional:
export PROXMOX_RISK_LEVEL=read적용: source ~/.zprofile (또는 셸 재시작).
2. ~/.claude/settings.json (Claude Code) 또는 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"]
}
}
}또는 토큰 인증:
{
"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는 호스트 변수를 그대로 전달하므로 설정 파일에 비밀 정보가 노출되지 않습니다. 클라이언트를 재시작하면 38개의 Proxmox 도구를 사용할 수 있습니다.
비밀번호 인증을 사용하려면 토큰 변수 대신 PROXMOX_PASSWORD를 사용하세요.
참고: macOS의 Claude Desktop은 launchd를 통해 실행되며
~/.zprofile/~/.zshrc를 상속받지 않습니다. 설정을~/.zshenv에 넣거나 설정 파일 내의"env": { ... }블록을 사용하세요.
설정
모든 설정은 환경 변수입니다. 셸 프로필에 설정하거나, docker run -e에 인라인으로 전달하거나, MCP 클라이언트의 env 블록에 선언하세요.
변수 | 기본값 | 설명 |
| — | Proxmox 호스트 (IP 또는 호스트명) |
|
| API 사용자 |
인증 | — | |
|
| API 포트 |
|
| TLS 인증서 검증 |
|
|
|
인증: 토큰 또는 비밀번호
하나만 선택하세요. 둘 다 설정된 경우 토큰이 우선합니다.
토큰 (권장) — Proxmox UI에서 생성: 데이터센터 → 권한 → API 토큰 → 추가 (권한 분리 체크 해제). 그 후:
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx비밀번호 (대체 수단):
export PROXMOX_PASSWORD=your-password위험 수준
PROXMOX_RISK_LEVEL은 파괴적인 작업을 제어합니다:
수준 | 추가 기능 |
| 읽기 전용 도구 |
| + 시작 / 중지 / 재부팅 / 일시 중지 / 복제 / 스냅샷 생성 |
| + 스냅샷 삭제 / 스냅샷 롤백 |
모든 권한이 필요한 호출은 stderr에 기록됩니다 (ALLOW / DENY + 도구 + 계층).
도구
노드 (7)
도구 | 설명 |
| 상태, CPU, 메모리, 가동 시간을 포함한 모든 클러스터 노드 나열 |
| 상세 노드 메트릭 (CPU, 메모리, 디스크, 부하, 커널) |
| 노드의 네트워크 인터페이스 |
| 노드의 물리적 디스크 |
| 노드의 최근 작업 |
| UPID로 특정 작업 상태 확인 |
| 작업의 로그 출력 |
QEMU VM (14)
도구 | 계층 | 설명 |
| read | 모든 VM 나열 (노드별 필터링 가능) |
| read | 현재 VM 상태 (실행 중/중지됨, CPU, 메모리) |
| read | VM 설정 (하드웨어, 디스크, 네트워크) |
| read | VM의 모든 스냅샷 나열 |
| lifecycle | VM 시작 |
| lifecycle | VM 강제 중지 |
| lifecycle | 타임아웃을 포함한 정상적인 ACPI 종료 |
| lifecycle | ACPI를 통한 재부팅 |
| lifecycle | VM 일시 중지 |
| lifecycle | 일시 중지된 VM 재개 |
| lifecycle | 전체 또는 링크된 복제 |
| lifecycle | 스냅샷 생성 |
| all | 스냅샷 삭제 |
| all | 스냅샷으로 롤백 |
LXC 컨테이너 (11)
도구 | 계층 | 설명 |
| read | 모든 LXC 컨테이너 나열 (노드별 필터링 가능) |
| read | 현재 컨테이너 상태 |
| read | 컨테이너 설정 |
| read | 모든 스냅샷 나열 |
| lifecycle | 컨테이너 시작 |
| lifecycle | 컨테이너 강제 중지 |
| lifecycle | 타임아웃을 포함한 정상적인 종료 |
| lifecycle | 컨테이너 재부팅 |
| lifecycle | 스냅샷 생성 |
| all | 스냅샷 삭제 |
| all | 스냅샷으로 롤백 |
스토리지 (2)
도구 | 설명 |
| 사용량을 포함한 스토리지 풀 나열 (노드별 필터링 가능) |
| 스토리지 풀의 콘텐츠 (ISO, 백업, 이미지, 템플릿) |
클러스터 (4)
도구 | 설명 |
| 클러스터 상태, 쿼럼, 노드 멤버십 |
| 모든 리소스 (VM, 컨테이너, 스토리지, 노드) |
| 설정된 백업 작업 |
| 다음 사용 가능한 VM/컨테이너 ID |
아키텍처
src/proxmox_mcp/
├── server.py # FastMCP instance + entry point
├── config.py # Pydantic Settings (PROXMOX_ prefix)
├── client.py # Proxmoxer connection via lifespan
└── tools/ # nodes, vms, containers, storage, cluster기본적으로 읽기 전용 — 권한이 필요한 도구는
PROXMOX_RISK_LEVEL로 제어단일 연결 — 시작 시 Proxmoxer 클라이언트가 한 번 생성되어 수명 주기 동안 공유됨
원시 JSON 출력 — 서식 없음; LLM이 데이터를 직접 소비
개발
독립 실행형 실행 (테스트)
export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root@pam
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
docker run -i --rm \
-e PROXMOX_HOST -e PROXMOX_USER \
-e PROXMOX_TOKEN_NAME -e PROXMOX_TOKEN_VALUE \
ghcr.io/akmalovaa/proxmox-mcp:latestDocker 없이 실행 (UV)
git clone https://github.com/akmalovaa/proxmox-mcp.git && cd proxmox-mcp && uv syncMCP 클라이언트 설정:
{
"mcpServers": {
"proxmox": {
"command": "uv",
"args": ["run", "--directory", "/path/to/proxmox-mcp", "proxmox-mcp"],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_TOKEN_NAME": "mcp",
"PROXMOX_TOKEN_VALUE": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
}소스에서 빌드
git clone https://github.com/akmalovaa/proxmox-mcp.git
cd proxmox-mcp
docker build -t proxmox-mcp .라이선스
MIT
Maintenance
Latest Blog Posts
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/akmalovaa/proxmox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server