[project] name = "beget-mcp" version = "0.2.0" description = "Beget hosting MCP server — manage sites, domains, MySQL, FTP, DNS, cron, backups via AI agents" readme = "README.md" license = "MIT" license-files = ["LICENSE"] requires-python = ">=3.11" keywords = ["mcp", "model-context-protocol", "beget", "hosting", "dns", "claude"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: System Administrators", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP :: Site Management", "Topic :: System :: Systems Administration", ] dependencies = [ # Верхняя граница обязательна: mcp 2.0.0 (28.07.2026) убрал mcp.server.fastmcp, # на который опирается app.py. Снимать только вместе с миграцией на MCPServer. "mcp[cli]>=1.27,<2.0.0", "requests", "python-dotenv", # Опрос авторитативного NS напрямую: dns_verify и поле effective в dns_get. # Рекурсивный резолвер тут не годится — он отдаёт кеш, а не факт зоны. "dnspython>=2.6", ] [project.urls] Homepage = "https://badigit.github.io/beget-mcp/" Repository = "https://github.com/badigit/beget-mcp" Issues = "https://github.com/badigit/beget-mcp/issues" [project.scripts] beget-mcp = "mcp_beget.server:main" [project.optional-dependencies] test = [ "pytest>=8", "pytest-mock>=3.12", "responses>=0.25", "pytest-timeout>=2.3", ] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["src"] # Зависший тест неотличим от идущего: у dns_verify есть цикл ожидания, у пробы — # сеть. Метод thread обязателен явно: на Windows signal не работает (нет SIGALRM). timeout = 30 timeout_method = "thread" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/mcp_beget"] [tool.hatch.build.targets.wheel.sources] "src" = "" [tool.ruff] target-version = "py311" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] [tool.ruff.lint.isort] known-first-party = ["mcp_beget"]