ha-mcp-dev 7.9.0.dev769__tar.gz → 7.10.0.dev772__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. {ha_mcp_dev-7.9.0.dev769/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.10.0.dev772}/PKG-INFO +66 -69
  2. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/README.md +64 -67
  3. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/pyproject.toml +3 -7
  4. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_mcp_component.py +17 -7
  5. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772/src/ha_mcp_dev.egg-info}/PKG-INFO +66 -69
  6. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp_dev.egg-info/requires.txt +1 -1
  7. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/LICENSE +0 -0
  8. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/MANIFEST.in +0 -0
  9. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/setup.cfg +0 -0
  10. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/__init__.py +0 -0
  11. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/__main__.py +0 -0
  12. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/_pypi_marker +0 -0
  13. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/_version.py +0 -0
  14. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/auth/__init__.py +0 -0
  15. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/auth/consent_form.py +0 -0
  16. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/auth/provider.py +0 -0
  17. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/backup_manager.py +0 -0
  18. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/client/__init__.py +0 -0
  19. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/client/rest_client.py +0 -0
  20. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/client/supervisor_client.py +0 -0
  21. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/client/websocket_client.py +0 -0
  22. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/client/websocket_listener.py +0 -0
  23. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/config.py +0 -0
  24. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  25. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  26. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  27. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/errors.py +0 -0
  28. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/policy/__init__.py +0 -0
  29. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/policy/approval_queue.py +0 -0
  30. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/policy/evaluator.py +0 -0
  31. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/policy/handlers.py +0 -0
  32. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/policy/middleware.py +0 -0
  33. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/policy/model.py +0 -0
  34. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/policy/persistence.py +0 -0
  35. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/policy/value_sources.py +0 -0
  36. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/py.typed +0 -0
  37. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/read_only.py +0 -0
  38. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  39. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  40. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  41. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  42. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  43. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  44. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  45. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  46. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  47. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  48. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  49. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
  50. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  51. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  52. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  53. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  54. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  55. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  56. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  57. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  58. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  59. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  60. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  61. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  62. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/server.py +0 -0
  63. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/settings_ui/__init__.py +0 -0
  64. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/settings_ui/settings.css +0 -0
  65. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/settings_ui/settings.html +0 -0
  66. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/settings_ui/settings.js +0 -0
  67. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/smoke_test.py +0 -0
  68. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  69. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/__init__.py +0 -0
  70. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/auto_backup.py +0 -0
  71. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/backup.py +0 -0
  72. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  73. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  74. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/device_control.py +0 -0
  75. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/enhanced.py +0 -0
  76. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/helpers.py +0 -0
  77. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/radio/__init__.py +0 -0
  78. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/radio/base.py +0 -0
  79. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/radio/matter.py +0 -0
  80. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/radio/thread.py +0 -0
  81. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  82. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/radio/zwave.py +0 -0
  83. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/reference_validator.py +0 -0
  84. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/registry.py +0 -0
  85. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  86. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  87. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  88. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  89. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  90. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  91. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  92. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  93. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  94. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  95. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_addons.py +0 -0
  96. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_areas.py +0 -0
  97. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  98. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  99. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_calendar.py +0 -0
  100. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_camera.py +0 -0
  101. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_categories.py +0 -0
  102. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_code.py +0 -0
  103. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  104. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  105. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  106. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  107. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  108. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  109. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_energy.py +0 -0
  110. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_entities.py +0 -0
  111. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  112. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_groups.py +0 -0
  113. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_hacs.py +0 -0
  114. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_history.py +0 -0
  115. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_integrations.py +0 -0
  116. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_labels.py +0 -0
  117. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_radio.py +0 -0
  118. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_registry.py +0 -0
  119. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_resources.py +0 -0
  120. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_search.py +0 -0
  121. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_service.py +0 -0
  122. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_services.py +0 -0
  123. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_system.py +0 -0
  124. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_themes.py +0 -0
  125. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_todo.py +0 -0
  126. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_traces.py +0 -0
  127. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_updates.py +0 -0
  128. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_utility.py +0 -0
  129. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  130. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  131. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/tools_zones.py +0 -0
  132. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/util_helpers.py +0 -0
  133. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/tools/validation_middleware.py +0 -0
  134. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/transforms/__init__.py +0 -0
  135. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/transforms/categorized_search.py +0 -0
  136. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  137. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/transport_security.py +0 -0
  138. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/update_check.py +0 -0
  139. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/__init__.py +0 -0
  140. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/config_hash.py +0 -0
  141. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/data_paths.py +0 -0
  142. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/domain_handlers.py +0 -0
  143. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  144. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  145. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/operation_manager.py +0 -0
  146. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/python_sandbox.py +0 -0
  147. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/skill_loader.py +0 -0
  148. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/utils/usage_logger.py +0 -0
  149. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/visibility/__init__.py +0 -0
  150. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/visibility/model.py +0 -0
  151. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/visibility/persistence.py +0 -0
  152. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp/visibility/resolver.py +0 -0
  153. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  154. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  155. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  156. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  157. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/tests/__init__.py +0 -0
  158. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/tests/test_constants.py +0 -0
  159. {ha_mcp_dev-7.9.0.dev769 → ha_mcp_dev-7.10.0.dev772}/tests/test_env_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 7.9.0.dev769
3
+ Version: 7.10.0.dev772
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Author-email: Julien <github@qc-h.net>
6
6
  License: MIT
@@ -19,7 +19,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
19
  Requires-Python: <3.15,>=3.13
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
- Requires-Dist: fastmcp==3.4.2
22
+ Requires-Dist: fastmcp==3.4.3
23
23
  Requires-Dist: httpx[socks]==0.28.1
24
24
  Requires-Dist: pydantic==2.13.4
25
25
  Requires-Dist: python-dotenv==1.2.2
@@ -34,7 +34,7 @@ Dynamic: license-file
34
34
  > **Breaking change (v7.3.0):** `ha_config_set_yaml` has been moved to [beta](docs/beta.md).
