Skip to main content
Glama
michaelrice
by michaelrice

vcenter-mcp

Claude Code 및 기타 MCP 클라이언트에 VMware vCenter / ESXi VM 수명 주기 도구를 노출하는 Model Context Protocol 서버입니다. pyVmomi를 기반으로 구축되었습니다.

기능

  • vCenter 데이터센터(호스트별 그룹화) 또는 독립형 ESXi 호스트의 VM 나열

  • VM 생성 (네트워크 부팅 우선; 씬 또는 씩 프로비저닝; ESXi 타겟용 중첩 가상화 옵션)

  • VM 전원 켜기 및 끄기

  • VM 삭제 (실행 중인 경우 먼저 전원을 끄고 디스크에서 삭제)

조회 시 표시 이름 또는 moref ID(예: vm-42)를 사용할 수 있습니다. moref 경로를 사용하면 인벤토리 스캔을 건너뛰어 대규모 환경에서 더 빠르게 작동합니다.

Related MCP server: VMWare MCP

사전 요구 사항

  • Python 3.10 이상

  • 네트워크를 통해 연결할 수 있는 vCenter Server 또는 독립형 ESXi 호스트

  • 수행하려는 작업에 필요한 권한이 있는 vSphere 계정 (list_vms에는 읽기 전용으로 충분하며, 생성/삭제에는 해당 VM 및 리소스 풀 권한이 필요함)

설치

프로젝트 로컬 virtualenv에 설치하십시오. venv를 사용하면 vcenter-mcp와 그 종속성(특히 pyVmomi)을 시스템 Python과 격리된 상태로 유지할 수 있습니다.

이 저장소를 복제한 후:

python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -e .

개발용(pytest도 설치됨):

.venv/bin/pip install -e ".[dev]"

이 README 전체에서 명령어는 .venv/bin/...을 사용합니다. 셸당 한 번 source .venv/bin/activate를 실행하고 접두사를 생략해도 동일한 결과가 나옵니다.

타겟 구성

venv의 Python을 사용하여 대화형 설정을 실행하십시오:

.venv/bin/python -m vcenter_mcp setup

다음 항목을 입력하라는 메시지가 표시됩니다:

  1. 타겟 이름(예: lab-vcenter) — 나중에 이 타겟을 참조하는 데 사용됨

  2. vCenter / ESXi의 호스트 또는 IP

  3. 사용자 이름 및 비밀번호

  4. 타겟 유형: vcenter 또는 esxi

  5. (vCenter만 해당) 데이터센터 및 클러스터 이름

  6. 데이터스토어 이름

  7. 하나 이상의 네트워크 프로필(이름과 하나 이상의 포트 그룹 이름으로 구성)

설정은 ~/.config/vcenter-mcp/config.json (모드 0600)에 구성을 작성합니다. 언제든지 다시 실행하여 다른 타겟을 추가하거나 기존 타겟을 업데이트할 수 있습니다.

구성 파일 형식

{
  "default_target": "lab-vcenter",
  "targets": {
    "lab-vcenter": {
      "host": "vcenter.lab.example.com",
      "user": "admin@vsphere.local",
      "password": "...",
      "type": "vcenter",
      "datacenter": "Lab DC",
      "cluster": "Lab Cluster",
      "datastore": "datastore1",
      "networks": {
        "standard": ["VM Network"],
        "secure-boot": ["pg-secure-1", "pg-secure-2"]
      },
      "default_network": "standard"
    }
  },
  "templates": {
    "esxi":   { "cpu": 4, "ram_mb": 16384, "disk_gb": 100, "disk_provisioning": "thin", "guest_id": "vmkernel7Guest", "vhv": true },
    "ubuntu": { "cpu": 2, "ram_mb": 4096,  "disk_gb": 40,  "disk_provisioning": "thin", "guest_id": "ubuntu64Guest",  "vhv": false },
    "rhel":   { "cpu": 2, "ram_mb": 4096,  "disk_gb": 40,  "disk_provisioning": "thin", "guest_id": "rhel9_64Guest",  "vhv": false }
  }
}

네트워크 프로필은 포트 그룹의 목록입니다. 첫 번째 항목이 부팅 NIC가 됩니다. 고유한 VM 유형을 추가하려면 templates에 항목을 추가하십시오. create_vm에 전달된 vm_type 문자열이 이 딕셔너리와 일치하게 됩니다.

Claude Code에 등록

