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 服务器的项目,把项目(projects)、目录项(catalog items)和部署(deployments)暴露为 MCP 工具,让 LLM 客户端可以直接浏览和管理已置备的基础设施。

这是 vcf-ops-mcp 的对应部分,后者封装的是 VCF Operations(vROps)。

该服务器可以置备和删除真实的基础设施(request_catalog_item、run_deployment_action/run_deployment_resource_action、delete_deployment)。对待它的 bearer token 以及底层的 VCF Automation refresh token,应像对待那些能够在你的受管环境中创建和销毁 VM 的凭据一样谨慎——因为事实上它们正是这样的凭据。

设置

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

必需配置(通过 .env 或真实环境变量提供):

变量

描述

VCFA_BASE_URL

VCF Automation 设备的基本 URL,例如 https://vcfa.example.com

VCFA_REFRESH_TOKEN

在 UI 中生成的 API refresh token(My Account > API Tokens)

VCFA_ORG

要认证的租户组织名称。留空表示使用 provider("system")级别

VCFA_TOKEN_URL

高级:覆盖自动计算出的 OAuth token 端点

VCFA_VERIFY_SSL

设置为 false 可跳过对自签名实验室实例的 TLS 验证

VCFA_TIMEOUT

单次请求超时时间(秒),默认 30

VCFA_API_VERSION_IAAS

IaaS API 使用的 ?apiVersion=(默认 2021-07-15)

VCFA_API_VERSION_CATALOG

Catalog API 使用的 ?apiVersion=(默认 2020-08-25)

VCFA_API_VERSION_DEPLOYMENT

Deployment API 使用的 ?apiVersion=(默认 2020-08-25)

获取 refresh token

与 VCF Operations(用户名/密码)不同,VCF Automation 使用长期有效的 API refresh token 进行认证;你只需在 UI 中生成一次,该服务器会用它为你换取短期(约 1 小时)有效的 bearer access token,并透明地缓存和续期:

  1. 以你希望服务器所代表的组织(租户)身份登录 VCF Automation UI。

  2. 点击右上角的用户名 > My Account > API Tokens > New。

  3. 为 token 命名并创建,然后将其复制到 VCFA_REFRESH_TOKEN。

  4. 将 VCFA_ORG 设置为该组织的名称(如 Provider Management Portal 中所示);如果你是在 provider("system")级别生成的 token,则将其留空。

不同 VCF Automation 版本对 token 交换路径(VCFA_TOKEN_URL)的文档并不一致;本服务器默认使用 /tm/oauth/tenant/<org>/token(租户)或 /oauth/provider/token(provider),如果你的实例实际路径不同,也可以覆盖它。

服务器传输/认证配置(同样通过 .env 或真实环境变量提供):

变量

描述

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

逗号分隔的 Host 头白名单,用于 DNS 重绑定保护

Related MCP server: Foundry Agents MCP Server

运行方式

默认情况下,它会以 streamable-http 方式作为独立的远程服务器运行,绑定到 127.0.0.1:8000,并要求每个请求都携带 bearer token:

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

GET /healthz 无需认证(供负载均衡器/编排器的存活性检查使用);其他所有请求都需要 bearer token。127.0.0.1 只在本地监听——要真正从其他主机访问它,请绑定 VCFA_MCP_HOST=0.0.0.0(或让它运行在反向代理后面),并确保 bearer token 是网络与那些能够在你的受管环境中置备和删除基础设施的凭据之间唯一的屏障,因此请像对待其他任何机密一样对待它,并优先在其前面使用 TLS 终止(例如反向代理),而不是在不信任的网络中通过明文 HTTP 传输。

当 VCFA_MCP_HOST 不是 127.0.0.1/localhost 时,FastMCP 自带的 DNS 重绑定保护(检查请求 Host 头的机制)默认没有可供白名单的默认值,因为它只会为回环主机自动配置该白名单。如果不设置,就不会强制进行 Host-header 检查,bearer token 就是你唯一的关卡——在信任的网络中这没问题;但在共享或不信任的网络中,请设置 VCFA_MCP_ALLOWED_HOSTS 为客户端实际连接的 hostname(s)/IP:port(逗号分隔),以实现纵深防御。

让 MCP 客户端把它作为 streamable-http 服务器使用,例如在 Claude Code 中:

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

改为通过 stdio 运行

对于本地使用场景(MCP 客户端自己以子进程方式启动服务器,无需暴露网络),设置 VCFA_MCP_TRANSPORT=stdio——此模式不需要 bearer token。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"
      }
    }
  }
}

工具

项目

  • list_projects — 已置备资源的可见性/隔离边界

  • get_project — 单个项目的完整详情

目录

  • list_catalog_items — 浏览可请求的蓝图/模板,可按项目筛选

  • get_catalog_item — 单个目录项的完整详情

  • list_catalog_item_versions — 目录项已发布且可请求的版本

  • request_catalog_item — 从目录项置备一个新部署

部署

  • 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 — 销毁部署及其已置备的资源

请求

  • get_request — 轮询异步请求(部署/day-2 操作)的状态

测试

pip install -e ".[dev]"
pytest

测试使用 respx 模拟 VCF Automation HTTP API——无需真实实例。

说明

  • 固定版本 mcp<2.0.0:MCP Python SDK 的 2.x 已将 FastMCP 重命名为 MCPServer,并将其移动到 mcp.server.mcpserver。本项目针对成熟稳定的 1.x 版 mcp.server.fastmcp.FastMCP API。

  • VCF Automation REST API 的范围非常大(云账户、网络、策略、onboarding、蓝图等);本服务器有意只覆盖消费/day-2 路径——项目、目录、部署、请求——而不涉及基础设施设置(云账户、zone、region)。

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