vCenter资源访问服务器

为VMware vCenter提供只读访问服务的MCP协议服务器,支持集群、资源池和虚拟机等资源查询。

  • by davlloyd
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 davlloyd/vcenter-mcp

使用说明

vCenter MCP服务器

VMware vCenter的模型上下文协议(MCP)服务器,提供对vCenter资源(包括群集、资源池和虚拟机)的只读访问。

特性

  • 只读访问 到vCenter资源
  • Cloud Foundry部署 支持Tanzu Cloud Foundry
  • 灵活的凭证管理 通过环境变量或Cloud Foundry服务绑定
  • vCenter REST API集成 对于所有操作
  • FastMCP框架 用于MCP协议支持
  • MVC架构 遵循软件设计最佳实践
  • 综合测试 使用pytest
  • 键入提示 贯穿整个代码库

支持的操作

  1. 列出所有集群 -获取vCenter中的所有群集
  2. 列出群集中的虚拟机 -获取特定群集中的所有虚拟机
  3. 列出资源池 -获取特定群集中的所有资源池
  4. 列出资源池中的虚拟机 -获取特定资源池中的所有虚拟机
  5. 获取vCenter状态 -获取连接状态和基本统计信息

项目结构(MVC架构)

vcenter-mcp/
├── main/                           # Main application package
│   ├── __init__.py
│   ├── __main__.py                 # Application entry point
│   ├── server_factory.py           # Server creation and MVC initialization
│   ├── models/                     # Data models (M in MVC)
│   │   ├── __init__.py
│   │   └── vcenter_config.py       # Configuration and data models
│   ├── views/                      # Presentation layer (V in MVC)
│   │   ├── __init__.py
│   │   └── mcp_tools.py            # MCP tools and formatting
│   ├── controllers/                # Business logic (C in MVC)
│   │   ├── __init__.py
│   │   └── vcenter_controller.py   # Main controller
│   ├── services/                   # Service layer
│   │   ├── __init__.py
│   │   └── vcenter_service.py      # vCenter API service
│   └── config/                     # Configuration management
│       ├── __init__.py
│       └── config_manager.py       # Configuration and credentials
├── tests/                          # Test suite
│   ├── __init__.py
│   ├── test_config.py              # Configuration tests
│   └── test_mvc_structure.py       # MVC structure tests
├── app.py                          # Legacy entry point
├── test_connection.py              # Connection testing utility
├── config.env.example              # Environment configuration template
├── setup_env.py                    # Environment setup script
├── requirements.txt                # Python dependencies
├── setup.py                        # Package setup
├── pyproject.toml                  # Modern Python packaging
├── manifest.yml                    # Cloud Foundry manifest
├── Procfile                        # Cloud Foundry process
├── runtime.txt                     # Python runtime version
└── README.md                       # This file

架构概述

MVC模式实现

  • 模型 (main/models/):数据结构和配置模型

    • VCenterConfig:vCenter连接的配置
    • Cluster, ResourcePool, VirtualMachine:vCenter资源的数据模型
  • 视图 (main/views/):MCP工具的表示层

    • MCPToolsView:处理MCP工具注册和数据格式化
    • 格式化数据以显示给MCP客户端
  • 控制器 (main/controllers/):业务逻辑和协调

    • VCenterController:在模型和视图之间进行协调的主控制器
    • 处理数据转换和业务规则
  • 服务 (main/services/):数据访问层

    • VCenterService:处理vCenter REST API交互
    • 管理HTTP请求和响应
  • 配置 (main/config/):配置管理

    • ConfigManager:处理凭据和环境配置
    • 支持Cloud Foundry服务绑定
  • 服务器工厂 (main/server_factory.py):应用程序初始化

    • create_mcp_server():创建和配置MCP服务器
    • 处理正确的MVC组件初始化
    • 解决循环导入问题

先决条件

  • Python 3.12+ (必需-使用Python 3.12.3测试,Cloud Foundry使用Python-3.12。*)
  • 具有REST API访问权限的VMware vCenter服务器
  • vCenter凭据(用户名/密码)

安装

开发安装

  1. 克隆此存储库:
git clone <repository-url>
cd vcenter-mcp
  1. 创建虚拟环境:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 在开发模式下安装:
pip install -e .
  1. 安装开发依赖项:
pip install -e ".[dev]"

生产装置

pip install vcenter-mcp

配置

环境设置

设置环境的最简单方法是使用提供的设置脚本:

# Interactive setup
python setup_env.py

# View current configuration (passwords are masked)
python setup_env.py show

手动环境变量

或者,您可以手动设置以下vCenter访问环境变量:

export VCENTER_HOST="https://your-vcenter-server.com"
export VCENTER_USERNAME="your-username"
export VCENTER_PASSWORD="your-password"

# Optional configuration
export VCENTER_VERIFY_SSL="true"  # Default: true
export VCENTER_TIMEOUT="30"       # Default: 30 seconds
export LOG_LEVEL="INFO"           # Default: INFO

使用.env文件

创建一个 .env 项目根目录中的文件,内容如下:

# Copy from config.env.example and update with your values
VCENTER_HOST=https://your-vcenter-server.com
VCENTER_USERNAME=your-username
VCENTER_PASSWORD=your-password
VCENTER_VERIFY_SSL=true
VCENTER_TIMEOUT=30
LOG_LEVEL=INFO

Cloud Foundry服务绑定

或者,您可以绑定到Cloud Foundry中的vCenter服务。服务应提供以下格式的凭据:

{
  "host": "https://your-vcenter-server.com",
  "username": "your-username",
  "password": "your-password"
}

用法

命令行

运行MCP服务器:

# Using the package
python -m main

# Using the console script (if installed)
vcenter-mcp

# Using the legacy entry point
python app.py

程序化使用

from main.config.config_manager import ConfigManager
from main.controllers.vcenter_controller import VCenterController

# Get configuration
config_manager = ConfigManager()
config = config_manager.get_vcenter_config()

# Create controller and run MCP server
controller = VCenterController(config)
app = controller.create_mcp_server()
app.run()

测试配置

设置环境后,测试vCenter连接:

# Test connection and basic API calls
python test_connection.py

# View current configuration (passwords are masked)
python setup_env.py show

Cloud Foundry部署

该应用程序为Cloud Foundry配置了灵活的Python版本控制:

  • 运行时: python-3.12.* (允许自动更新到任何3.12.x版本)
  • 构建包: python_buildpack
  • 记忆:256米
  • 磁盘:512米
  • 运输:使用FastMCP异步的HTTP http 传输(与Spring AI WebVC兼容)
  • 健康检查:HTTP端点位于 /health

部署到Tanzu Cloud Foundry

  1. 登录到您的Cloud Foundry实例:
cf login -a https://api.your-cf-instance.com
  1. 设置目标组织和空间:
cf target -o your-org -s your-space
  1. 部署应用程序:
cf push

Cloud Foundry中的环境变量

设置vCenter访问的环境变量:

cf set-env vcenter-mcp-server VCENTER_HOST "https://your-vcenter-server.com"
cf set-env vcenter-mcp-server VCENTER_USERNAME "your-username"
cf set-env vcenter-mcp-server VCENTER_PASSWORD "your-password"

可选:绑定到vCenter服务

如果您的Cloud Foundry市场中有可用的vCenter服务:

cf create-service vcenter-service standard vcenter-service
cf bind-service vcenter-mcp-server vcenter-service

MCP工具

MCP服务器提供了以下具有正确名称和描述的工具,以便更好地发现:

1.列出集群(list_clusters)

描述:列出vCenter中的所有群集。返回所有可用集群及其名称和ID的格式化列表。

用法:

list_clusters()

2.列出集群中的虚拟机(list_vms_in_cluster)

描述:列出特定群集中的所有虚拟机。需要集群名称作为输入,并返回一个格式化的VM列表,其中包含VM的名称和电源状态。

用法:

list_vms_in_cluster(cluster_name: str)

3.列出资源池(list_resource_pools)

描述:列出特定群集中的所有资源池。需要集群名称作为输入,并返回一个格式化的资源池列表及其名称和ID。

用法:

list_resource_pools(cluster_name: str)

4.列出资源池中的虚拟机(list_vms_in_resource_pool)