절대 경로를 사용하여 venv의 Python으로 MCP 서버를 등록하십시오. Claude Code는 활성화된 venv를 상속하지 않는 새로운 셸에서 서버를 시작하므로 절대 경로가 필요합니다. 여기에 일반 python을 지정하면 vcenter_mcp를 가져오지 못합니다.

VCENTER_MCP_DIR="$(pwd)"   # run this from the repo root, after install
claude mcp add --scope user vcenter -- "$VCENTER_MCP_DIR/.venv/bin/python" -m vcenter_mcp

또는 원하는 절대 경로를 직접 입력하십시오:

claude mcp add --scope user vcenter -- /absolute/path/to/vcenter-mcp/.venv/bin/python -m vcenter_mcp

읽기 도구(list_vms)는 프롬프트 없이 허용해도 안전합니다. ~/.claude/settings.json의 permissions.allow에 추가하십시오:

{
  "permissions": {
    "allow": [
      "mcp__vcenter__list_vms"
    ]
  }
}

파괴적인 도구(create_vm, power_on_vm, power_off_vm, delete_vm)는 기본 허용 목록에 포함되어 있지 않으므로 Claude가 호출할 때마다 사용자에게 확인을 요청합니다.

도구

도구

기능

list_vms

타겟의 VM을 나열합니다. vCenter 타겟은 데이터센터 내의 호스트별로 그룹화하며, ESXi 타겟은 호스트의 모든 항목을 나열합니다.

create_vm

네트워크 부팅을 우선으로 하는 VM을 생성합니다. vm_type(템플릿), 선택적 CPU/RAM/디스크 재정의, 선택적 network_profile을 선택하십시오.

power_on_vm

표시 이름 또는 moref ID로 VM의 전원을 켭니다.

power_off_vm

표시 이름 또는 moref ID로 VM의 전원을 강제로 끕니다.

delete_vm

VM을 영구적으로 삭제합니다(실행 중인 경우 먼저 전원을 끄고 디스크에서 삭제).

TLS 관련 참고 사항

vcenter-mcp는 검증되지 않은 SSL 컨텍스트로 연결합니다. 이는 랩 vCenter가 자체 서명된 인증서를 사용하는 경우가 매우 많기 때문에 govc 및 대부분의 pyVmomi 샘플 코드에서 사용하는 기본값과 동일합니다. 타겟이 적절하게 서명된 인증서를 사용하고 실제 검증을 원한다면 src/vcenter_mcp/client.py에서 _ssl_context()를 교체하십시오.

개발

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest

테스트는 CI에서 Python 3.10, 3.11, 3.12로 실행됩니다(.github/workflows/test.yml 참조).

라이선스

Apache-2.0

Available Tools

5 tools
create_vmA

Create a VM that network boots first. vm_type: esxi, ubuntu, rhel (or any type defined in config templates). disk_provisioning: thin (default) or thick. network_profile: named profile from target config (e.g. standard, secure-boot).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
vm_typeYes
targetNo
network_profileNo
cpuNo
ram_mbNo
disk_gbNo
disk_provisioningNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden but only mentions 'network boots first' as a behavioral trait. It does not disclose whether the operation is idempotent, requires authentication, or what happens on conflict.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using four short lines with no unnecessary words. Each sentence adds value and is front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters and no output schema details, the description is incomplete: it omits required fields, resource constraints, and 5 parameters entirely. An output schema exists but does not compensate for missing parameter explanations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description only explains three parameters (vm_type, disk_provisioning, network_profile) out of eight. Critical parameters like name, cpu, ram_mb, and disk_gb are left undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'VM', and adds specificity with 'network boots first'. Sibling tools are management operations, so there is no confusion with alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives examples for vm_type and disk_provisioning defaults, but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_vmA

Permanently delete a VM (power off if running, then destroy from disk). Accepts display name or moref ID (e.g. 'vm-42').

ParametersJSON Schema
NameRequiredDescriptionDefault
name_or_idYes
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description shoulders full transparency. It discloses the irreversible destructive action, the pre-step (power off), and the input format. Missing details like permission requirements or error behavior, but core behavioral traits are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no extraneous information. Action and input format are front-loaded, making it efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the action and key parameter but lacks explanation for the optional 'target' parameter and does not mention output schema or return behavior, leaving gaps for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain all parameters. It clarifies that name_or_id accepts a display name or moref ID, but completely omits the 'target' parameter, leaving users without guidance on its purpose or usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Permanently delete a VM' and details the process ('power off if running, then destroy from disk'), clearly differentiating it from sibling tools like list_vms or power_on_vm.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to identify the VM (name or moref ID) but does not provide explicit guidance on when to use this tool versus alternatives, such as powering off or creating a snapshot.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_vmsA

