Skip to main content
Glama
vcf-automation-mcp-server

vcf-automation-mcp-server

by mdegrasse

vcf-automation-mcp

VCF Automation(이전 Aria Automation) REST API를 래핑한 MCP 서버로, 프로젝트, 카탈로그 항목, 배포를 MCP 도구로 노출하여 LLM 클라이언트가 프로비저닝된 인프라를 직접 탐색하고 관리할 수 있게 합니다.

이 프로젝트는 VCF Operations(vROps)를 래핑하는 vcf-ops-mcp와 대응되는 프로젝트입니다.

이 서버는 실제 인프라를 프로비저닝하고 삭제할 수 있습니다 (request_catalog_item, run_deployment_action/run_deployment_resource_action, delete_deployment). 베어러 토큰과 그 뒤에 있는 VCF Automation refresh token은 모니터링하는 환경 전체에서 VM을 생성하고 파괴할 수 있는 자격 증명과 동일한 수준으로 취급하십시오. 실제로 그런 자격 증명이기 때문입니다.

Setup

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env   # then fill in your VCF Automation details

필수 구성(.env 또는 실제 환경 변수를 통해):

Variable

Description

VCFA_BASE_URL

VCF Automation 어플라이언스의 기본 URL(예: https://vcfa.example.com)

VCFA_REFRESH_TOKEN

UI에서 생성한 API 갱신 토큰(My Account > API Tokens)

VCFA_ORG

인증할 테넌트 org 이름입니다. 프로바이더("system") 수준으로 사용하려면 설정을 비워 둡니다. 프로바이더("system") 수준에서만 두십시오.

VCFA_TOKN_URL

고급 사용자용: 자동으로 계산된 OAuth 토큰 엔드포인트를 재정의합니다.

VCFA_VERIFY_SSL

자체 시그인된 b 인스턴스에 대헤 TLS 검즘을 하려면 하려면 false로 설정합니다

VCFA_TIMEOUT

요청 당 시간아웃(초 단위, 기본값 30)

VCFA_API_VERSION_IaaS

IAmount API용 ?apiVersion=(2021-07-15가 기본값)

VCFA_API_VERSION_CATE

Catalog API용 ?apiVersion=(2020-08-25가 기본값)

VCFA_API_VERSION_DEPLOYMENT

DepoDeployment용 ?apiVersion=(2020-08-25가 기본값)

refresh token 발급받기

VCF Operations(사용자 이름/비밀번호)와는 다리, VCF Automation은 UI에서 한 번 생성을 하는 장주의 API refresh token으로 인증합니다. 이 서버는 이 토큰을 사용자를 대신 단기간(대략 1시간) 유효한 베에러 access to큰으로 교환한 뒤, 투명하게 캐시하고 갱신합니다:

  1. 서버가 대신 작동하게 만들 org(테넌) 자격으로 VCF Automation UI에 로그인합니다.

  2. 오른쪽 위 상단의 사용자 이름을 크리하고 My Account > API Tokens > New > 률택합니다.

  3. 토큰 (token)을 이름 지정해 만든 후 VCFA_REFRESH_TOKEN에 복사합니다.

  4. VCFA_ORG를 해당 org의 이름(Provider Management Portal에 그 표시된 대신)로 설증합니다. 만약 토큰을 배포이더("시스템") 수준에서 생했다면 그대로 구성 하지 않아도 됩니다.

정확한 토큰 교환 경로(VCFA_TOKEN_URL)는 VCFA 배포 버전에 따라 덜 일정한 방식으로 문서화되어 있습니다. 이 Server는 기본적으로 /tm/oauth/tenant/<org>/token(테넌트) 또는 /oauth/provider/token(프로바이더)을 사용하며, 인스턴스의 실제 경로가 다르면 재정의할 수 있습니다.

서버 전송/인증 구성(역시 .env 또는 실제 환경 변수를 통해서):

Variable

Description

VCFA_MCP_TRANSPORT

streamable-http(기본값) 또는 stdio

VCFA_MCP_HOST

streamable-http를 위한 바인드 호스트(기본 127.0.0.1)

VCFA_MCP_PORT

streamable-http를 위한 바인드 포트(기본 8000)

VCFA_MCP_BEARER_TOKEN

streamable-http에서는 필수. 클라이언트는 Authorization: Bearer <value>를 보내야 함

VCFA_MCP_ALLOWED_HOSTS

DNS-리바인딩 보호를 위한, 쉼표로 구분된 Host 헤더 허용 목록

Related MCP server: Foundry Agents MCP Server

실행

기본적으로 streamable-http에서 독립형 원격 서버로 실행되며 127.0.0.1:8000에 바인딩되고 모든 요청마다 베어러 토큰을 요구합니다:

export VCFA_MCP_BEARER_TOKEN="$(openssl rand -hex 32)"
vcf-automation-mcp
# or
python -m vcf_automation_mcp

GET /healthz는 인증 없이 접속할 수 있습니다(로드 밸런서/오케스트레이터의 활성 점검용). 그 외에는 전부 베어러 토큰이 필요합니다. 127.0.0.1은 로끽에서만 청취하며, 실제 다른 호스트에서 접근하려면 VCFA_MCP_HOST=0.0.0.0으로 바인딩하거나(또는 리버스 프록시) 뒤에서 실행하고, 네트워크와 자격이 있는 호스트 사이에서 인프라를 프로비저닝/삭제할 수 있는 자격 가진 그 사이의 유일한 관문이 베어러 토큰가 되도록 하십시오. 다른 시크릿트처럼 취급하고, 신할 수 없는 네트워크에서는 평문보다는 전방에 TLS 종단(예: 리버스 프록시)을 두는 것을 권장하다.

VCFA_MCP_HOST이 127.0.0.1/localhost가 아닐면, FastMCP 자신의 DNS-리바인딩 보호(들어오 청의 Host 헤더 검사)가 기본적으로 허용 목록(빈)을 갖지 않습니다. 자체적인 host에서는 그 헤스탑가 로록백을 위해 자동구성 되지만요. VCFA_MCP_ALLOWED_HOSTS를 설정되지 않았으면 Host-헤더 검사가 시햏되지 않고 베어러 토큰만 유일한 관문이 됩니다. 믿는 있음, 신할 수 있는 네트워크에서는 찬지만, 신할 수 없거나 공유 네트워크에서는 추가 보안을 위해실 제 클라인트가 접속하 는 호스트명(들)/IP:포트에 VCFA_MCP_ALLOWED_HOSTS를 (썸표-구분으로) 설정하십시오.

예를 들어 Claude Code에서 MCP 클라이언트를 streamable-http, 서버로 지정합니다:

claude mcp add --transport http vcf-automation http://<host>:8000/mcp \
  --header "Authorization: Bearer <your-token>"

stdio로 실행하기

로컬에서 MCP 클라이언트가 서버를 하위 프로세스로 직접 실행하는 경우(네트워크 노출 불필요) VCFA_MCP_TRANSPORT=stdio로 설정하면 됩니다. 이 모드에서는 베어러 토큰이 필요 없습니다. Claude Desktop 설정의 예:

{
  "mcpServers": {
    "vcf-automation": {
      "command": "/absolute/path/to/.venv/bin/vcf-automation-mcp",
      "env": {
        "VCFA_MCP_TRANSPORT": "stdio",
        "VCFA_BASE_URL": "https://vcfa.example.com",
        "VCFA_REFRESH_TOKEN": "changeme",
        "VCFA_ORG": "my-tenant-org"
      }
    }
  }
}

도구들

Projects

  • list_projects — 프로비저닝된 리소스에 대한 가시성/격리 경계

  • get_project — 단일 프로젝트에 대한 전체 상세 정보

Catalog

  • list_catalog_items — 요청 가능한 청사진/템플릿 탐색(프로젝트 단위로도 가능)

  • get_catalog_item — 단일 카탈로그 항목의 전체 상세 정보

  • list_catalog_items_versions — 요청 가능한 카탈로그 항목의 배포(발행) 버전

  • request_catalog_item — 카탈로그 항목으로부터 새 배포를 프로비저닝

Deployments

  • list_deployments — 프로비저닝된 블루프린트/카탈로그 항목 인스턴스

  • get_deployment — 단일 배포에 대한 전체 상세 정보

  • list_deployment_resources — 배포 내 리소스(VM, 네트워크, 디스크 등)

  • get_deployment_resource — 배포 내 단일 리소스에 대한 전체 상세 정보

  • list_deployment_actions — 배포에서 사용 가능한 day-2 작업(예: ChangeLease)

  • list_deployment_resource_actions — 리소스에서 사용 가능한 day-2 작업(예: PowerOff)

  • run_deployment_action —배포에 day-2 작업을 실행

  • run_deployment_resource_action — 리소스에 day-2 작업을 실행

  • delete_deployment — 배포와 프로비저닝된 리소스들을 삭제

Requests

  • get_request — 비동기 요청(배포/day-2 작업)의 상태를 폴링

테스트

pip install -e ".[dev]"
pytest

테스트는 respx로 VCF Automation HTTP API를 모킹하므로 라이브 인스턴스가 필요 없다.

참고

  • mcp<2.0.0으로 고정(pinned)됨: MCP Python SDK의 2.x 계열에서 FastMCP가 MCPServer로 이름이 바뀌었고 mcp.server.mcpserver로 이동했다. 이 Project는 기존성이 검증된 1.x의 mcp.server.fastmcp.FastMCP API를 대상으로 한다.

  • VCF Automation REST API의 범위는 매우 넓다(클라우드 계정, 네트워킹, 정책, 온보딩, 블루프린트 등). 이 서버는 의도적으로 소비/day-2 경로(프로젝트, 카탈로그, 배포, 요청)만 다루고, 인프라 설정(클라우드 계정, 영역, 리전)은 다루지 않는다.

Related MCP Connectors

Related MCP Servers

  • 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
  • A
    license
    A
    quality
    D
    maintenance
    Exposes Azure AI Foundry agents, workflows, and AI Search vector-database capabilities as MCP tools, enabling natural language interaction with agents, semantic search, and index management.
    10
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents and humans to collaborate on local, evidence-driven planning by exposing MCP tools for plan listing and binding, workflow catalog/run operations, and task tracking with human-reviewed decisions.
    2
    AGPL 3.0