Proxmox MCP Server
by canvrno
- ProxmoxMCP
- src
- proxmox_mcp
- config
"""
Configuration models for the Proxmox MCP server.
This module defines Pydantic models for configuration validation:
- Proxmox connection settings
- Authentication credentials
- Logging configuration
- Tool-specific parameter models
The models provide:
- Type validation
- Default values
- Field descriptions
- Required vs optional field handling
"""
from typing import Optional, Annotated
from pydantic import BaseModel, Field
class NodeStatus(BaseModel):
"""Model for node status query parameters.
Validates and documents the required parameters for
querying a specific node's status in the cluster.
"""
node: Annotated[str, Field(description="Name/ID of node to query (e.g. 'pve1', 'proxmox-node2')")]
class VMCommand(BaseModel):
"""Model for VM command execution parameters.
Validates and documents the required parameters for
executing commands within a VM via QEMU guest agent.
"""
node: Annotated[str, Field(description="Host node name (e.g. 'pve1', 'proxmox-node2')")]
vmid: Annotated[str, Field(description="VM ID number (e.g. '100', '101')")]
command: Annotated[str, Field(description="Shell command to run (e.g. 'uname -a', 'systemctl status nginx')")]
class ProxmoxConfig(BaseModel):
"""Model for Proxmox connection configuration.
Defines the required and optional parameters for
establishing a connection to the Proxmox API server.
Provides sensible defaults for optional parameters.
"""
host: str # Required: Proxmox host address
port: int = 8006 # Optional: API port (default: 8006)
verify_ssl: bool = True # Optional: SSL verification (default: True)
service: str = "PVE" # Optional: Service type (default: PVE)
class AuthConfig(BaseModel):
"""Model for Proxmox authentication configuration.
Defines the required parameters for API authentication
using token-based authentication. All fields are required
to ensure secure API access.
"""
user: str # Required: Username (e.g., 'root@pam')
token_name: str # Required: API token name
token_value: str # Required: API token secret
class LoggingConfig(BaseModel):
"""Model for logging configuration.
Defines logging parameters with sensible defaults.
Supports both file and console logging with
customizable format and log levels.
"""
level: str = "INFO" # Optional: Log level (default: INFO)
format: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" # Optional: Log format
file: Optional[str] = None # Optional: Log file path (default: None for console logging)
class Config(BaseModel):
"""Root configuration model.
Combines all configuration models into a single validated
configuration object. All sections are required to ensure
proper server operation.
"""
proxmox: ProxmoxConfig # Required: Proxmox connection settings
auth: AuthConfig # Required: Authentication credentials
logging: LoggingConfig # Required: Logging configuration