描述:列出特定资源池中的所有虚拟机。需要资源池名称作为输入,并返回一个格式化的VM列表及其名称和电源状态。

用法:

list_vms_in_resource_pool(resource_pool_name: str)

5.获取vCenter状态(get_vcenter_status)

描述:获取vCenter连接状态和基本信息。返回连接状态、主机信息以及群集、资源池和虚拟机的计数。

用法:

get_vcenter_status()

MCP客户端连接

Cloud Foundry部署

当部署到Cloud Foundry时,MCP服务器可以通过HTTPS传输访问:

  • 统一资源定位符: https://vcenter-mcp-server.apps.tas.tanzu.rocks (端口443)
  • 运输: http (异步)
  • 协议:HTTPS上的MCP

地方发展

对于本地开发,服务器运行在:

  • 主机: 0.0.0.0 (默认,可通过配置 HOST 环境变量)
  • 端口: 8080 (默认,可通过配置 PORT 环境变量)
  • 运输: http (异步)

备注:Cloud Foundry设置 PORT 用于健康检查的环境变量,而外部访问通过端口443上的HTTPS路由。应用程序必须使用 PORT 环境变量,以确保健康检查正常工作。服务器默认为端口8080,但可以用以下命令覆盖 PORT 环境变量。

发展

Python版本

该项目需要 Python 3.12+ 并且已经用Python 3.12.3进行了测试。对于Cloud Foundry部署,运行时设置为 python-3.12.* 以允许自动进行次要版本更新。

运行测试

# Run all tests
pytest

# Run with coverage
pytest --cov=main

# Run specific test file
pytest tests/test_mvc_structure.py

代码质量

# Format code
black main/ tests/

# Lint code
flake8 main/ tests/

# Type checking
mypy main/

构建包

# Build wheel
python -m build

# Install from wheel
pip install dist/vcenter_mcp-*.whl

API终点

健康检查端点

  • GET /health -应用程序健康状态(返回包含状态信息的JSON)

MCP协议端点

服务器使用FastMCP的异步 http 用于通过HTTP进行MCP协议通信的传输,与Spring AI WebVC MCP服务器兼容。

vCenter REST API端点

服务器使用具有以下终结点的vCenter REST API:

  • GET /rest/vcenter/cluster -列出集群
  • GET /rest/vcenter/resource-pool -列出资源池
  • GET /rest/vcenter/vm -列出虚拟机

安全考虑

  • 服务器以只读模式运行
  • 凭据安全地存储在环境变量或服务绑定中
  • 默认情况下启用SSL验证
  • 不持久存储敏感数据
  • 记录所有API请求以进行调试

故障排除

常见问题

  1. 连接失败:验证vCenter主机URL和凭据
  2. SSL证书错误:确保vCenter具有有效的SSL证书
  3. 认证失败:检查用户名和密码
  4. API访问被拒绝:验证用户是否具有适当的权限
  5. MCP客户端超时:确保客户端配置为使用 http 传输(与Spring AI WebVC兼容)
  6. Cloud Foundry部署问题:检查应用程序是否正在运行,是否可以通过端口443上的HTTPS访问

日志

检查应用程序日志以获取详细的错误信息:

# Local development
python -m main

# Cloud Foundry
cf logs vcenter-mcp-server --recent

调试模式

启用调试日志记录:

export LOG_LEVEL=DEBUG
python -m main

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 按照MVC模式进行更改
  4. 添加新功能的测试
  5. 运行测试套件
  6. 提交拉取请求

开发设置

# Clone and setup
git clone <your-fork-url>
cd vcenter-mcp
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black main/ tests/

添加新功能

添加新功能时,请遵循MVC模式:

  1. 模型:在中添加新的数据模型 main/models/
  2. 服务:在中添加API交互 main/services/
  3. 控制器:在中添加业务逻辑 main/controllers/
  4. 视图:在中添加演示逻辑 main/views/
  5. 测试:在中添加相应的测试 tests/

许可证

[在此处添加您的许可证信息]

更新日志

1.0.0

  • 初始版本
  • MVC架构实现
  • 综合测试
  • Cloud Foundry部署支持
  • FastMCP集成