[project] name = "proxmox-ve-mcp" version = "2.3.0" description = "MCP server for Proxmox VE management" readme = "README.md" authors = [ { name = "Artur Akmalov", email = "artur@akmalov.com" } ] license = "MIT" license-files = ["LICENSE"] requires-python = ">=3.14" keywords = ["mcp", "model-context-protocol", "proxmox", "proxmox-ve", "homelab", "llm"] classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: System Administrators", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.14", "Topic :: System :: Systems Administration", "Typing :: Typed", ] dependencies = [ "mcp>=2.1", "proxmoxer>=2.1", "requests>=2.32", "pydantic-settings>=2.9", ] [project.optional-dependencies] # Opt-in telemetry. 2.68 is the first release whose MCP integration speaks the # mcp 2.x server API; older ones only patch the 1.x lowlevel Server. sentry = ["sentry-sdk>=2.68"] [project.urls] Homepage = "https://github.com/akmalovaa/proxmox-mcp" Repository = "https://github.com/akmalovaa/proxmox-mcp" Issues = "https://github.com/akmalovaa/proxmox-mcp/issues" Changelog = "https://github.com/akmalovaa/proxmox-mcp/releases" [project.scripts] proxmox-ve-mcp = "proxmox_mcp.server:main" # Alias under the repository name. The distribution had to be renamed for PyPI, # but tooling that derives the command from the repo (Glama's build spec does) # still spawns `proxmox-mcp` and fails with "No such file or directory". proxmox-mcp = "proxmox_mcp.server:main" [build-system] requires = ["uv_build>=0.11.3,<0.12.0"] build-backend = "uv_build" [tool.uv.build-backend] module-name = "proxmox_mcp" [dependency-groups] dev = [ "pytest>=8.3", "ruff>=0.7", "mypy>=1.13", # The extra, so CI exercises the Sentry path instead of skipping it. "sentry-sdk>=2.68", ] [tool.ruff] line-length = 100 target-version = "py314" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] [tool.mypy] python_version = "3.14" files = ["src"] check_untyped_defs = true [[tool.mypy.overrides]] module = ["mcp.*", "proxmoxer.*", "pydantic_settings.*"] ignore_missing_imports = true [tool.pytest.ini_options] testpaths = ["tests"]