[project] name = "mcp-unifi" version = "1.0.1" description = "MCP server for UniFi Network and Protect API integration" readme = "README.md" license = "MIT" authors = [{name = "Mike Holownych", email = "mike@holownych.com"}] keywords = ["mcp", "unifi", "ubiquiti", "network", "automation"] requires-python = ">=3.11" dependencies = [ "mcp>=2.1,<3", "aiosqlite>=0.20,<1", "httpx>=0.28.0", "pydantic>=2.0", "pydantic-settings>=2.0", "tenacity>=8.0.0", "cachetools>=5.0.0", ] [project.optional-dependencies] protect = ["uiprotect>=6.0.0"] observability = ["prometheus-client>=0.22,<1"] oidc = ["PyJWT[crypto]>=2.10,<3"] [dependency-groups] dev = [ "pytest>=8,<10", "pytest-asyncio>=0.24,<2", "respx>=0.22,<1", "ruff>=0.8", ] [project.scripts] unifi-mcp = "unifi_mcp.server:main" [project.urls] Repository = "https://github.com/mikeholownych/unifi-mcp" "Original Project" = "https://github.com/gbassaragh/Unifi-mcp" [tool.poetry] packages = [{include = "unifi_mcp", from = "src"}] [tool.poetry.dependencies] python = ">=3.11" mcp = ">=2.1,<3" aiosqlite = ">=0.20,<1" httpx = "^0.28.0" pydantic = "^2.0" pydantic-settings = "^2.0" tenacity = "^8.0.0" cachetools = "^5.0.0" [tool.poetry.group.dev.dependencies] pytest = ">=8,<10" pytest-asyncio = ">=0.24,<2" respx = ">=0.22,<1" ruff = ">=0.8" [tool.poetry.group.protect.dependencies] uiprotect = {version = "^6.0.0", optional = true} [tool.poetry.group.observability.dependencies] prometheus-client = {version = "^0.22.0", optional = true} [tool.poetry.group.oidc.dependencies] pyjwt = {version = "^2.10.0", extras = ["crypto"], optional = true} [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP", "B", "C4", "SIM"] ignore = ["E501"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"]