[build-system] requires = ["setuptools>=77"] build-backend = "setuptools.build_meta" [project] name = "mcp-unifi-applications" version = "0.4.0" description = "MCP server exposing UniFi application API documentation (Network, Protect, Site Manager, InnerSpace, Mobility, Carrier Fabric) as queryable tools" license = "MIT" readme = "README.md" requires-python = ">=3.11" authors = [ { name = "Dominic Bussemas" }, ] keywords = ["mcp", "unifi", "ubiquiti", "api", "documentation", "claude", "protect", "site-manager", "innerspace", "mobility", "carrier-fabric"] classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Documentation", "Topic :: Software Development :: Documentation", "Topic :: System :: Networking", "Topic :: System :: Systems Administration", ] dependencies = [ "fastmcp>=3.4", "rapidfuzz>=3.14.5", ] [project.urls] Homepage = "https://github.com/KallistoX/mcp-unifi-applications" Documentation = "https://github.com/KallistoX/mcp-unifi-applications#readme" Repository = "https://github.com/KallistoX/mcp-unifi-applications" Issues = "https://github.com/KallistoX/mcp-unifi-applications/issues" Changelog = "https://github.com/KallistoX/mcp-unifi-applications/releases" [project.optional-dependencies] dev = ["pytest>=8.0", "ruff>=0.14"] [project.scripts] mcp-unifi-applications = "mcp_unifi_applications.server:mcp.run" [tool.setuptools.packages.find] where = ["src"] # The scraped docs are the payload — without them an installed server has nothing to serve. [tool.setuptools.package-data] "mcp_unifi_applications" = ["docs/*/*.json"] [tool.ruff] src = ["src"] line-length = 120 target-version = "py311" [tool.ruff.lint] # Pin the rule set explicitly so a ruff default-rule expansion (as in 0.16, # which newly enabled I/PERF) can't fail CI out of the blue. This is ruff's # classic stable default (E4/E7/E9, F) plus isort import sorting (I). select = ["E4", "E7", "E9", "F", "I"]