Skip to main content
Glama
auth.py•2.31 kB
""" Authentication utilities for the Proxmox MCP server. """ import os from typing import Dict, Optional, Tuple from pydantic import BaseModel class ProxmoxAuth(BaseModel): """Proxmox authentication configuration.""" user: str token_name: str token_value: str def load_auth_from_env() -> ProxmoxAuth: """ Load Proxmox authentication details from environment variables. Environment Variables: PROXMOX_USER: Username with realm (e.g., 'root@pam' or 'user@pve') PROXMOX_TOKEN_NAME: API token name PROXMOX_TOKEN_VALUE: API token value Returns: ProxmoxAuth: Authentication configuration Raises: ValueError: If required environment variables are missing """ user = os.getenv("PROXMOX_USER") token_name = os.getenv("PROXMOX_TOKEN_NAME") token_value = os.getenv("PROXMOX_TOKEN_VALUE") if not all([user, token_name, token_value]): missing = [] if not user: missing.append("PROXMOX_USER") if not token_name: missing.append("PROXMOX_TOKEN_NAME") if not token_value: missing.append("PROXMOX_TOKEN_VALUE") raise ValueError(f"Missing required environment variables: {', '.join(missing)}") return ProxmoxAuth( user=user, token_name=token_name, token_value=token_value, ) def parse_user(user: str) -> Tuple[str, str]: """ Parse a Proxmox user string into username and realm. Args: user: User string in format 'username@realm' Returns: Tuple[str, str]: (username, realm) Raises: ValueError: If user string is not in correct format """ try: username, realm = user.split("@") return username, realm except ValueError: raise ValueError( "Invalid user format. Expected 'username@realm' (e.g., 'root@pam' or 'user@pve')" ) def get_auth_dict(auth: ProxmoxAuth) -> Dict[str, str]: """ Convert ProxmoxAuth model to dictionary for Proxmoxer API. Args: auth: ProxmoxAuth configuration Returns: Dict[str, str]: Authentication dictionary for Proxmoxer """ return { "user": auth.user, "token_name": auth.token_name, "token_value": auth.token_value, }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RekklesNA/ProxmoxMCP-Plus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server