使用说明
vCenter MCP服务器
VMware vCenter的模型上下文协议(MCP)服务器,提供对vCenter资源(包括群集、资源池和虚拟机)的只读访问。
特性
- 只读访问 到vCenter资源
- Cloud Foundry部署 支持Tanzu Cloud Foundry
- 灵活的凭证管理 通过环境变量或Cloud Foundry服务绑定
- vCenter REST API集成 对于所有操作
- FastMCP框架 用于MCP协议支持
- MVC架构 遵循软件设计最佳实践
- 综合测试 使用pytest
- 键入提示 贯穿整个代码库
支持的操作
- 列出所有集群 -获取vCenter中的所有群集
- 列出群集中的虚拟机 -获取特定群集中的所有虚拟机
- 列出资源池 -获取特定群集中的所有资源池
- 列出资源池中的虚拟机 -获取特定资源池中的所有虚拟机
- 获取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凭据(用户名/密码)
安装
开发安装
- 克隆此存储库:
git clone <repository-url>
cd vcenter-mcp
- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- 在开发模式下安装:
pip install -e .
- 安装开发依赖项:
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
- 登录到您的Cloud Foundry实例:
cf login -a https://api.your-cf-instance.com
- 设置目标组织和空间:
cf target -o your-org -s your-space
- 部署应用程序:
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请求以进行调试
故障排除
常见问题
- 连接失败:验证vCenter主机URL和凭据
- SSL证书错误:确保vCenter具有有效的SSL证书
- 认证失败:检查用户名和密码
- API访问被拒绝:验证用户是否具有适当的权限
- MCP客户端超时:确保客户端配置为使用
http传输(与Spring AI WebVC兼容) - Cloud Foundry部署问题:检查应用程序是否正在运行,是否可以通过端口443上的HTTPS访问
日志
检查应用程序日志以获取详细的错误信息:
# Local development
python -m main
# Cloud Foundry
cf logs vcenter-mcp-server --recent
调试模式
启用调试日志记录:
export LOG_LEVEL=DEBUG
python -m main
贡献
- 分叉存储库
- 创建要素分支
- 按照MVC模式进行更改
- 添加新功能的测试
- 运行测试套件
- 提交拉取请求
开发设置
# Clone and setup
git clone <your-fork-url>
cd vcenter-mcp
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black main/ tests/
添加新功能
添加新功能时,请遵循MVC模式:
- 模型:在中添加新的数据模型
main/models/ - 服务:在中添加API交互
main/services/ - 控制器:在中添加业务逻辑
main/controllers/ - 视图:在中添加演示逻辑
main/views/ - 测试:在中添加相应的测试
tests/
许可证
[在此处添加您的许可证信息]
更新日志
1.0.0
- 初始版本
- MVC架构实现
- 综合测试
- Cloud Foundry部署支持
- FastMCP集成