35
35
 
36
36
  <div align="center">
37
- <img src="docs/img/ha-mcp-logo.png" alt="Home Assistant MCP Server Logo" width="300"/>
37
+ <img src="https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/docs/img/ha-mcp-logo.png" alt="Home Assistant MCP Server Logo" width="300"/>
38
38
 
39
39
  # The Unofficial and Awesome Home Assistant MCP Server
40
40
 
@@ -61,23 +61,40 @@ Dynamic: license-file
61
61
 
62
62
  ---
63
63
 
64
- ![Demo with Claude Desktop](docs/img/demo.webp)
64
+ ![Demo with Claude Desktop](https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/docs/img/demo.webp)
65
65
 
66
66
  ---
67
67
 
68
68
  ## 🚀 Get Started
69
69
 
70
- **Set up for your operating system** you'll pick **Local (Claude Desktop)** or the **Home Assistant App** on the setup page:
70
+ The recommended way to run ha-mcp is the **HA-MCP Custom Component**. It installs into Home Assistant through HACS, runs the full server **in-process**, and works on **every** Home Assistant installation type — Home Assistant OS, Supervised, Container, and Core — with full feature parity. It is the easiest setup in every case, with no access token to manage.
71
71
 
72
- <p>
73
- <a href="https://homeassistant-ai.github.io/ha-mcp/setup/#easy-macos"><img src="https://img.shields.io/badge/Setup_Guide_for_macOS-000000?style=for-the-badge&logo=apple&logoColor=white" alt="Setup for macOS" height="120"></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://homeassistant-ai.github.io/ha-mcp/setup/#easy-linux"><img src="https://img.shields.io/badge/Setup_Guide_for_Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="Setup for Linux" height="120"></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://homeassistant-ai.github.io/ha-mcp/setup/#easy-windows"><img src="https://img.shields.io/badge/Setup_Guide_for_Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="Setup for Windows" height="120"></a>
74
- </p>
72
+ **Add it to Home Assistant via HACS (the preferred install):**
73
+
74
+ [![Add HA-MCP to HACS](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=homeassistant-ai&repository=ha-mcp-integration&category=integration)
75
+
76
+ **Quick start:**
77
+
78
+ 1. Install the **HA-MCP Custom Component** from HACS — click the badge above, or in HACS open **Integrations → ⋮ → Custom repositories**, add `https://github.com/homeassistant-ai/ha-mcp-integration` (category: **Integration**), then **Download**.
79
+ 2. **Restart Home Assistant.**
80
+ 3. Go to **Settings → Devices & Services → Add Integration**, search for **HA-MCP Custom Component**, choose **HA-MCP Server**, and click **Submit**. Creating the entry starts the server.
81
+ 4. Copy the connect URL from the entry's **Configure** screen (**Settings → Devices & Services → HA-MCP Custom Component → HA-MCP Server → Configure**) — it is also printed in the Home Assistant log. A notification confirms the server started and points you there.
82
+ 5. Paste that URL into your AI client — done.
83
+
84
+ **Connect URL.** The Configure screen gives you a Home Assistant webhook URL for remote clients — `https://<your-ha-domain>/api/webhook/<webhook-id>` through Nabu Casa or any reverse proxy already pointed at Home Assistant (locally, `http://<ha-host>:8123/api/webhook/<webhook-id>`). For clients on the same network, the server is also reachable directly at `http://<ha-ip>:9584/private_<random>`.
75
85
 
76
- Prefer to set it up by hand? The detailed paths are below.
86
+ - **Local only?** Turn off **Remote access via webhook** in the entry options — no webhook is registered at all, while the direct port and sidebar panel keep working.
87
+ - **Settings panel:** while the server runs, an admin-only **HA-MCP** panel appears in the Home Assistant sidebar for managing tools, feature flags, backups, and themes.
88
+ - **Optional authentication:** set **Webhook authentication** to `ha_auth` to require a Home Assistant account sign-in instead of using the secret URL as the credential.
89
+ - **Manual install (no HACS):** copy `custom_components/ha_mcp_tools/` from this repository into your Home Assistant `config/custom_components/` directory, then restart and add the integration as above.
77
90
 
78
- ### 🏠 Recommended: Home Assistant App (add-on)
91
+ The component's second entry type, **HA MCP Tools**, is only needed if you enable ha-mcp's opt-in file and YAML editing tools (feature flags, off by default) — skip it otherwise; you can add it later at any time.
79
92
 
80
- Running Home Assistant OS? Run ha-mcp **inside** Home Assistant — no access token to manage, works with Claude Desktop, Claude.ai, ChatGPT and any other MCP client, and can stay on your local network or be configured for remote / HTTP access.
93
+ [Full in-process server documentation →](docs/in-process-server.md) · [Setup Wizard for client-specific config →](https://homeassistant-ai.github.io/ha-mcp/setup/)
94
+
95
+ ### 🏠 Home Assistant App (add-on)
96
+
97
+ Prefer to run ha-mcp as a Home Assistant **app / add-on**? On **Home Assistant OS** and **Supervised** installs it is a close second — no access token to manage, and it works with Claude Desktop, Claude.ai, ChatGPT, and any other MCP client on your local network or configured for remote access.
81
98
 
82
99
  1. Add the repository to your Home Assistant instance:
83
100
 
@@ -86,33 +103,47 @@ Running Home Assistant OS? Run ha-mcp **inside** Home Assistant — no access to
86
103
  If that opens the App Store without an add-repository dialog (a [known Home Assistant issue](https://github.com/home-assistant/my.home-assistant.io/issues/698)), add it manually: **App Store → ⋮ → Repositories**, then paste `https://github.com/homeassistant-ai/ha-mcp`.
87
104
 
88
105
  2. Install **"Home Assistant MCP Server"** from the App Store and click **Start**. *(Home Assistant 2026.2 renamed "Add-ons" to "Apps"; on older versions this is the Add-on Store.)*
89
- 3. Open the **Logs** tab to find your unique MCP URL
90
- 4. Connect your AI client to that URL — **no token or credential setup needed**
106
+ 3. Open the **Logs** tab to find your unique MCP URL.
107
+ 4. Connect your AI client to that URL — **no token or credential setup needed**.
91
108
 
92
109
  [Full add-on documentation →](homeassistant-addon/DOCS.md)
93
110
 
94
- > ⚠️ **Two ways to run ha-mcp don't mix them.** The add-on above is the recommended path. The local **stdio** path below runs ha-mcp on your own computer; it is more advanced, has fewer features, and is behind most connection problems. If you use the add-on, your Claude Desktop config points at the add-on URL through `mcp-proxy` with **no token** — do **not** also keep a local `uvx ha-mcp@latest` entry (with `HOMEASSISTANT_URL` / `HOMEASSISTANT_TOKEN`) in your Claude Desktop config. Running both at once is a known cause of connection hangs.
111
+ > ⚠️ **Configure exactly one install method per client.** The custom component, the add-on, Docker/PyPI, and local stdio are independent ways to run the same server pick one and point your AI client at that single URL. Keeping two entries for the same server in one client (for example a local `uvx ha-mcp@latest` entry with `HOMEASSISTANT_URL` / `HOMEASSISTANT_TOKEN` alongside an add-on or component URL) is a known cause of connection hangs.
112
+
113
+ ### Other install methods
114
+
115
+ These run the server outside Home Assistant — useful for **Container** / **Core** installs (which can't run add-ons) or a separate host. The [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/) generates the exact client-specific config for each.
116
+
117
+ - **Docker (HTTP server):** run `ghcr.io/homeassistant-ai/ha-mcp` in HTTP mode, pointed at your Home Assistant URL and a long-lived token, and connect your client to its secret URL. See the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/) for the full command and per-client config.
118
+ - **PyPI / uvx (HTTP server):** run the published `ha-mcp` package with `uvx ha-mcp@latest` (or pip) as a streamable-HTTP server the same way. Details in the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/).
119
+ - **Local stdio (not recommended):** runs ha-mcp on your own machine over stdio. The one-command installers in the **Demo server** section below use this path; the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/) covers connecting it to your own Home Assistant.
120
+
121
+ > ⚠️ **stdio has known transport issues.** The stdio transport has connection problems that streamable HTTP does not ([#1713](https://github.com/homeassistant-ai/ha-mcp/issues/1713)). It is recommended only for demo/testing tinkering — for a real setup, use the custom component or an HTTP method above.
95
122
 
96
123
  <details>
97
- <summary><b>Run inside Home Assistant (Container / Core no add-on)</b></summary>
124
+ <summary><b>🌐 Remote access (Nabu Casa / Webhook Proxy add-on)</b></summary>
98
125
 
99
- Not on Home Assistant OS? Home Assistant **Container** and **Core** installs can't run add-ons, but the **HA-MCP Custom Component** (`ha_mcp_tools`) can run the **full ha-mcp server in-process**, inside Home Assistant no separate Docker container, no token to manage. It works on Home Assistant OS too, and coexists with the add-on. The connect URL is a Home Assistant webhook, so it reaches remote MCP clients through **Nabu Casa** (or any reverse proxy) with no extra tunnel.
126
+ > **Using the HA-MCP custom component?** You do not need this the component has its own built-in webhook for remote access (see the **Get Started** quick start at the top). This proxy is for the **add-on** (it can also front another external server via its `mcp_server_url` option).
100
127
 
101
- 1. Install **HA-MCP Custom Component** from HACS (the same repository you use for ha-mcp), or copy `custom_components/ha_mcp_tools` from this repository into your Home Assistant `config/custom_components/` directory; then restart Home Assistant
102
- 2. Add the integration (**Settings → Devices & Services → Add Integration → HA-MCP Custom Component**) and choose **HA-MCP Server** from the menu, then submit — creating the entry starts the server
103
- 3. Copy the connect URL from the **HA-MCP Server** notification (also shown on the entry's Configure screen)
104
- 4. Manage the server from the **HA-MCP** sidebar panel (admin-only web settings UI)
105
- 5. Connect your AI client to that URL
128
+ Already have **Nabu Casa** or another reverse proxy pointing at your Home Assistant? The Webhook Proxy add-on routes MCP traffic through your existing setup no separate tunnel or port forwarding needed.
129
+
130
+ 1. Install the **MCP Server add-on** (see above) and the **Webhook Proxy** add-on from the same store
131
+ 2. Start the webhook proxy and **restart Home Assistant** when prompted
132
+ 3. Copy the webhook URL from the add-on logs:
133
+ ```
134
+ MCP Server URL (remote): https://xxxxx.ui.nabu.casa/api/webhook/mcp_xxxxxxxx
135
+ ```
136
+ 4. Configure your AI client with that URL
106
137
 
107
- [Full in-process server documentation ](docs/in-process-server.md)
138
+ For other remote access methods (Cloudflare Tunnel, custom reverse proxy), see the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/).
108
139
 
109
- </details>
140
+ [Webhook proxy documentation →](https://github.com/homeassistant-ai/ha-mcp/blob/master/homeassistant-addon-webhook-proxy/DOCS.md)
110
141
 
111
- ### 💻 Run locally with Claude Desktop (stdio · advanced)
142
+ </details>
112
143
 
113
- *No paid subscription required.* This runs ha-mcp on your own machine over stdio.
144
+ ### 🧪 Demo server (Windows / macOS / Linux)
114
145
 
115
- ### Quick install (~5 min)
146
+ Want to try ha-mcp before connecting your own Home Assistant? *No paid subscription required.* These one-command scripts set up a local **stdio** connection to a hosted **demo** environment so you can see it working in a few minutes. Each script's **Connect your own Home Assistant** link then shows how to point it at your instance.
116
147
 
117
148
  <details>
118
149
  <summary><b>🍎 macOS</b></summary>
@@ -171,25 +202,6 @@ You're now connected to the demo environment! [Connect your own Home Assistant
171
202
 
172
203
  </details>
173
204
 
174
- <details>
175
- <summary><b>🌐 Remote Access (Nabu Casa / Webhook Proxy)</b></summary>
176
-
177
- Already have **Nabu Casa** or another reverse proxy pointing at your Home Assistant? The Webhook Proxy add-on routes MCP traffic through your existing setup — no separate tunnel or port forwarding needed.
178
-
179
- 1. Install the **MCP Server add-on** (see above) and the **Webhook Proxy** add-on from the same store
180
- 2. Start the webhook proxy and **restart Home Assistant** when prompted
181
- 3. Copy the webhook URL from the add-on logs:
182
- ```
183
- MCP Server URL (remote): https://xxxxx.ui.nabu.casa/api/webhook/mcp_xxxxxxxx
184
- ```
185
- 4. Configure your AI client with that URL
186
-
187
- For other remote access methods (Cloudflare Tunnel, custom reverse proxy), see the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/).
188
-
189
- [Webhook proxy documentation →](https://github.com/homeassistant-ai/ha-mcp/blob/master/homeassistant-addon-webhook-proxy/DOCS.md)
190
-
191
- </details>
192
-
193
205
  ### 🧙 Setup Wizard for 15+ clients
194
206
 
195
207
  **Claude Code, Gemini CLI, ChatGPT, Open WebUI, VSCode, Cursor, and more.**
@@ -290,9 +302,9 @@ ha-mcp is a standalone server built for **configuring, building, and debugging**
290
302
 
291
303
  ---
292
304
 
293
- ## 🔌 Custom Component (ha_mcp_tools) *(beta)*
305
+ ## 🔌 Custom Component (ha_mcp_tools) — File & YAML Services
294
306
 
295
- Some tools require a companion custom component installed in Home Assistant. Standard HA APIs do not expose file system access or YAML config editing. This component provides both.
307
+ The **HA-MCP Custom Component** also powers a set of privileged tools that standard Home Assistant APIs can't provide: file system access and YAML config editing. (The same component runs the full server in-process — that's the recommended install in the **Get Started** section at the top.) Its **HA MCP Tools** services entry enables the tools below.
296
308
 
297
309
  **Tools that require the component:**
298
310
 
@@ -306,34 +318,19 @@ Some tools require a companion custom component installed in Home Assistant. Sta
306
318
 
307
319
  All other tools work without the component. These five return an error with installation instructions if the component is missing.
308
320
 
309
- These tools also require feature flags: `HAMCP_ENABLE_FILESYSTEM_TOOLS=true` (file tools) and `ENABLE_YAML_CONFIG_EDITING=true` (YAML editing). To enable the `ha_install_mcp_tools` installer tool, set `HAMCP_ENABLE_CUSTOM_COMPONENT_INTEGRATION=true`.
310
-
311
- ### Install using HACS (recommended)
312
-
313
- [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=homeassistant-ai&repository=ha-mcp&category=integration)
314
-
315
- To add manually: open **HACS** > **Integrations** > three-dot menu > **Custom repositories** > add `https://github.com/homeassistant-ai/ha-mcp` (category: Integration) > **Download**.
316
-
317
- After installing, restart Home Assistant. Then open **Settings** > **Devices & Services** > **Add Integration** and search for **HA-MCP Custom Component**.
318
-
319
- Want a server too? Add the **HA-MCP Server** entry (see the in-process server section below) — it runs the full server inside Home Assistant on every install type. The add-on remains available from the add-on store for Home Assistant OS / Supervised users who prefer it.
321
+ These tools also require beta feature flags. See **[Beta Features](docs/beta.md)** for how to enable them including the `ENABLE_BETA_FEATURES` master flag, which must be on before the filesystem/YAML sub-flags take effect.
320
322
 
321
- ### Install manually
323
+ ### Install
322
324
 
323
- Copy `custom_components/ha_mcp_tools/` from this repository into your HA `config/custom_components/` directory. Restart Home Assistant, then add the integration as described above.
325
+ Install the **HA MCP Tools** services entry from the same **HA-MCP Custom Component**:
324
326
 
325
- ### Run the MCP server inside Home Assistant (in-process server entry)
327
+ [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=homeassistant-ai&repository=ha-mcp-integration&category=integration)
326
328
 
327
- The **HA-MCP Custom Component** offers a second config-entry type, **HA-MCP Server**, that runs the **full ha-mcp server in-process**, inside Home Assistant, and exposes it remotely through a Home Assistant webhook. This is a full install method in its own right — useful for **Home Assistant Container / Core** users who can't run add-ons, and available on Home Assistant OS too (it coexists with the add-on on a different default port, `9584` vs `9583`).
329
+ To add manually: open **HACS** > **Integrations** > three-dot menu > **Custom repositories** > add `https://github.com/homeassistant-ai/ha-mcp-integration` (category: Integration) > **Download**. Or copy `custom_components/ha_mcp_tools/` from this repository into your HA `config/custom_components/` directory.
328
330
 
329
- - **Install:** install **HA-MCP Custom Component** from HACS, or copy `custom_components/ha_mcp_tools` into your `config/custom_components/` directory and restart Home Assistant. Then **Add Integration HA-MCP Custom Component HA-MCP Server** and submit — creating the entry starts the server.
330
- - **Connect URL:** appears in the **HA-MCP Server** notification and on the entry's Configure screen. It's a Home Assistant webhook — `https://<nabu-casa-domain>/api/webhook/<id>` remotely (through Nabu Casa or any reverse proxy) or `http://<home-assistant-host>:8123/api/webhook/<id>` locally. The server is also reachable directly on its own port by default (set **Network access** to `127.0.0.1` to turn direct access off).
331
- - **Settings panel:** while the server runs, an admin-only **HA-MCP** panel in the Home Assistant sidebar opens its web settings UI (enable/disable/pin tools, feature flags, backups, themes) through Home Assistant itself — no loopback URL needed, the same idea as the add-on's "Open Web UI" button.
332
- - **Authentication:** by default the secret webhook URL is the credential; optionally require Home Assistant account sign-in (`ha_auth`) for clients that support it.
333
- - **Release channel:** the entry options let you pick `stable` (the pinned release) or `dev` (the latest development build, refreshed on every reload/restart).
334
- - **The HA MCP Tools services entry is optional but recommended alongside it** — that second entry type of the same component provides the privileged file/YAML services the server's file tools use, exactly as with the add-on, Docker, and pip installs.
331
+ After installing, restart Home Assistant, then open **Settings** > **Devices & Services** > **Add Integration**, search for **HA-MCP Custom Component**, and add the **HA MCP Tools** services entry.
335
332
 
336
- [Full in-process server documentation →](docs/in-process-server.md)
333
+ To run the full ha-mcp server in-process through this same component, see the **Get Started** section at the top and the [full in-process server documentation →](docs/in-process-server.md).
337
334
 
338
335
  ---
339
336
 
@@ -1,7 +1,7 @@
1
1
  > **Breaking change (v7.3.0):** `ha_config_set_yaml` has been moved to [beta](docs/beta.md).
2
2
 
3
3
  <div align="center">
4
- <img src="docs/img/ha-mcp-logo.png" alt="Home Assistant MCP Server Logo" width="300"/>
4
+ <img src="https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/docs/img/ha-mcp-logo.png" alt="Home Assistant MCP Server Logo" width="300"/>
5
5
 
6
6
  # The Unofficial and Awesome Home Assistant MCP Server
7
7
 
@@ -28,23 +28,40 @@
28
28
 
29
29
  ---
30
30
 
31
- ![Demo with Claude Desktop](docs/img/demo.webp)
31
+ ![Demo with Claude Desktop](https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/docs/img/demo.webp)
32
32
 
33
33
  ---
34
34
 
35
35
  ## 🚀 Get Started
36
36
 
37
- **Set up for your operating system** you'll pick **Local (Claude Desktop)** or the **Home Assistant App** on the setup page:
37
+ The recommended way to run ha-mcp is the **HA-MCP Custom Component**. It installs into Home Assistant through HACS, runs the full server **in-process**, and works on **every** Home Assistant installation type — Home Assistant OS, Supervised, Container, and Core — with full feature parity. It is the easiest setup in every case, with no access token to manage.
38
38
 
39
- <p>
40
- <a href="https://homeassistant-ai.github.io/ha-mcp/setup/#easy-macos"><img src="https://img.shields.io/badge/Setup_Guide_for_macOS-000000?style=for-the-badge&logo=apple&logoColor=white" alt="Setup for macOS" height="120"></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://homeassistant-ai.github.io/ha-mcp/setup/#easy-linux"><img src="https://img.shields.io/badge/Setup_Guide_for_Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="Setup for Linux" height="120"></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://homeassistant-ai.github.io/ha-mcp/setup/#easy-windows"><img src="https://img.shields.io/badge/Setup_Guide_for_Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="Setup for Windows" height="120"></a>
41
- </p>
39
+ **Add it to Home Assistant via HACS (the preferred install):**
40
+
41
+ [![Add HA-MCP to HACS](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=homeassistant-ai&repository=ha-mcp-integration&category=integration)
42
+
43
+ **Quick start:**
44
+
45
+ 1. Install the **HA-MCP Custom Component** from HACS — click the badge above, or in HACS open **Integrations → ⋮ → Custom repositories**, add `https://github.com/homeassistant-ai/ha-mcp-integration` (category: **Integration**), then **Download**.
46
+ 2. **Restart Home Assistant.**
47
+ 3. Go to **Settings → Devices & Services → Add Integration**, search for **HA-MCP Custom Component**, choose **HA-MCP Server**, and click **Submit**. Creating the entry starts the server.
48
+ 4. Copy the connect URL from the entry's **Configure** screen (**Settings → Devices & Services → HA-MCP Custom Component → HA-MCP Server → Configure**) — it is also printed in the Home Assistant log. A notification confirms the server started and points you there.
49
+ 5. Paste that URL into your AI client — done.
50
+
51
+ **Connect URL.** The Configure screen gives you a Home Assistant webhook URL for remote clients — `https://<your-ha-domain>/api/webhook/<webhook-id>` through Nabu Casa or any reverse proxy already pointed at Home Assistant (locally, `http://<ha-host>:8123/api/webhook/<webhook-id>`). For clients on the same network, the server is also reachable directly at `http://<ha-ip>:9584/private_<random>`.
42
52
 
43
- Prefer to set it up by hand? The detailed paths are below.
53
+ - **Local only?** Turn off **Remote access via webhook** in the entry options — no webhook is registered at all, while the direct port and sidebar panel keep working.
54
+ - **Settings panel:** while the server runs, an admin-only **HA-MCP** panel appears in the Home Assistant sidebar for managing tools, feature flags, backups, and themes.
55
+ - **Optional authentication:** set **Webhook authentication** to `ha_auth` to require a Home Assistant account sign-in instead of using the secret URL as the credential.
56
+ - **Manual install (no HACS):** copy `custom_components/ha_mcp_tools/` from this repository into your Home Assistant `config/custom_components/` directory, then restart and add the integration as above.
44
57
 
45
- ### 🏠 Recommended: Home Assistant App (add-on)
58
+ The component's second entry type, **HA MCP Tools**, is only needed if you enable ha-mcp's opt-in file and YAML editing tools (feature flags, off by default) — skip it otherwise; you can add it later at any time.
46
59
 
47
- Running Home Assistant OS? Run ha-mcp **inside** Home Assistant — no access token to manage, works with Claude Desktop, Claude.ai, ChatGPT and any other MCP client, and can stay on your local network or be configured for remote / HTTP access.
60
+ [Full in-process server documentation →](docs/in-process-server.md) · [Setup Wizard for client-specific config →](https://homeassistant-ai.github.io/ha-mcp/setup/)
61
+
62
+ ### 🏠 Home Assistant App (add-on)
63
+
64
+ Prefer to run ha-mcp as a Home Assistant **app / add-on**? On **Home Assistant OS** and **Supervised** installs it is a close second — no access token to manage, and it works with Claude Desktop, Claude.ai, ChatGPT, and any other MCP client on your local network or configured for remote access.
48
65
 
49
66
  1. Add the repository to your Home Assistant instance:
50
67
 
@@ -53,33 +70,47 @@ Running Home Assistant OS? Run ha-mcp **inside** Home Assistant — no access to
53
70
  If that opens the App Store without an add-repository dialog (a [known Home Assistant issue](https://github.com/home-assistant/my.home-assistant.io/issues/698)), add it manually: **App Store → ⋮ → Repositories**, then paste `https://github.com/homeassistant-ai/ha-mcp`.
54
71
 
55
72
  2. Install **"Home Assistant MCP Server"** from the App Store and click **Start**. *(Home Assistant 2026.2 renamed "Add-ons" to "Apps"; on older versions this is the Add-on Store.)*
56
- 3. Open the **Logs** tab to find your unique MCP URL
57
- 4. Connect your AI client to that URL — **no token or credential setup needed**
73
+ 3. Open the **Logs** tab to find your unique MCP URL.
74
+ 4. Connect your AI client to that URL — **no token or credential setup needed**.
58
75
 
59
76
  [Full add-on documentation →](homeassistant-addon/DOCS.md)
60
77
 
61
- > ⚠️ **Two ways to run ha-mcp don't mix them.** The add-on above is the recommended path. The local **stdio** path below runs ha-mcp on your own computer; it is more advanced, has fewer features, and is behind most connection problems. If you use the add-on, your Claude Desktop config points at the add-on URL through `mcp-proxy` with **no token** — do **not** also keep a local `uvx ha-mcp@latest` entry (with `HOMEASSISTANT_URL` / `HOMEASSISTANT_TOKEN`) in your Claude Desktop config. Running both at once is a known cause of connection hangs.
78
+ > ⚠️ **Configure exactly one install method per client.** The custom component, the add-on, Docker/PyPI, and local stdio are independent ways to run the same server pick one and point your AI client at that single URL. Keeping two entries for the same server in one client (for example a local `uvx ha-mcp@latest` entry with `HOMEASSISTANT_URL` / `HOMEASSISTANT_TOKEN` alongside an add-on or component URL) is a known cause of connection hangs.
79
+
80
+ ### Other install methods
81
+
82
+ These run the server outside Home Assistant — useful for **Container** / **Core** installs (which can't run add-ons) or a separate host. The [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/) generates the exact client-specific config for each.
83
+
84
+ - **Docker (HTTP server):** run `ghcr.io/homeassistant-ai/ha-mcp` in HTTP mode, pointed at your Home Assistant URL and a long-lived token, and connect your client to its secret URL. See the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/) for the full command and per-client config.
85
+ - **PyPI / uvx (HTTP server):** run the published `ha-mcp` package with `uvx ha-mcp@latest` (or pip) as a streamable-HTTP server the same way. Details in the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/).
86
+ - **Local stdio (not recommended):** runs ha-mcp on your own machine over stdio. The one-command installers in the **Demo server** section below use this path; the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/) covers connecting it to your own Home Assistant.
87
+
88
+ > ⚠️ **stdio has known transport issues.** The stdio transport has connection problems that streamable HTTP does not ([#1713](https://github.com/homeassistant-ai/ha-mcp/issues/1713)). It is recommended only for demo/testing tinkering — for a real setup, use the custom component or an HTTP method above.
62
89
 
63
90
  <details>
64
- <summary><b>Run inside Home Assistant (Container / Core no add-on)</b></summary>
91
+ <summary><b>🌐 Remote access (Nabu Casa / Webhook Proxy add-on)</b></summary>
65
92
 
66
- Not on Home Assistant OS? Home Assistant **Container** and **Core** installs can't run add-ons, but the **HA-MCP Custom Component** (`ha_mcp_tools`) can run the **full ha-mcp server in-process**, inside Home Assistant no separate Docker container, no token to manage. It works on Home Assistant OS too, and coexists with the add-on. The connect URL is a Home Assistant webhook, so it reaches remote MCP clients through **Nabu Casa** (or any reverse proxy) with no extra tunnel.
93
+ > **Using the HA-MCP custom component?** You do not need this the component has its own built-in webhook for remote access (see the **Get Started** quick start at the top). This proxy is for the **add-on** (it can also front another external server via its `mcp_server_url` option).
67
94
 
68
- 1. Install **HA-MCP Custom Component** from HACS (the same repository you use for ha-mcp), or copy `custom_components/ha_mcp_tools` from this repository into your Home Assistant `config/custom_components/` directory; then restart Home Assistant
69
- 2. Add the integration (**Settings → Devices & Services → Add Integration → HA-MCP Custom Component**) and choose **HA-MCP Server** from the menu, then submit — creating the entry starts the server
70
- 3. Copy the connect URL from the **HA-MCP Server** notification (also shown on the entry's Configure screen)
71
- 4. Manage the server from the **HA-MCP** sidebar panel (admin-only web settings UI)
72
- 5. Connect your AI client to that URL
95
+ Already have **Nabu Casa** or another reverse proxy pointing at your Home Assistant? The Webhook Proxy add-on routes MCP traffic through your existing setup no separate tunnel or port forwarding needed.
96
+
97
+ 1. Install the **MCP Server add-on** (see above) and the **Webhook Proxy** add-on from the same store
98
+ 2. Start the webhook proxy and **restart Home Assistant** when prompted
99
+ 3. Copy the webhook URL from the add-on logs:
100
+ ```
101
+ MCP Server URL (remote): https://xxxxx.ui.nabu.casa/api/webhook/mcp_xxxxxxxx
102
+ ```
103
+ 4. Configure your AI client with that URL
73
104
 
74
- [Full in-process server documentation ](docs/in-process-server.md)
105
+ For other remote access methods (Cloudflare Tunnel, custom reverse proxy), see the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/).
75
106
 
76
- </details>
107
+ [Webhook proxy documentation →](https://github.com/homeassistant-ai/ha-mcp/blob/master/homeassistant-addon-webhook-proxy/DOCS.md)
77
108
 
78
- ### 💻 Run locally with Claude Desktop (stdio · advanced)
109
+ </details>
79
110
 
80
- *No paid subscription required.* This runs ha-mcp on your own machine over stdio.
111
+ ### 🧪 Demo server (Windows / macOS / Linux)
81
112
 
82
- ### Quick install (~5 min)
113
+ Want to try ha-mcp before connecting your own Home Assistant? *No paid subscription required.* These one-command scripts set up a local **stdio** connection to a hosted **demo** environment so you can see it working in a few minutes. Each script's **Connect your own Home Assistant** link then shows how to point it at your instance.
83
114
 
84
115
  <details>
85
116
  <summary><b>🍎 macOS</b></summary>
@@ -138,25 +169,6 @@ You're now connected to the demo environment! [Connect your own Home Assistant
138
169
 
139
170
  </details>
140
171
 
141
- <details>
142
- <summary><b>🌐 Remote Access (Nabu Casa / Webhook Proxy)</b></summary>
143
-
144
- Already have **Nabu Casa** or another reverse proxy pointing at your Home Assistant? The Webhook Proxy add-on routes MCP traffic through your existing setup — no separate tunnel or port forwarding needed.
145
-
146
- 1. Install the **MCP Server add-on** (see above) and the **Webhook Proxy** add-on from the same store
147
- 2. Start the webhook proxy and **restart Home Assistant** when prompted
148
- 3. Copy the webhook URL from the add-on logs:
149
- ```
150
- MCP Server URL (remote): https://xxxxx.ui.nabu.casa/api/webhook/mcp_xxxxxxxx
151
- ```
152
- 4. Configure your AI client with that URL
153
-
154
- For other remote access methods (Cloudflare Tunnel, custom reverse proxy), see the [Setup Wizard](https://homeassistant-ai.github.io/ha-mcp/setup/).
155
-
156
- [Webhook proxy documentation →](https://github.com/homeassistant-ai/ha-mcp/blob/master/homeassistant-addon-webhook-proxy/DOCS.md)
157
-
158
- </details>
159
-
160
172
  ### 🧙 Setup Wizard for 15+ clients
161
173
 
162
174
  **Claude Code, Gemini CLI, ChatGPT, Open WebUI, VSCode, Cursor, and more.**
@@ -257,9 +269,9 @@ ha-mcp is a standalone server built for **configuring, building, and debugging**
257
269
 
258
270
  ---
259
271
 
260
- ## 🔌 Custom Component (ha_mcp_tools) *(beta)*
272
+ ## 🔌 Custom Component (ha_mcp_tools) — File & YAML Services
261
273
 
262
- Some tools require a companion custom component installed in Home Assistant. Standard HA APIs do not expose file system access or YAML config editing. This component provides both.
274
+ The **HA-MCP Custom Component** also powers a set of privileged tools that standard Home Assistant APIs can't provide: file system access and YAML config editing. (The same component runs the full server in-process — that's the recommended install in the **Get Started** section at the top.) Its **HA MCP Tools** services entry enables the tools below.
263
275
 
264
276
  **Tools that require the component:**
265
277
 
@@ -273,34 +285,19 @@ Some tools require a companion custom component installed in Home Assistant. Sta
273
285
 
274
286
  All other tools work without the component. These five return an error with installation instructions if the component is missing.
275
287
 
276
- These tools also require feature flags: `HAMCP_ENABLE_FILESYSTEM_TOOLS=true` (file tools) and `ENABLE_YAML_CONFIG_EDITING=true` (YAML editing). To enable the `ha_install_mcp_tools` installer tool, set `HAMCP_ENABLE_CUSTOM_COMPONENT_INTEGRATION=true`.
277
-
278
- ### Install using HACS (recommended)
279
-
280
- [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=homeassistant-ai&repository=ha-mcp&category=integration)
281
-
282
- To add manually: open **HACS** > **Integrations** > three-dot menu > **Custom repositories** > add `https://github.com/homeassistant-ai/ha-mcp` (category: Integration) > **Download**.
283
-
284
- After installing, restart Home Assistant. Then open **Settings** > **Devices & Services** > **Add Integration** and search for **HA-MCP Custom Component**.
285
-
286
- Want a server too? Add the **HA-MCP Server** entry (see the in-process server section below) — it runs the full server inside Home Assistant on every install type. The add-on remains available from the add-on store for Home Assistant OS / Supervised users who prefer it.
288
+ These tools also require beta feature flags. See **[Beta Features](docs/beta.md)** for how to enable them including the `ENABLE_BETA_FEATURES` master flag, which must be on before the filesystem/YAML sub-flags take effect.
287
289
 
288
- ### Install manually
290
+ ### Install
289
291
 
290
- Copy `custom_components/ha_mcp_tools/` from this repository into your HA `config/custom_components/` directory. Restart Home Assistant, then add the integration as described above.
292
+ Install the **HA MCP Tools** services entry from the same **HA-MCP Custom Component**:
291
293
 
292
- ### Run the MCP server inside Home Assistant (in-process server entry)
294
+ [![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=homeassistant-ai&repository=ha-mcp-integration&category=integration)
293
295
 
294
- The **HA-MCP Custom Component** offers a second config-entry type, **HA-MCP Server**, that runs the **full ha-mcp server in-process**, inside Home Assistant, and exposes it remotely through a Home Assistant webhook. This is a full install method in its own right — useful for **Home Assistant Container / Core** users who can't run add-ons, and available on Home Assistant OS too (it coexists with the add-on on a different default port, `9584` vs `9583`).
296
+ To add manually: open **HACS** > **Integrations** > three-dot menu > **Custom repositories** > add `https://github.com/homeassistant-ai/ha-mcp-integration` (category: Integration) > **Download**. Or copy `custom_components/ha_mcp_tools/` from this repository into your HA `config/custom_components/` directory.
295
297
 
296
- - **Install:** install **HA-MCP Custom Component** from HACS, or copy `custom_components/ha_mcp_tools` into your `config/custom_components/` directory and restart Home Assistant. Then **Add Integration HA-MCP Custom Component HA-MCP Server** and submit — creating the entry starts the server.
297
- - **Connect URL:** appears in the **HA-MCP Server** notification and on the entry's Configure screen. It's a Home Assistant webhook — `https://<nabu-casa-domain>/api/webhook/<id>` remotely (through Nabu Casa or any reverse proxy) or `http://<home-assistant-host>:8123/api/webhook/<id>` locally. The server is also reachable directly on its own port by default (set **Network access** to `127.0.0.1` to turn direct access off).
298
- - **Settings panel:** while the server runs, an admin-only **HA-MCP** panel in the Home Assistant sidebar opens its web settings UI (enable/disable/pin tools, feature flags, backups, themes) through Home Assistant itself — no loopback URL needed, the same idea as the add-on's "Open Web UI" button.
299
- - **Authentication:** by default the secret webhook URL is the credential; optionally require Home Assistant account sign-in (`ha_auth`) for clients that support it.
300
- - **Release channel:** the entry options let you pick `stable` (the pinned release) or `dev` (the latest development build, refreshed on every reload/restart).
301
- - **The HA MCP Tools services entry is optional but recommended alongside it** — that second entry type of the same component provides the privileged file/YAML services the server's file tools use, exactly as with the add-on, Docker, and pip installs.
298
+ After installing, restart Home Assistant, then open **Settings** > **Devices & Services** > **Add Integration**, search for **HA-MCP Custom Component**, and add the **HA MCP Tools** services entry.
302
299
 
303
- [Full in-process server documentation →](docs/in-process-server.md)
300
+ To run the full ha-mcp server in-process through this same component, see the **Get Started** section at the top and the [full in-process server documentation →](docs/in-process-server.md).
304
301
 
305
302
  ---
306
303
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "7.9.0.dev769"
7
+ version = "7.10.0.dev772"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's
@@ -28,7 +28,7 @@ classifiers = [
28
28
  ]
29
29
 
30
30
  dependencies = [
31
- "fastmcp==3.4.2",
31
+ "fastmcp==3.4.3",
32
32
  "httpx[socks]==0.28.1",
33
33
  "pydantic==2.13.4",
34
34
  "python-dotenv==1.2.2",
@@ -100,6 +100,7 @@ module = [
100
100
  "aiohasupervisor",
101
101
  "aiohasupervisor.*",
102
102
  "aiohttp",
103
+ "awesomeversion",
103
104
  "yarl",
104
105
  "voluptuous",
105
106
  "jsonschema",
@@ -221,11 +222,6 @@ dev = [
221
222
  version_toml = ["pyproject.toml:project.version"]
222
223
  version_variables = [
223
224
  "src/ha_mcp/__init__.py:__version__",
224
- # Keeps the in-process server's stable-channel pin in lockstep with the
225
- # released server/add-on version - a hand-edited pin would drift the
226
- # moment a release ships (owner: the server entry must always match the
227
- # add-on version to avoid confusion).
228
- "custom_components/ha_mcp_tools/const.py:PINNED_HA_MCP_VERSION",
229
225
  ]
230
226
  build_command = """
231
227
  pip install uv && uv lock
@@ -44,8 +44,12 @@ def is_custom_component_integration_enabled() -> bool:
44
44
  return bool(get_global_settings().enable_custom_component_integration)
45
45
 
46
46
 
47
- # Constants for ha_mcp_tools custom component
48
- MCP_TOOLS_REPO = "homeassistant-ai/ha-mcp"
47
+ # Constants for ha_mcp_tools custom component.
48
+ # The component is distributed through a dedicated HACS mirror repository (the
49
+ # one submitted to the HACS default store); the main repository stays matched
50
+ # so installs that predate the mirror are still recognized.
51
+ MCP_TOOLS_REPO = "homeassistant-ai/ha-mcp-integration"
52
+ MCP_TOOLS_LEGACY_REPO = "homeassistant-ai/ha-mcp"
49
53
  MCP_TOOLS_DOMAIN = "ha_mcp_tools"
50
54
 
51
55
 
@@ -57,10 +61,15 @@ class McpComponentTools:
57
61
 
58
62
  @staticmethod
59
63
  def _find_existing_repo(repos: list[dict[str, Any]]) -> dict[str, Any] | None:
60
- """Find the ha_mcp_tools repository in the HACS repository list."""
61
- for repo in repos:
62
- if repo.get("full_name", "").lower() == MCP_TOOLS_REPO.lower():
63
- return repo
64
+ """Find the ha_mcp_tools repository in the HACS repository list.
65
+
66
+ Prefers the canonical mirror repository, falling back to the legacy
67
+ main-repo entry left by installs that predate the mirror.
68
+ """
69
+ for name in (MCP_TOOLS_REPO, MCP_TOOLS_LEGACY_REPO):
70
+ for repo in repos:
71
+ if repo.get("full_name", "").lower() == name.lower():
72
+ return repo
64
73
  return None
65
74
 
66
75
  @staticmethod
@@ -77,7 +86,8 @@ class McpComponentTools:
77
86
  # for callers that never touch the installer flow.
78
87
  from .tools_hacs import wait_for_repo_registration
79
88
 
80
- repo = await wait_for_repo_registration(ws_client, MCP_TOOLS_REPO)
89
+ wait_name = (existing_repo or {}).get("full_name") or MCP_TOOLS_REPO
90
+ repo = await wait_for_repo_registration(ws_client, wait_name)
81
91
  if repo is not None:
82
92
  repo_id = str(repo.get("id"))
83
93