List VMs on a target.

  • Standalone ESXi: lists all VMs on the host.

  • vCenter: groups VMs by host within the specified datacenter (defaults to the target's configured datacenter).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
datacenterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses significant behavioral differences between standalone ESXi and vCenter, including optional datacenter grouping. Without annotations, it carries the full burden and does so well. It implies read-only operation (list) but does not explicitly state lack of side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two bullet points, front-loading the main action. Every sentence provides value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's core behavior and parameter roles. With an output schema present (context signal), return values need not be described. It is fairly complete for a list tool, though explicit mention of read-only nature would strengthen it further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It explains the 'datacenter' parameter defaults to the target's configured datacenter but lacks detail on the 'target' parameter (e.g., format, valid values). Some meaning added, but insufficient given the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists VMs on a target, with specific behavior for standalone ESXi vs vCenter. It uniquely identifies the resource (VMs) and action (list), distinguishing it from sibling tools like create_vm, delete_vm, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (listing VMs on a target) and mentions key parameters (target, datacenter). However, it does not explicitly state when not to use or suggest alternative tools, though siblings are distinct actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

power_off_vmB

Hard power off a VM by display name or moref ID (e.g. 'vm-42').

ParametersJSON Schema
NameRequiredDescriptionDefault
name_or_idYes
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose more behavioral details. It states 'hard power off' implying forceful shutdown but does not mention risks (data loss), prerequisites, or behavior if VM is already off or not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words, but lacks structure such as separate sections for usage or parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with an output schema, the description is adequate for the core action, but fails to explain the optional parameter and lacks behavioral context, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It explains name_or_id (display name or moref ID) but completely ignores the 'target' parameter, leaving its purpose unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (hard power off) and the resource (VM), and specifies the identification methods (display name or moref ID), distinguishing it from siblings like power_on_vm or delete_vm.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to hard power off a VM) but provides no explicit guidance on when not to use, such as preferring a soft shutdown or prerequisites like the VM being powered on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

power_on_vmA

Power on a VM by display name or moref ID (e.g. 'vm-42').

ParametersJSON Schema
NameRequiredDescriptionDefault
name_or_idYes
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only states the action without disclosing side effects (e.g., idempotency), required permissions, or error conditions. With no annotations, the agent lacks critical behavioral context for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no wasted words. Every piece of information earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and an output schema, the description covers the primary parameter but misses behavioral details (e.g., what happens if VM is already on) and the purpose of the 'target' parameter. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains that name_or_id accepts a display name or moref ID, adding value beyond the schema structure. However, the optional 'target' parameter is not explained, and schema coverage is 0%, so the description only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Power on a VM') and the resource identifiers ('by display name or moref ID'), which distinguishes it from siblings like power_off_vm.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies how to identify the VM (name or moref ID) with an example, but does not provide guidance on when to choose one identifier over the other or mention when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedcreate_vm
    • First observeddelete_vm
    • First observedlist_vms
    • First observedpower_off_vm
    • First observedpower_on_vm

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: create, delete, list, power on, power off. No overlap in functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (create_vm, delete_vm, list_vms, power_off_vm, power_on_vm). Minor plural variation for list_vms is acceptable.

Tool Count5/5

5 tools cover the essential VM lifecycle operations without being excessive or insufficient for a vCenter MCP server.

Completeness3/5

Missing common operations like get single VM details, update VM configuration, clone, or snapshot management. Basic CRUD and power actions are present but gaps exist for full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage VMware vSphere virtual infrastructure through comprehensive operations including VM power control, snapshot management, resource monitoring, performance analytics, and bulk operations with built-in safety confirmations for destructive actions.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage VMware vSphere infrastructure through 55 typed tools built on the govc CLI. It supports comprehensive operations including VM lifecycle management, snapshot control, datastore navigation, and networking configuration.
    21 npm
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    AI-powered VMware vCenter/ESXi monitoring and operations. 20 MCP tools for inventory queries, health monitoring, VM lifecycle management, fast provisioning (Linked Clone, OVA, template deploy), snapshot management, and datastore browsing. Supports vSphere 6.5–8.0. Works with local models via Ollama/LM Studio.
    44
    980 PyPI
    74
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language interaction with VMware SDDC Manager and vCenter APIs through MCP tools, allowing users to query workload domains, VMs, clusters, and more.
    MIT