ha-mcp-dev 7.1.0.dev305__tar.gz → 7.1.0.dev306__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.1.0.dev305/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.1.0.dev306}/PKG-INFO +29 -25
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/README.md +28 -24
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/pyproject.toml +1 -1
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/backup.py +2 -2
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_addons.py +10 -8
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_areas.py +6 -6
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_blueprints.py +2 -2
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_bug_report.py +2 -2
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_calendar.py +3 -3
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_camera.py +1 -1
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_categories.py +6 -6
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_automations.py +6 -6
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_dashboards.py +8 -8
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_entry_flow.py +4 -4
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_helpers.py +6 -6
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_scripts.py +6 -6
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_entities.py +4 -4
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_filesystem.py +8 -8
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_groups.py +3 -3
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_hacs.py +6 -6
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_history.py +2 -2
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_integrations.py +6 -6
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_labels.py +3 -3
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_mcp_component.py +2 -2
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_registry.py +8 -7
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_resources.py +6 -6
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_search.py +10 -10
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_service.py +4 -4
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_services.py +1 -1
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_system.py +4 -4
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_todo.py +4 -4
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_traces.py +1 -1
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_updates.py +1 -1
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_utility.py +4 -4
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_voice_assistant.py +2 -1
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_zones.py +3 -3
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306/src/ha_mcp_dev.egg-info}/PKG-INFO +29 -25
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/LICENSE +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/MANIFEST.in +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/setup.cfg +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/__main__.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/_pypi_marker +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/auth/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/auth/consent_form.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/auth/provider.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/client/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/client/rest_client.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/client/websocket_client.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/client/websocket_listener.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/config.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/errors.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/py.typed +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/server.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/smoke_test.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/best_practice_checker.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/device_control.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/enhanced.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/helpers.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/registry.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/smart_search.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/util_helpers.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/transforms/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/transforms/categorized_search.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/utils/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/utils/domain_handlers.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/utils/fuzzy_search.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/utils/operation_manager.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/utils/python_sandbox.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/utils/usage_logger.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/tests/__init__.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/tests/test_constants.py +0 -0
- {ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/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.1.0.
|
|
3
|
+
Version: 7.1.0.dev306
|
|
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
|
|
@@ -37,7 +37,7 @@ Dynamic: license-file
|
|
|
37
37
|
<!-- mcp-name: io.github.homeassistant-ai/ha-mcp -->
|
|
38
38
|
|
|
39
39
|
<p align="center">
|
|
40
|
-
<img src="https://img.shields.io/badge/tools-
|
|
40
|
+
<img src="https://img.shields.io/badge/tools-93-blue" alt="95+ Tools">
|
|
41
41
|
<a href="https://github.com/homeassistant-ai/ha-mcp/releases"><img src="https://img.shields.io/github/v/release/homeassistant-ai/ha-mcp" alt="Release"></a>
|
|
42
42
|
<a href="https://github.com/homeassistant-ai/ha-mcp/actions/workflows/e2e-tests.yml"><img src="https://img.shields.io/github/actions/workflow/status/homeassistant-ai/ha-mcp/e2e-tests.yml?branch=master&label=E2E%20Tests" alt="E2E Tests"></a>
|
|
43
43
|
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/homeassistant-ai/ha-mcp.svg" alt="License"></a>
|
|
@@ -158,33 +158,37 @@ Spend less time configuring, more time enjoying your smart home.
|
|
|
158
158
|
| **💾 System** | Backup/restore, updates, add-ons, device registry |
|
|
159
159
|
|
|
160
160
|
<details>
|
|
161
|
-
|
|
161
|
+
<!-- TOOLS_TABLE_START -->
|
|
162
|
+
|
|
163
|
+
<summary><b>Complete Tool List (93 tools)</b></summary>
|
|
162
164
|
|
|
163
165
|
| Category | Tools |
|
|
164
166
|
|----------|-------|
|
|
165
|
-
| **
|
|
166
|
-
| **
|
|
167
|
-
| **Automations** | `ha_config_get_automation`, `
|
|
168
|
-
| **
|
|
169
|
-
| **
|
|
170
|
-
| **Dashboards** | `ha_config_get_dashboard`, `ha_config_set_dashboard`, `ha_config_delete_dashboard` + dashboard skill references |
|
|
171
|
-
| **Areas & Floors** | `ha_config_list_areas`, `ha_config_set_area`, `ha_config_remove_area`, `ha_config_list_floors`, `ha_config_set_floor`, `ha_config_remove_floor` |
|
|
172
|
-
| **Labels** | `ha_config_get_label`, `ha_config_set_label`, `ha_config_remove_label`, `ha_manage_entity_labels` |
|
|
173
|
-
| **Zones** | `ha_get_zone`, `ha_set_zone`, `ha_remove_zone` |
|
|
174
|
-
| **Groups** | `ha_config_list_groups`, `ha_config_set_group`, `ha_config_remove_group` |
|
|
175
|
-
| **Todo Lists** | `ha_get_todo`, `ha_add_todo_item`, `ha_update_todo_item`, `ha_remove_todo_item` |
|
|
176
|
-
| **Calendar** | `ha_config_get_calendar_events`, `ha_config_set_calendar_event`, `ha_config_remove_calendar_event` |
|
|
177
|
-
| **Blueprints** | `ha_list_blueprints`, `ha_get_blueprint`, `ha_import_blueprint` |
|
|
178
|
-
| **Device Registry** | `ha_get_device`, `ha_update_device`, `ha_remove_device`, `ha_rename_entity` |
|
|
179
|
-
| **ZHA & Integrations** | `ha_get_zha_devices`, `ha_get_entity_integration_source` |
|
|
180
|
-
| **Add-ons** | `ha_get_addon`, `ha_call_addon_api` (HTTP & WebSocket, direct port access) |
|
|
167
|
+
| **Add-ons** | `ha_call_addon_api`, `ha_get_addon` |
|
|
168
|
+
| **Areas & Floors** | `ha_config_list_areas`, `ha_config_list_floors`, `ha_config_remove_area`, `ha_config_remove_floor`, `ha_config_set_area`, `ha_config_set_floor` |
|
|
169
|
+
| **Automations** | `ha_config_get_automation`, `ha_config_remove_automation`, `ha_config_set_automation` |
|
|
170
|
+
| **Blueprints** | `ha_get_blueprint`, `ha_import_blueprint` |
|
|
171
|
+
| **Calendar** | `ha_config_get_calendar_events`, `ha_config_remove_calendar_event`, `ha_config_set_calendar_event` |
|
|
181
172
|
| **Camera** | `ha_get_camera_image` |
|
|
182
|
-
| **
|
|
183
|
-
| **
|
|
184
|
-
| **
|
|
185
|
-
| **
|
|
186
|
-
| **
|
|
187
|
-
|
|
173
|
+
| **Dashboards** | `ha_config_delete_dashboard_resource`, `ha_config_delete_dashboard`, `ha_config_get_dashboard`, `ha_config_list_dashboard_resources`, `ha_config_set_dashboard_resource`, `ha_config_set_dashboard`, `ha_dashboard_find_card` |
|
|
174
|
+
| **Device Registry** | `ha_get_device`, `ha_remove_device`, `ha_rename_entity_and_device`, `ha_rename_entity`, `ha_update_device` |
|
|
175
|
+
| **Entity Registry** | `ha_get_entity_exposure`, `ha_get_entity`, `ha_set_entity` |
|
|
176
|
+
| **Files** | `ha_delete_file`, `ha_list_files`, `ha_read_file`, `ha_write_file` |
|
|
177
|
+
| **Groups** | `ha_config_list_groups`, `ha_config_remove_group`, `ha_config_set_group` |
|
|
178
|
+
| **HACS** | `ha_hacs_add_repository`, `ha_hacs_download`, `ha_hacs_info`, `ha_hacs_list_installed`, `ha_hacs_repository_info`, `ha_hacs_search` |
|
|
179
|
+
| **Helper Entities** | `ha_config_list_helpers`, `ha_config_remove_helper`, `ha_config_set_helper`, `ha_get_helper_schema`, `ha_set_config_entry_helper` |
|
|
180
|
+
| **History & Statistics** | `ha_get_automation_traces`, `ha_get_history`, `ha_get_logbook`, `ha_get_statistics` |
|
|
181
|
+
| **Integrations** | `ha_delete_config_entry`, `ha_get_integration`, `ha_set_integration_enabled` |
|
|
182
|
+
| **Labels & Categories** | `ha_config_get_category`, `ha_config_get_label`, `ha_config_remove_category`, `ha_config_remove_label`, `ha_config_set_category`, `ha_config_set_label` |
|
|
183
|
+
| **Scripts** | `ha_config_get_script`, `ha_config_remove_script`, `ha_config_set_script` |
|
|
184
|
+
| **Search & Discovery** | `ha_deep_search`, `ha_get_overview`, `ha_get_state`, `ha_get_states`, `ha_search_entities` |
|
|
185
|
+
| **Service & Device Control** | `ha_bulk_control`, `ha_call_service`, `ha_get_bulk_status`, `ha_get_operation_status`, `ha_list_services` |
|
|
186
|
+
| **System** | `ha_backup_create`, `ha_backup_restore`, `ha_check_config`, `ha_get_system_health`, `ha_get_updates`, `ha_reload_core`, `ha_restart` |
|
|
187
|
+
| **Todo Lists** | `ha_add_todo_item`, `ha_get_todo`, `ha_remove_todo_item`, `ha_update_todo_item` |
|
|
188
|
+
| **Utilities** | `ha_eval_template`, `ha_install_mcp_tools`, `ha_report_issue` |
|
|
189
|
+
| **Zones** | `ha_get_zone`, `ha_remove_zone`, `ha_set_zone` |
|
|
190
|
+
|
|
191
|
+
<!-- TOOLS_TABLE_END -->
|
|
188
192
|
</details>
|
|
189
193
|
|
|
190
194
|
---
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<!-- mcp-name: io.github.homeassistant-ai/ha-mcp -->
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
<img src="https://img.shields.io/badge/tools-
|
|
11
|
+
<img src="https://img.shields.io/badge/tools-93-blue" alt="95+ Tools">
|
|
12
12
|
<a href="https://github.com/homeassistant-ai/ha-mcp/releases"><img src="https://img.shields.io/github/v/release/homeassistant-ai/ha-mcp" alt="Release"></a>
|
|
13
13
|
<a href="https://github.com/homeassistant-ai/ha-mcp/actions/workflows/e2e-tests.yml"><img src="https://img.shields.io/github/actions/workflow/status/homeassistant-ai/ha-mcp/e2e-tests.yml?branch=master&label=E2E%20Tests" alt="E2E Tests"></a>
|
|
14
14
|
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/homeassistant-ai/ha-mcp.svg" alt="License"></a>
|
|
@@ -129,33 +129,37 @@ Spend less time configuring, more time enjoying your smart home.
|
|
|
129
129
|
| **💾 System** | Backup/restore, updates, add-ons, device registry |
|
|
130
130
|
|
|
131
131
|
<details>
|
|
132
|
-
|
|
132
|
+
<!-- TOOLS_TABLE_START -->
|
|
133
|
+
|
|
134
|
+
<summary><b>Complete Tool List (93 tools)</b></summary>
|
|
133
135
|
|
|
134
136
|
| Category | Tools |
|
|
135
137
|
|----------|-------|
|
|
136
|
-
| **
|
|
137
|
-
| **
|
|
138
|
-
| **Automations** | `ha_config_get_automation`, `
|
|
139
|
-
| **
|
|
140
|
-
| **
|
|
141
|
-
| **Dashboards** | `ha_config_get_dashboard`, `ha_config_set_dashboard`, `ha_config_delete_dashboard` + dashboard skill references |
|
|
142
|
-
| **Areas & Floors** | `ha_config_list_areas`, `ha_config_set_area`, `ha_config_remove_area`, `ha_config_list_floors`, `ha_config_set_floor`, `ha_config_remove_floor` |
|
|
143
|
-
| **Labels** | `ha_config_get_label`, `ha_config_set_label`, `ha_config_remove_label`, `ha_manage_entity_labels` |
|
|
144
|
-
| **Zones** | `ha_get_zone`, `ha_set_zone`, `ha_remove_zone` |
|
|
145
|
-
| **Groups** | `ha_config_list_groups`, `ha_config_set_group`, `ha_config_remove_group` |
|
|
146
|
-
| **Todo Lists** | `ha_get_todo`, `ha_add_todo_item`, `ha_update_todo_item`, `ha_remove_todo_item` |
|
|
147
|
-
| **Calendar** | `ha_config_get_calendar_events`, `ha_config_set_calendar_event`, `ha_config_remove_calendar_event` |
|
|
148
|
-
| **Blueprints** | `ha_list_blueprints`, `ha_get_blueprint`, `ha_import_blueprint` |
|
|
149
|
-
| **Device Registry** | `ha_get_device`, `ha_update_device`, `ha_remove_device`, `ha_rename_entity` |
|
|
150
|
-
| **ZHA & Integrations** | `ha_get_zha_devices`, `ha_get_entity_integration_source` |
|
|
151
|
-
| **Add-ons** | `ha_get_addon`, `ha_call_addon_api` (HTTP & WebSocket, direct port access) |
|
|
138
|
+
| **Add-ons** | `ha_call_addon_api`, `ha_get_addon` |
|
|
139
|
+
| **Areas & Floors** | `ha_config_list_areas`, `ha_config_list_floors`, `ha_config_remove_area`, `ha_config_remove_floor`, `ha_config_set_area`, `ha_config_set_floor` |
|
|
140
|
+
| **Automations** | `ha_config_get_automation`, `ha_config_remove_automation`, `ha_config_set_automation` |
|
|
141
|
+
| **Blueprints** | `ha_get_blueprint`, `ha_import_blueprint` |
|
|
142
|
+
| **Calendar** | `ha_config_get_calendar_events`, `ha_config_remove_calendar_event`, `ha_config_set_calendar_event` |
|
|
152
143
|
| **Camera** | `ha_get_camera_image` |
|
|
153
|
-
| **
|
|
154
|
-
| **
|
|
155
|
-
| **
|
|
156
|
-
| **
|
|
157
|
-
| **
|
|
158
|
-
|
|
144
|
+
| **Dashboards** | `ha_config_delete_dashboard_resource`, `ha_config_delete_dashboard`, `ha_config_get_dashboard`, `ha_config_list_dashboard_resources`, `ha_config_set_dashboard_resource`, `ha_config_set_dashboard`, `ha_dashboard_find_card` |
|
|
145
|
+
| **Device Registry** | `ha_get_device`, `ha_remove_device`, `ha_rename_entity_and_device`, `ha_rename_entity`, `ha_update_device` |
|
|
146
|
+
| **Entity Registry** | `ha_get_entity_exposure`, `ha_get_entity`, `ha_set_entity` |
|
|
147
|
+
| **Files** | `ha_delete_file`, `ha_list_files`, `ha_read_file`, `ha_write_file` |
|
|
148
|
+
| **Groups** | `ha_config_list_groups`, `ha_config_remove_group`, `ha_config_set_group` |
|
|
149
|
+
| **HACS** | `ha_hacs_add_repository`, `ha_hacs_download`, `ha_hacs_info`, `ha_hacs_list_installed`, `ha_hacs_repository_info`, `ha_hacs_search` |
|
|
150
|
+
| **Helper Entities** | `ha_config_list_helpers`, `ha_config_remove_helper`, `ha_config_set_helper`, `ha_get_helper_schema`, `ha_set_config_entry_helper` |
|
|
151
|
+
| **History & Statistics** | `ha_get_automation_traces`, `ha_get_history`, `ha_get_logbook`, `ha_get_statistics` |
|
|
152
|
+
| **Integrations** | `ha_delete_config_entry`, `ha_get_integration`, `ha_set_integration_enabled` |
|
|
153
|
+
| **Labels & Categories** | `ha_config_get_category`, `ha_config_get_label`, `ha_config_remove_category`, `ha_config_remove_label`, `ha_config_set_category`, `ha_config_set_label` |
|
|
154
|
+
| **Scripts** | `ha_config_get_script`, `ha_config_remove_script`, `ha_config_set_script` |
|
|
155
|
+
| **Search & Discovery** | `ha_deep_search`, `ha_get_overview`, `ha_get_state`, `ha_get_states`, `ha_search_entities` |
|
|
156
|
+
| **Service & Device Control** | `ha_bulk_control`, `ha_call_service`, `ha_get_bulk_status`, `ha_get_operation_status`, `ha_list_services` |
|
|
157
|
+
| **System** | `ha_backup_create`, `ha_backup_restore`, `ha_check_config`, `ha_get_system_health`, `ha_get_updates`, `ha_reload_core`, `ha_restart` |
|
|
158
|
+
| **Todo Lists** | `ha_add_todo_item`, `ha_get_todo`, `ha_remove_todo_item`, `ha_update_todo_item` |
|
|
159
|
+
| **Utilities** | `ha_eval_template`, `ha_install_mcp_tools`, `ha_report_issue` |
|
|
160
|
+
| **Zones** | `ha_get_zone`, `ha_remove_zone`, `ha_set_zone` |
|
|
161
|
+
|
|
162
|
+
<!-- TOOLS_TABLE_END -->
|
|
159
163
|
</details>
|
|
160
164
|
|
|
161
165
|
---
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-mcp-dev"
|
|
7
|
-
version = "7.1.0.
|
|
7
|
+
version = "7.1.0.dev306"
|
|
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"
|
|
@@ -391,7 +391,7 @@ def register_backup_tools(mcp: "FastMCP", client: HomeAssistantClient, **kwargs:
|
|
|
391
391
|
|
|
392
392
|
**Returns:** Backup ID and job status"""
|
|
393
393
|
|
|
394
|
-
@mcp.tool(description=backup_create_description, annotations={"destructiveHint": True, "title": "Create Backup"})
|
|
394
|
+
@mcp.tool(description=backup_create_description, tags={"System"}, annotations={"destructiveHint": True, "title": "Create Backup"})
|
|
395
395
|
@log_tool_usage
|
|
396
396
|
async def ha_backup_create(
|
|
397
397
|
name: Annotated[
|
|
@@ -405,7 +405,7 @@ def register_backup_tools(mcp: "FastMCP", client: HomeAssistantClient, **kwargs:
|
|
|
405
405
|
"""Create a fast Home Assistant backup (local only)."""
|
|
406
406
|
return await create_backup(client, name)
|
|
407
407
|
|
|
408
|
-
@mcp.tool(annotations={"destructiveHint": True, "title": "Restore Backup"})
|
|
408
|
+
@mcp.tool(tags={"System"}, annotations={"destructiveHint": True, "title": "Restore Backup"})
|
|
409
409
|
@log_tool_usage
|
|
410
410
|
async def ha_backup_restore(
|
|
411
411
|
backup_id: Annotated[
|
|
@@ -783,7 +783,7 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
783
783
|
**kwargs: Additional arguments (ignored, for auto-discovery compatibility)
|
|
784
784
|
"""
|
|
785
785
|
|
|
786
|
-
@mcp.tool(annotations={"idempotentHint": True, "readOnlyHint": True, "
|
|
786
|
+
@mcp.tool(tags={"Add-ons"}, annotations={"idempotentHint": True, "readOnlyHint": True, "title": "Get Add-ons"})
|
|
787
787
|
@log_tool_usage
|
|
788
788
|
async def ha_get_addon(
|
|
789
789
|
source: Annotated[
|
|
@@ -878,13 +878,15 @@ def register_addon_tools(mcp: Any, client: HomeAssistantClient, **kwargs: Any) -
|
|
|
878
878
|
raise_tool_error(result)
|
|
879
879
|
return result
|
|
880
880
|
|
|
881
|
-
@mcp.tool(
|
|
882
|
-
"
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
881
|
+
@mcp.tool(
|
|
882
|
+
tags={"Add-ons"},
|
|
883
|
+
annotations={
|
|
884
|
+
"destructiveHint": True,
|
|
885
|
+
"idempotentHint": False,
|
|
886
|
+
"readOnlyHint": False,
|
|
887
|
+
"title": "Call Add-on API",
|
|
888
|
+
},
|
|
889
|
+
)
|
|
888
890
|
@log_tool_usage
|
|
889
891
|
async def ha_call_addon_api(
|
|
890
892
|
slug: Annotated[
|
|
@@ -25,7 +25,7 @@ def register_area_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
25
25
|
# AREA TOOLS
|
|
26
26
|
# ============================================================
|
|
27
27
|
|
|
28
|
-
@mcp.tool(annotations={"idempotentHint": True, "readOnlyHint": True, "
|
|
28
|
+
@mcp.tool(tags={"Areas & Floors"}, annotations={"idempotentHint": True, "readOnlyHint": True, "title": "List Areas"})
|
|
29
29
|
@log_tool_usage
|
|
30
30
|
async def ha_config_list_areas() -> dict[str, Any]:
|
|
31
31
|
"""
|
|
@@ -63,7 +63,7 @@ def register_area_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
63
63
|
"Verify WebSocket connection is active",
|
|
64
64
|
])
|
|
65
65
|
|
|
66
|
-
@mcp.tool(
|
|
66
|
+
@mcp.tool(tags={"Areas & Floors"}, annotations={"destructiveHint": True, "title": "Create or Update Area"})
|
|
67
67
|
@log_tool_usage
|
|
68
68
|
async def ha_config_set_area(
|
|
69
69
|
name: Annotated[
|
|
@@ -208,7 +208,7 @@ def register_area_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
208
208
|
"If assigning to a floor, verify floor_id exists",
|
|
209
209
|
])
|
|
210
210
|
|
|
211
|
-
@mcp.tool(annotations={"destructiveHint": True, "idempotentHint": True, "
|
|
211
|
+
@mcp.tool(tags={"Areas & Floors"}, annotations={"destructiveHint": True, "idempotentHint": True, "title": "Remove Area"})
|
|
212
212
|
@log_tool_usage
|
|
213
213
|
async def ha_config_remove_area(
|
|
214
214
|
area_id: Annotated[
|
|
@@ -258,7 +258,7 @@ def register_area_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
258
258
|
# FLOOR TOOLS
|
|
259
259
|
# ============================================================
|
|
260
260
|
|
|
261
|
-
@mcp.tool(annotations={"idempotentHint": True, "readOnlyHint": True, "
|
|
261
|
+
@mcp.tool(tags={"Areas & Floors"}, annotations={"idempotentHint": True, "readOnlyHint": True, "title": "List Floors"})
|
|
262
262
|
@log_tool_usage
|
|
263
263
|
async def ha_config_list_floors() -> dict[str, Any]:
|
|
264
264
|
"""
|
|
@@ -296,7 +296,7 @@ def register_area_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
296
296
|
"Verify WebSocket connection is active",
|
|
297
297
|
])
|
|
298
298
|
|
|
299
|
-
@mcp.tool(
|
|
299
|
+
@mcp.tool(tags={"Areas & Floors"}, annotations={"destructiveHint": True, "title": "Create or Update Floor"})
|
|
300
300
|
@log_tool_usage
|
|
301
301
|
async def ha_config_set_floor(
|
|
302
302
|
name: Annotated[
|
|
@@ -429,7 +429,7 @@ def register_area_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
429
429
|
"For update: Verify the floor_id exists using ha_config_list_floors()",
|
|
430
430
|
])
|
|
431
431
|
|
|
432
|
-
@mcp.tool(annotations={"destructiveHint": True, "idempotentHint": True, "
|
|
432
|
+
@mcp.tool(tags={"Areas & Floors"}, annotations={"destructiveHint": True, "idempotentHint": True, "title": "Remove Floor"})
|
|
433
433
|
@log_tool_usage
|
|
434
434
|
async def ha_config_remove_floor(
|
|
435
435
|
floor_id: Annotated[
|
|
@@ -56,7 +56,7 @@ def register_blueprint_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
56
56
|
"blueprints": blueprints,
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
@mcp.tool(annotations={"idempotentHint": True, "readOnlyHint": True, "
|
|
59
|
+
@mcp.tool(tags={"Blueprints"}, annotations={"idempotentHint": True, "readOnlyHint": True, "title": "Get Blueprint"})
|
|
60
60
|
@log_tool_usage
|
|
61
61
|
async def ha_get_blueprint(
|
|
62
62
|
path: Annotated[
|
|
@@ -183,7 +183,7 @@ def register_blueprint_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
183
183
|
],
|
|
184
184
|
)
|
|
185
185
|
|
|
186
|
-
@mcp.tool(
|
|
186
|
+
@mcp.tool(tags={"Blueprints"}, annotations={"destructiveHint": True, "title": "Import Blueprint"})
|
|
187
187
|
@log_tool_usage
|
|
188
188
|
async def ha_import_blueprint(
|
|
189
189
|
url: Annotated[
|
|
@@ -85,11 +85,11 @@ def register_bug_report_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
85
85
|
"""Register bug report tools with the MCP server."""
|
|
86
86
|
|
|
87
87
|
@mcp.tool(
|
|
88
|
+
tags={"Utilities"},
|
|
88
89
|
annotations={
|
|
89
90
|
"idempotentHint": True,
|
|
90
91
|
"readOnlyHint": True,
|
|
91
|
-
"
|
|
92
|
-
"title": "Report Issue or Feedback",
|
|
92
|
+
"title": "Report Issue or Feedback"
|
|
93
93
|
}
|
|
94
94
|
)
|
|
95
95
|
@log_tool_usage
|
|
@@ -23,7 +23,7 @@ logger = logging.getLogger(__name__)
|
|
|
23
23
|
def register_calendar_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
24
24
|
"""Register calendar management tools with the MCP server."""
|
|
25
25
|
|
|
26
|
-
@mcp.tool(annotations={"idempotentHint": True, "readOnlyHint": True, "
|
|
26
|
+
@mcp.tool(tags={"Calendar"}, annotations={"idempotentHint": True, "readOnlyHint": True, "title": "Get Calendar Events"})
|
|
27
27
|
@log_tool_usage
|
|
28
28
|
async def ha_config_get_calendar_events(
|
|
29
29
|
entity_id: Annotated[
|
|
@@ -144,7 +144,7 @@ def register_calendar_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
144
144
|
|
|
145
145
|
exception_to_structured_error(error, context={"entity_id": entity_id}, suggestions=suggestions)
|
|
146
146
|
|
|
147
|
-
@mcp.tool(
|
|
147
|
+
@mcp.tool(tags={"Calendar"}, annotations={"destructiveHint": True, "title": "Create or Update Calendar Event"})
|
|
148
148
|
@log_tool_usage
|
|
149
149
|
async def ha_config_set_calendar_event(
|
|
150
150
|
entity_id: Annotated[
|
|
@@ -263,7 +263,7 @@ def register_calendar_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
263
263
|
|
|
264
264
|
exception_to_structured_error(error, context={"entity_id": entity_id}, suggestions=suggestions)
|
|
265
265
|
|
|
266
|
-
@mcp.tool(annotations={"destructiveHint": True, "idempotentHint": True, "
|
|
266
|
+
@mcp.tool(tags={"Calendar"}, annotations={"destructiveHint": True, "idempotentHint": True, "title": "Remove Calendar Event"})
|
|
267
267
|
@log_tool_usage
|
|
268
268
|
async def ha_config_remove_calendar_event(
|
|
269
269
|
entity_id: Annotated[
|
|
@@ -18,7 +18,7 @@ logger = logging.getLogger(__name__)
|
|
|
18
18
|
def register_camera_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
19
19
|
"""Register Home Assistant camera tools."""
|
|
20
20
|
|
|
21
|
-
@mcp.tool(annotations={"idempotentHint": True, "readOnlyHint": True, "
|
|
21
|
+
@mcp.tool(tags={"Camera"}, annotations={"idempotentHint": True, "readOnlyHint": True, "title": "Get Camera Image"})
|
|
22
22
|
@log_tool_usage
|
|
23
23
|
async def ha_get_camera_image(
|
|
24
24
|
entity_id: str,
|
|
@@ -24,11 +24,11 @@ def register_category_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
24
24
|
"""Register Home Assistant category management tools."""
|
|
25
25
|
|
|
26
26
|
@mcp.tool(
|
|
27
|
+
tags={"Labels & Categories"},
|
|
27
28
|
annotations={
|
|
28
29
|
"idempotentHint": True,
|
|
29
30
|
"readOnlyHint": True,
|
|
30
|
-
"
|
|
31
|
-
"title": "Get Category",
|
|
31
|
+
"title": "Get Category"
|
|
32
32
|
}
|
|
33
33
|
)
|
|
34
34
|
@log_tool_usage
|
|
@@ -143,10 +143,10 @@ def register_category_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
143
143
|
)
|
|
144
144
|
|
|
145
145
|
@mcp.tool(
|
|
146
|
+
tags={"Labels & Categories"},
|
|
146
147
|
annotations={
|
|
147
148
|
"destructiveHint": True,
|
|
148
|
-
"
|
|
149
|
-
"title": "Create or Update Category",
|
|
149
|
+
"title": "Create or Update Category"
|
|
150
150
|
}
|
|
151
151
|
)
|
|
152
152
|
@log_tool_usage
|
|
@@ -246,11 +246,11 @@ def register_category_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
246
246
|
)
|
|
247
247
|
|
|
248
248
|
@mcp.tool(
|
|
249
|
+
tags={"Labels & Categories"},
|
|
249
250
|
annotations={
|
|
250
251
|
"destructiveHint": True,
|
|
251
252
|
"idempotentHint": True,
|
|
252
|
-
"
|
|
253
|
-
"title": "Remove Category",
|
|
253
|
+
"title": "Remove Category"
|
|
254
254
|
}
|
|
255
255
|
)
|
|
256
256
|
@log_tool_usage
|
{ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_automations.py
RENAMED
|
@@ -206,11 +206,11 @@ def register_config_automation_tools(mcp: Any, client: Any, **kwargs: Any) -> No
|
|
|
206
206
|
"""Register Home Assistant automation configuration tools."""
|
|
207
207
|
|
|
208
208
|
@mcp.tool(
|
|
209
|
+
tags={"Automations"},
|
|
209
210
|
annotations={
|
|
210
211
|
"idempotentHint": True,
|
|
211
212
|
"readOnlyHint": True,
|
|
212
|
-
"
|
|
213
|
-
"title": "Get Automation Config",
|
|
213
|
+
"title": "Get Automation Config"
|
|
214
214
|
}
|
|
215
215
|
)
|
|
216
216
|
@log_tool_usage
|
|
@@ -275,10 +275,10 @@ def register_config_automation_tools(mcp: Any, client: Any, **kwargs: Any) -> No
|
|
|
275
275
|
)
|
|
276
276
|
|
|
277
277
|
@mcp.tool(
|
|
278
|
+
tags={"Automations"},
|
|
278
279
|
annotations={
|
|
279
280
|
"destructiveHint": True,
|
|
280
|
-
"
|
|
281
|
-
"title": "Create or Update Automation",
|
|
281
|
+
"title": "Create or Update Automation"
|
|
282
282
|
}
|
|
283
283
|
)
|
|
284
284
|
@log_tool_usage
|
|
@@ -538,11 +538,11 @@ def register_config_automation_tools(mcp: Any, client: Any, **kwargs: Any) -> No
|
|
|
538
538
|
)
|
|
539
539
|
|
|
540
540
|
@mcp.tool(
|
|
541
|
+
tags={"Automations"},
|
|
541
542
|
annotations={
|
|
542
543
|
"destructiveHint": True,
|
|
543
544
|
"idempotentHint": True,
|
|
544
|
-
"
|
|
545
|
-
"title": "Remove Automation",
|
|
545
|
+
"title": "Remove Automation"
|
|
546
546
|
}
|
|
547
547
|
)
|
|
548
548
|
@log_tool_usage
|
{ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_dashboards.py
RENAMED
|
@@ -260,11 +260,11 @@ def register_config_dashboard_tools(mcp: Any, client: Any, **kwargs: Any) -> Non
|
|
|
260
260
|
"""Register Home Assistant dashboard configuration tools."""
|
|
261
261
|
|
|
262
262
|
@mcp.tool(
|
|
263
|
+
tags={"Dashboards"},
|
|
263
264
|
annotations={
|
|
264
265
|
"idempotentHint": True,
|
|
265
266
|
"readOnlyHint": True,
|
|
266
|
-
"
|
|
267
|
-
"title": "Get Dashboard",
|
|
267
|
+
"title": "Get Dashboard"
|
|
268
268
|
}
|
|
269
269
|
)
|
|
270
270
|
@log_tool_usage
|
|
@@ -398,10 +398,10 @@ def register_config_dashboard_tools(mcp: Any, client: Any, **kwargs: Any) -> Non
|
|
|
398
398
|
)
|
|
399
399
|
|
|
400
400
|
@mcp.tool(
|
|
401
|
+
tags={"Dashboards"},
|
|
401
402
|
annotations={
|
|
402
403
|
"destructiveHint": True,
|
|
403
|
-
"
|
|
404
|
-
"title": "Create or Update Dashboard",
|
|
404
|
+
"title": "Create or Update Dashboard"
|
|
405
405
|
}
|
|
406
406
|
)
|
|
407
407
|
@log_tool_usage
|
|
@@ -1004,10 +1004,10 @@ def register_config_dashboard_tools(mcp: Any, client: Any, **kwargs: Any) -> Non
|
|
|
1004
1004
|
)
|
|
1005
1005
|
|
|
1006
1006
|
@mcp.tool(
|
|
1007
|
+
tags={"Dashboards"},
|
|
1007
1008
|
annotations={
|
|
1008
1009
|
"destructiveHint": True,
|
|
1009
|
-
"
|
|
1010
|
-
"title": "Delete Dashboard",
|
|
1010
|
+
"title": "Delete Dashboard"
|
|
1011
1011
|
}
|
|
1012
1012
|
)
|
|
1013
1013
|
@log_tool_usage
|
|
@@ -1157,11 +1157,11 @@ def register_config_dashboard_tools(mcp: Any, client: Any, **kwargs: Any) -> Non
|
|
|
1157
1157
|
pass # Default: register the tool if settings unavailable
|
|
1158
1158
|
|
|
1159
1159
|
@mcp.tool(
|
|
1160
|
+
tags={"Dashboards"},
|
|
1160
1161
|
annotations={
|
|
1161
1162
|
"idempotentHint": True,
|
|
1162
1163
|
"readOnlyHint": True,
|
|
1163
|
-
"
|
|
1164
|
-
"title": "Find Dashboard Card",
|
|
1164
|
+
"title": "Find Dashboard Card"
|
|
1165
1165
|
}
|
|
1166
1166
|
)
|
|
1167
1167
|
@log_tool_usage
|
{ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_entry_flow.py
RENAMED
|
@@ -179,10 +179,10 @@ def register_config_entry_flow_tools(mcp: Any, client: Any, **kwargs: Any) -> No
|
|
|
179
179
|
))
|
|
180
180
|
|
|
181
181
|
@mcp.tool(
|
|
182
|
+
tags={"Helper Entities"},
|
|
182
183
|
annotations={
|
|
183
184
|
"destructiveHint": True,
|
|
184
|
-
"
|
|
185
|
-
"title": "Set Config Entry Helper",
|
|
185
|
+
"title": "Set Config Entry Helper"
|
|
186
186
|
}
|
|
187
187
|
)
|
|
188
188
|
@log_tool_usage
|
|
@@ -335,10 +335,10 @@ def register_config_entry_flow_tools(mcp: Any, client: Any, **kwargs: Any) -> No
|
|
|
335
335
|
exception_to_structured_error(e, context=context)
|
|
336
336
|
|
|
337
337
|
@mcp.tool(
|
|
338
|
+
tags={"Helper Entities"},
|
|
338
339
|
annotations={
|
|
339
340
|
"readOnlyHint": True,
|
|
340
|
-
"
|
|
341
|
-
"title": "Get Helper Schema",
|
|
341
|
+
"title": "Get Helper Schema"
|
|
342
342
|
}
|
|
343
343
|
)
|
|
344
344
|
@log_tool_usage
|
{ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_helpers.py
RENAMED
|
@@ -71,11 +71,11 @@ def register_config_helper_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
71
71
|
"""Register Home Assistant helper configuration tools."""
|
|
72
72
|
|
|
73
73
|
@mcp.tool(
|
|
74
|
+
tags={"Helper Entities"},
|
|
74
75
|
annotations={
|
|
75
76
|
"idempotentHint": True,
|
|
76
77
|
"readOnlyHint": True,
|
|
77
|
-
"
|
|
78
|
-
"title": "List Helpers",
|
|
78
|
+
"title": "List Helpers"
|
|
79
79
|
}
|
|
80
80
|
)
|
|
81
81
|
@log_tool_usage
|
|
@@ -170,10 +170,10 @@ def register_config_helper_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
170
170
|
)
|
|
171
171
|
|
|
172
172
|
@mcp.tool(
|
|
173
|
+
tags={"Helper Entities"},
|
|
173
174
|
annotations={
|
|
174
175
|
"destructiveHint": True,
|
|
175
|
-
"
|
|
176
|
-
"title": "Create or Update Helper",
|
|
176
|
+
"title": "Create or Update Helper"
|
|
177
177
|
}
|
|
178
178
|
)
|
|
179
179
|
@log_tool_usage
|
|
@@ -958,11 +958,11 @@ def register_config_helper_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
958
958
|
)
|
|
959
959
|
|
|
960
960
|
@mcp.tool(
|
|
961
|
+
tags={"Helper Entities"},
|
|
961
962
|
annotations={
|
|
962
963
|
"destructiveHint": True,
|
|
963
964
|
"idempotentHint": True,
|
|
964
|
-
"
|
|
965
|
-
"title": "Remove Helper",
|
|
965
|
+
"title": "Remove Helper"
|
|
966
966
|
}
|
|
967
967
|
)
|
|
968
968
|
@log_tool_usage
|
{ha_mcp_dev-7.1.0.dev305 → ha_mcp_dev-7.1.0.dev306}/src/ha_mcp/tools/tools_config_scripts.py
RENAMED
|
@@ -56,11 +56,11 @@ def register_config_script_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
56
56
|
"""Register Home Assistant script configuration tools."""
|
|
57
57
|
|
|
58
58
|
@mcp.tool(
|
|
59
|
+
tags={"Scripts"},
|
|
59
60
|
annotations={
|
|
60
61
|
"idempotentHint": True,
|
|
61
62
|
"readOnlyHint": True,
|
|
62
|
-
"
|
|
63
|
-
"title": "Get Script Config",
|
|
63
|
+
"title": "Get Script Config"
|
|
64
64
|
}
|
|
65
65
|
)
|
|
66
66
|
@log_tool_usage
|
|
@@ -102,10 +102,10 @@ def register_config_script_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
102
102
|
)
|
|
103
103
|
|
|
104
104
|
@mcp.tool(
|
|
105
|
+
tags={"Scripts"},
|
|
105
106
|
annotations={
|
|
106
107
|
"destructiveHint": True,
|
|
107
|
-
"
|
|
108
|
-
"title": "Create or Update Script",
|
|
108
|
+
"title": "Create or Update Script"
|
|
109
109
|
}
|
|
110
110
|
)
|
|
111
111
|
@log_tool_usage
|
|
@@ -320,11 +320,11 @@ def register_config_script_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
320
320
|
)
|
|
321
321
|
|
|
322
322
|
@mcp.tool(
|
|
323
|
+
tags={"Scripts"},
|
|
323
324
|
annotations={
|
|
324
325
|
"destructiveHint": True,
|
|
325
326
|
"idempotentHint": True,
|
|
326
|
-
"
|
|
327
|
-
"title": "Remove Script",
|
|
327
|
+
"title": "Remove Script"
|
|
328
328
|
}
|
|
329
329
|
)
|
|
330
330
|
@log_tool_usage
|
|
@@ -302,11 +302,11 @@ def register_entity_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
302
302
|
return response_data
|
|
303
303
|
|
|
304
304
|
@mcp.tool(
|
|
305
|
+
tags={"Entity Registry"},
|
|
305
306
|
annotations={
|
|
306
307
|
"destructiveHint": True,
|
|
307
308
|
"idempotentHint": True,
|
|
308
|
-
"
|
|
309
|
-
"title": "Set Entity",
|
|
309
|
+
"title": "Set Entity"
|
|
310
310
|
}
|
|
311
311
|
)
|
|
312
312
|
@log_tool_usage
|
|
@@ -683,11 +683,11 @@ def register_entity_tools(mcp: Any, client: Any, **kwargs: Any) -> None:
|
|
|
683
683
|
exception_to_structured_error(e, context={"entity_id": eid_context})
|
|
684
684
|
|
|
685
685
|
@mcp.tool(
|
|
686
|
+
tags={"Entity Registry"},
|
|
686
687
|
annotations={
|
|
687
688
|
"readOnlyHint": True,
|
|
688
689
|
"idempotentHint": True,
|
|
689
|
-
"
|
|
690
|
-
"title": "Get Entity",
|
|
690
|
+
"title": "Get Entity"
|
|
691
691
|
}
|
|
692
692
|
)
|
|
693
693
|
@log_tool_usage
|