ha-mcp-dev 7.6.0.dev657__tar.gz → 7.6.0.dev659__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.
- {ha_mcp_dev-7.6.0.dev657/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.6.0.dev659}/PKG-INFO +21 -1
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/README.md +20 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/pyproject.toml +1 -1
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/server.py +5 -1
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_automations.py +28 -7
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_scripts.py +4 -4
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659/src/ha_mcp_dev.egg-info}/PKG-INFO +21 -1
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/LICENSE +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/setup.cfg +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/_version.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/backup_manager.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/client/supervisor_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/policy/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/policy/approval_queue.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/policy/evaluator.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/policy/handlers.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/policy/middleware.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/policy/model.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/policy/persistence.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/policy/value_sources.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/settings.css +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/settings.js +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/settings_ui.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/auto_backup.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/backup.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/reference_validator.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_base.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_config.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_addons.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_areas.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_blueprints.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_bug_report.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_calendar.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_camera.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_categories.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_code.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_energy.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_entities.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_filesystem.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_groups.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_hacs.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_history.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_integrations.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_labels.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_registry.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_resources.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_service.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_services.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_system.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_todo.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_traces.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_updates.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_utility.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_zones.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/validation_middleware.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/config_hash.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/data_paths.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/skill_loader.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/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.6.0.
|
|
3
|
+
Version: 7.6.0.dev659
|
|
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
|
|
@@ -245,6 +245,26 @@ Spend less time configuring, more time enjoying your smart home.
|
|
|
245
245
|
|
|
246
246
|
---
|
|
247
247
|
|
|
248
|
+
## 🆚 ha-mcp vs. Home Assistant's built-in MCP Server
|
|
249
|
+
|
|
250
|
+
Home Assistant ships its own [MCP Server integration](https://www.home-assistant.io/integrations/mcp_server/). It is built on the **Assist** pipeline, so a connected MCP client can read and control the entities you have exposed to Assist and run the intents Assist understands — handy for voice-style control of already-exposed devices.
|
|
251
|
+
|
|
252
|
+
ha-mcp is a standalone server built for **configuring, building, and debugging** your smart home, not just controlling it. On top of device control, it adds capabilities the built-in integration does not have:
|
|
253
|
+
|
|
254
|
+
| Capability | Built-in MCP Server | ha-mcp |
|
|
255
|
+
|------------|:-------------------:|:------:|
|
|
256
|
+
| Control exposed devices, query states | Yes | Yes |
|
|
257
|
+
| Entity scope | Only entities exposed to Assist | Everything in Home Assistant |
|
|
258
|
+
| Create / edit automations, scripts, scenes | No | Yes |
|
|
259
|
+
| Build & edit dashboards | No | Yes |
|
|
260
|
+
| Debug automations from traces, read history & logs | No | Yes |
|
|
261
|
+
| Manage helpers, areas, zones, labels, groups | No | Yes |
|
|
262
|
+
| Backups, add-ons, HACS, device & entity registry | No | Yes |
|
|
263
|
+
|
|
264
|
+
**Rule of thumb:** Use the built-in integration for voice-style control of devices you have already exposed; use ha-mcp when you want an AI assistant that can also build and maintain your Home Assistant setup.
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
248
268
|
## 🔌 Custom Component (ha_mcp_tools) *(beta)*
|
|
249
269
|
|
|
250
270
|
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.
|
|
@@ -215,6 +215,26 @@ Spend less time configuring, more time enjoying your smart home.
|
|
|
215
215
|
|
|
216
216
|
---
|
|
217
217
|
|
|
218
|
+
## 🆚 ha-mcp vs. Home Assistant's built-in MCP Server
|
|
219
|
+
|
|
220
|
+
Home Assistant ships its own [MCP Server integration](https://www.home-assistant.io/integrations/mcp_server/). It is built on the **Assist** pipeline, so a connected MCP client can read and control the entities you have exposed to Assist and run the intents Assist understands — handy for voice-style control of already-exposed devices.
|
|
221
|
+
|
|
222
|
+
ha-mcp is a standalone server built for **configuring, building, and debugging** your smart home, not just controlling it. On top of device control, it adds capabilities the built-in integration does not have:
|
|
223
|
+
|
|
224
|
+
| Capability | Built-in MCP Server | ha-mcp |
|
|
225
|
+
|------------|:-------------------:|:------:|
|
|
226
|
+
| Control exposed devices, query states | Yes | Yes |
|
|
227
|
+
| Entity scope | Only entities exposed to Assist | Everything in Home Assistant |
|
|
228
|
+
| Create / edit automations, scripts, scenes | No | Yes |
|
|
229
|
+
| Build & edit dashboards | No | Yes |
|
|
230
|
+
| Debug automations from traces, read history & logs | No | Yes |
|
|
231
|
+
| Manage helpers, areas, zones, labels, groups | No | Yes |
|
|
232
|
+
| Backups, add-ons, HACS, device & entity registry | No | Yes |
|
|
233
|
+
|
|
234
|
+
**Rule of thumb:** Use the built-in integration for voice-style control of devices you have already exposed; use ha-mcp when you want an AI assistant that can also build and maintain your Home Assistant setup.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
218
238
|
## 🔌 Custom Component (ha_mcp_tools) *(beta)*
|
|
219
239
|
|
|
220
240
|
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.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "7.6.0.
|
|
7
|
+
version = "7.6.0.dev659"
|
|
8
8
|
description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13,<3.14"
|
|
@@ -1212,7 +1212,11 @@ class HomeAssistantSmartMCPServer(EnhancedToolsMixin):
|
|
|
1212
1212
|
self.mcp.tool(
|
|
1213
1213
|
name=SKILL_TOOL_NAME,
|
|
1214
1214
|
description=tool_description,
|
|
1215
|
-
annotations={
|
|
1215
|
+
annotations={
|
|
1216
|
+
"readOnlyHint": True,
|
|
1217
|
+
"idempotentHint": True,
|
|
1218
|
+
"title": "Get Home Assistant Best Practices Skill Guide",
|
|
1219
|
+
},
|
|
1216
1220
|
tags={"System"},
|
|
1217
1221
|
)(ha_get_skill_guide)
|
|
1218
1222
|
logger.info(
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
@@ -566,7 +566,7 @@ class AutomationConfigTools:
|
|
|
566
566
|
"alias": "Morning Lights",
|
|
567
567
|
"description": "Turn on bedroom lights at 7 AM to help wake up",
|
|
568
568
|
"trigger": [{"platform": "time", "at": "07:00:00"}],
|
|
569
|
-
"action": [{"
|
|
569
|
+
"action": [{"action": "light.turn_on", "target": {"area_id": "bedroom"}}]
|
|
570
570
|
})
|
|
571
571
|
|
|
572
572
|
Motion-activated lighting — `for:` on the off-transition replaces action-delay:
|
|
@@ -583,9 +583,9 @@ class AutomationConfigTools:
|
|
|
583
583
|
{"condition": "trigger", "id": "motion_on"},
|
|
584
584
|
{"condition": "sun", "after": "sunset"}
|
|
585
585
|
],
|
|
586
|
-
"sequence": [{"
|
|
586
|
+
"sequence": [{"action": "light.turn_on", "target": {"entity_id": "light.hallway"}}]},
|
|
587
587
|
{"conditions": [{"condition": "trigger", "id": "motion_off"}],
|
|
588
|
-
"sequence": [{"
|
|
588
|
+
"sequence": [{"action": "light.turn_off", "target": {"entity_id": "light.hallway"}}]}
|
|
589
589
|
]}
|
|
590
590
|
]
|
|
591
591
|
})
|
|
@@ -597,8 +597,8 @@ class AutomationConfigTools:
|
|
|
597
597
|
"alias": "Updated Morning Routine",
|
|
598
598
|
"trigger": [{"platform": "time", "at": "06:30:00"}],
|
|
599
599
|
"action": [
|
|
600
|
-
{"
|
|
601
|
-
{"
|
|
600
|
+
{"action": "light.turn_on", "target": {"area_id": "bedroom"}},
|
|
601
|
+
{"action": "climate.set_temperature", "target": {"entity_id": "climate.bedroom"}, "data": {"temperature": 22}}
|
|
602
602
|
]
|
|
603
603
|
}
|
|
604
604
|
)
|
|
@@ -636,7 +636,7 @@ class AutomationConfigTools:
|
|
|
636
636
|
|
|
637
637
|
TRIGGER TYPES: time, time_pattern, sun, state, numeric_state, event, device, zone, template, and more
|
|
638
638
|
CONDITION TYPES: state, numeric_state, time, sun, template, device, zone, and more
|
|
639
|
-
ACTION TYPES:
|
|
639
|
+
ACTION TYPES: action calls, delays, wait_for_trigger, wait_template, if/then/else, choose, repeat, parallel
|
|
640
640
|
|
|
641
641
|
For comprehensive automation documentation with all trigger/condition/action types and advanced examples:
|
|
642
642
|
- Use: ha_get_skill_guide
|
|
@@ -747,13 +747,34 @@ class AutomationConfigTools:
|
|
|
747
747
|
and e.status_code == 404
|
|
748
748
|
):
|
|
749
749
|
await self._raise_automation_not_found(identifier)
|
|
750
|
+
error_text = str(e)
|
|
750
751
|
suggestions = [
|
|
751
752
|
"Check automation configuration format",
|
|
752
753
|
"Ensure required fields: alias, trigger, action",
|
|
753
754
|
"Use entity_id format: automation.morning_routine or unique_id",
|
|
754
755
|
"Use ha_search_entities(domain_filter='automation') to find automations",
|
|
755
|
-
"Use ha_get_skill_guide for
|
|
756
|
+
"Use ha_get_skill_guide for automation examples",
|
|
756
757
|
]
|
|
758
|
+
if isinstance(e, HomeAssistantAPIError):
|
|
759
|
+
if "'service'" in error_text and "not allowed" in error_text:
|
|
760
|
+
suggestions.insert(
|
|
761
|
+
0,
|
|
762
|
+
"Use 'action:' not 'service:' for service calls in action steps "
|
|
763
|
+
"(renamed in HA 2024.8).",
|
|
764
|
+
)
|
|
765
|
+
elif "unexpected keyword argument" in error_text.lower():
|
|
766
|
+
suggestions.insert(
|
|
767
|
+
0,
|
|
768
|
+
"An action step contains a field that belongs at the automation root "
|
|
769
|
+
"(e.g. alias, trigger, condition). Each action step should only contain "
|
|
770
|
+
"action/target/data/delay/choose/if/repeat/parallel keys.",
|
|
771
|
+
)
|
|
772
|
+
elif "'variables'" in error_text and "dictionary" in error_text:
|
|
773
|
+
suggestions.insert(
|
|
774
|
+
0,
|
|
775
|
+
"variables must be a dict mapping names to values, "
|
|
776
|
+
'e.g. {"variables": {"my_var": 42}}',
|
|
777
|
+
)
|
|
757
778
|
if bp_warnings:
|
|
758
779
|
suggestions.append(
|
|
759
780
|
"Config had best-practice issues that may be related: "
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
@@ -512,9 +512,9 @@ class ConfigScriptTools:
|
|
|
512
512
|
Create service call script:
|
|
513
513
|
ha_config_set_script(script_id="blink_light", config={
|
|
514
514
|
"sequence": [
|
|
515
|
-
{"
|
|
515
|
+
{"action": "light.turn_on", "target": {"entity_id": "light.living_room"}},
|
|
516
516
|
{"delay": {"seconds": 2}},
|
|
517
|
-
{"
|
|
517
|
+
{"action": "light.turn_off", "target": {"entity_id": "light.living_room"}}
|
|
518
518
|
],
|
|
519
519
|
"alias": "Light Blink",
|
|
520
520
|
"mode": "single"
|
|
@@ -547,8 +547,8 @@ class ConfigScriptTools:
|
|
|
547
547
|
Update script:
|
|
548
548
|
ha_config_set_script(script_id="morning_routine", config={
|
|
549
549
|
"sequence": [
|
|
550
|
-
{"
|
|
551
|
-
{"
|
|
550
|
+
{"action": "light.turn_on", "target": {"area_id": "bedroom"}},
|
|
551
|
+
{"action": "climate.set_temperature", "target": {"entity_id": "climate.bedroom"}, "data": {"temperature": 22}}
|
|
552
552
|
],
|
|
553
553
|
"alias": "Updated Morning Routine"
|
|
554
554
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ha-mcp-dev
|
|
3
|
-
Version: 7.6.0.
|
|
3
|
+
Version: 7.6.0.dev659
|
|
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
|
|
@@ -245,6 +245,26 @@ Spend less time configuring, more time enjoying your smart home.
|
|
|
245
245
|
|
|
246
246
|
---
|
|
247
247
|
|
|
248
|
+
## 🆚 ha-mcp vs. Home Assistant's built-in MCP Server
|
|
249
|
+
|
|
250
|
+
Home Assistant ships its own [MCP Server integration](https://www.home-assistant.io/integrations/mcp_server/). It is built on the **Assist** pipeline, so a connected MCP client can read and control the entities you have exposed to Assist and run the intents Assist understands — handy for voice-style control of already-exposed devices.
|
|
251
|
+
|
|
252
|
+
ha-mcp is a standalone server built for **configuring, building, and debugging** your smart home, not just controlling it. On top of device control, it adds capabilities the built-in integration does not have:
|
|
253
|
+
|
|
254
|
+
| Capability | Built-in MCP Server | ha-mcp |
|
|
255
|
+
|------------|:-------------------:|:------:|
|
|
256
|
+
| Control exposed devices, query states | Yes | Yes |
|
|
257
|
+
| Entity scope | Only entities exposed to Assist | Everything in Home Assistant |
|
|
258
|
+
| Create / edit automations, scripts, scenes | No | Yes |
|
|
259
|
+
| Build & edit dashboards | No | Yes |
|
|
260
|
+
| Debug automations from traces, read history & logs | No | Yes |
|
|
261
|
+
| Manage helpers, areas, zones, labels, groups | No | Yes |
|
|
262
|
+
| Backups, add-ons, HACS, device & entity registry | No | Yes |
|
|
263
|
+
|
|
264
|
+
**Rule of thumb:** Use the built-in integration for voice-style control of devices you have already exposed; use ha-mcp when you want an AI assistant that can also build and maintain your Home Assistant setup.
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
248
268
|
## 🔌 Custom Component (ha_mcp_tools) *(beta)*
|
|
249
269
|
|
|
250
270
|
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.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/dashboard_screenshot/__init__.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/dashboard_screenshot/capture.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/dashboard_screenshot/provision.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/AGENTS.md
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/CLAUDE.md
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/LICENSE
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/resources/skills-vendor/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/best_practice_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_entities.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_overview.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_scenes.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/smart_search/_scoring.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_dashboard_screenshot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/tools_voice_assistant.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/tools/validation_middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/transforms/categorized_search.py
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/transforms/lite_docstrings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp/utils/kill_signal_diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp_dev.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{ha_mcp_dev-7.6.0.dev657 → ha_mcp_dev-7.6.0.dev659}/src/ha_mcp_dev.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|