[project] name = "nickol-knx-mcp" version = "0.8.2" description = "Design-time KNX/ETS6 project assistant as an MCP server (parse .knxproj, validate, generate HA YAML + ETS CSV/XML). No live bus access." readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [{ name = "Nikolay Miroshnichenko" }] keywords = ["knx", "ets", "ets6", "home-assistant", "mcp", "model-context-protocol", "smart-home", "home-automation"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Home Automation", "Topic :: Software Development :: Libraries", ] dependencies = [ "mcp>=1.10,<2", # v2 renames mcp.server.fastmcp.FastMCP -> mcp.server.MCPServer (breaking) "xknxproject>=3.8", "PyYAML>=6.0", "defusedxml>=0.7", # hardened XML parsing of untrusted .knxproj (XXE/billion-laughs) ] [project.urls] Homepage = "https://github.com/NickoScope/nickol-knx-mcp" Repository = "https://github.com/NickoScope/nickol-knx-mcp" Issues = "https://github.com/NickoScope/nickol-knx-mcp/issues" Changelog = "https://github.com/NickoScope/nickol-knx-mcp/blob/main/CHANGELOG.md" [project.scripts] nickol-knx-mcp = "nickol_knx_mcp.server:main" [build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [tool.setuptools] packages = ["nickol_knx_mcp"] [tool.setuptools.package-data] nickol_knx_mcp = ["room_templates/*.yaml", "room_templates/*.md"] [tool.ruff] target-version = "py310" line-length = 110 [tool.ruff.lint] # Deliberately narrow: real errors, not style. E9 = syntax/IO errors, F = pyflakes # (undefined names, unused imports, broken f-strings). Style rules are left off so the # gate stays meaningful instead of noisy. select = ["E9", "F"] [tool.mypy] python_version = "3.10" ignore_missing_imports = true files = ["nickol_knx_mcp"]