{"name":"io.github.NickoScope/nickol-knx-mcp","slug":"nickoscope-nickol-knx-mcp","title":"nickol-knx","description":"Read-only KNX/ETS project auditor: validates a .knxproj and generates Home Assistant YAML","url":"https://mcp.market/server/nickoscope-nickol-knx-mcp","rating":null,"grade":"A","score":89,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":44,"stars":25,"forks":4,"downloads_week":345,"last_push_at":"2026-09-16T17:20:51.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/NickoScope/nickol-knx-mcp","website":"https://nickoscope.github.io/nickol-knx-mcp","version":"0.8.2","remotes":[],"packages":[{"registryType":"pypi","identifier":"nickol-knx-mcp","version":"0.8.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"Directory the server may write generated files into (reports, HA YAML, ETS exports). Defaults to ./knx-workspace","name":"NICKOL_KNX_WORKSPACE"},{"description":"Optional path to a local device catalog for exact vendor decomposition","name":"NICKOL_KNX_CATALOG"}]}],"tools":[{"name":"analyze_all","description":"Run every check and return the report summary plus all findings.","write_action":true,"price_micros":0,"input_schema":null},{"name":"check_device_parameters","description":"Find the device whose ETS **parameter** settings differ from its N identical siblings — the odd thermostat/sensor out (e.g. one thermostat with a different setpoint/hysteresis, one presence detector with a different detection time).","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_dpt","description":"Detect missing, inconsistent or mismatched DPTs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_energy","description":"Check the metering/energy domain (energy DPTs 13.x / 14.056) and suggest a per-circuit / PV / battery / EVSE structure for the HA energy dashboard.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_matter","description":"Matter-readiness lint: which controllable functions round-trip to a Matter cluster (have command + status + a decodable DPT) and which won't.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_missing_status","description":"Detect controllable GAs lacking a status/feedback counterpart.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_naming","description":"Validate naming conventions and 3-level structure.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_policy","description":"Validate the loaded project against a **Project Policy Profile** — *your* agreed rules (main-group taxonomy, naming regex, command/status exemptions), not one universal \"standard\". Flags GAs whose domain doesn't match the main group your policy assigns, and names that don't match your pattern. Pass `profile_path` to a YAML profile (omit to validate against the taxonomy inferred from the project it","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_secure","description":"Summarise KNX Data Secure posture + the keyring handover checklist.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_topology","description":"Check topology capacity and individual-address validity (KNX Handbook).","write_action":false,"price_micros":0,"input_schema":null},{"name":"compose_rooms","description":"Compose a **new** KNX project from a list of room templates (constructor).","write_action":false,"price_micros":0,"input_schema":null},{"name":"decompose_device","description":"Expand a device into its group-address decomposition recipe.","write_action":false,"price_micros":0,"input_schema":null},{"name":"diff_projects","description":"Semantic diff between two .knxproj files (path_a = base/old, path_b = new): added / removed GAs, DPT changes, renames, security-flag changes. Read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"explain_ga","description":"**Provenance** for one group address — why the tool classified it the way it did. Replays the classification and shows, per decision (category / kind / status pairing), the signals that fired with a **confidence tier**: authoritative (an ETS Function role) > structural (the KNX DPT) > heuristic (a name keyword). Flags **conflicts** (e.g. a GA the DPT calls `lighting` while its name says \"AC\") — th","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_ets_group_addresses","description":"Generate an ETS-importable Group Address export.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_ha_package","description":"Generate a Home Assistant KNX package YAML.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_handover_pack","description":"Generate a project handover pack (as-built deliverable for commissioning).","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_knx_iot","description":"Export a KNX IoT semantic view (Turtle/RDF) of the project's functional datapoints — a pragmatic skeleton for the IP-native model, for review.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_test_protocol","description":"Draft a functional acceptance protocol (per function: command → expected status, pass/fail/sign-off) as Markdown. Execution is manual/on-site; this only drafts it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_devices","description":"List devices (individual address, name, order number, manufacturer), sorted by individual address (area/line/device numerically). Same paging contract as `list_group_addresses`: `next_cursor` / `total_matched` / `returned`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_topology","description":"Return the area/line/device topology tree.","write_action":false,"price_micros":0,"input_schema":null},{"name":"grade_completeness","description":"Grade the project: bare functional skeleton vs as-built grade — by the presence of the professional patterns (central macros, device tuning, astro/meteo, monitoring, deep metering, scenes, reserves, a debug main).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_device_recipes","description":"List the device decomposition recipes in the built-in device library.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_group_addresses","description":"List parsed group addresses with classification, in a **stable order**.","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_ga_export","description":"Load an ETS group-address export (ga-export/01 XML) instead of a full .knxproj.","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_project","description":"Parse a .knxproj file (read-only) and cache it for the session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_devices_from_project","description":"Extract exact device object models from a .knxproj / .knxprod application programs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_report","description":"Produce the human-readable Markdown report (review before any import).","write_action":false,"price_micros":0,"input_schema":null},{"name":"suggest_names","description":"Naming hygiene suggestions (empty names, status GAs missing a status keyword).","write_action":false,"price_micros":0,"input_schema":null},{"name":"suggest_repairs","description":"Propose concrete fixes for the project's findings — repair, don't just flag.","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_room_template","description":"Validate a Room Library template against the R1 schema (report-only).","write_action":false,"price_micros":0,"input_schema":null},{"name":"workspace_info","description":"Show the confined output workspace and the safety guarantees.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":89,"grade":"A","scanned_at":"2026-09-19T20:03:34.902Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:03:34.893Z","components":{"code":{"score":25,"max":25,"notes":["32 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"nickol-knx-mcp","version":"0.8.2","found":true,"license":"MIT","dependencyCount":4,"publishedAt":"2026-09-14T07:04:30.812932Z","repositoryUrl":"https://github.com/NickoScope/nickol-knx-mcp"}],"repo":{"found":true,"owner":"NickoScope","repo":"nickol-knx-mcp","archived":false,"pushedAt":"2026-09-16T17:20:51Z","stars":25,"forks":4,"openIssues":3,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/266463776?v=4","ownerCreatedAt":"2026-03-08T09:32:26Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/266463776?v=4&s=128","source":"registry"},"presence":{"stars":25,"forks":4,"downloadsWeek":345,"license":"MIT","lastPushAt":"2026-09-16T17:20:51.000Z","score":44}}}},"grade_history":[],"reviews":[]}