Skip to content

Commit 334fe28

Browse files
committed
Merge remote-tracking branch 'upstream/master' into feat/issue-863-stdio-settings
# Conflicts: # src/ha_mcp/tools/tools_search.py # tests/src/unit/test_overview_system_info.py
2 parents 311dcab + d6e8873 commit 334fe28

53 files changed

Lines changed: 8868 additions & 870 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/pr.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ jobs:
4444
timeout-minutes: 5
4545

4646
steps:
47+
- name: Install git for changed-files diff
48+
run: apt-get update -qq && apt-get install -y -qq git >/dev/null 2>&1
49+
4750
- uses: actions/checkout@v6
4851

4952
- name: Install dependencies
@@ -52,6 +55,33 @@ jobs:
5255
- name: Run ruff check
5356
run: uv run ruff check src/ tests/ homeassistant-addon/ homeassistant-addon-webhook-proxy/ scripts/
5457

58+
- name: Run ruff format check on changed Python files
59+
run: |
60+
# actions/checkout@v6 sets safe.directory in a temp HOME that this
61+
# step doesn't inherit; re-add it here so git operations succeed
62+
# when the checkout dir is owned by a different UID than the
63+
# container's root.
64+
git config --global --add safe.directory "$GITHUB_WORKSPACE"
65+
# Changed-files-only gate per the maintainer call on issue #1318:
66+
# new edits must be formatted; pre-existing format-debt on
67+
# untouched files stays grandfathered. Avoids the disruption of a
68+
# repo-wide sweep while still preventing fresh debt from landing.
69+
if [ -z "${GITHUB_BASE_REF}" ]; then
70+
echo "No PR base ref (workflow_dispatch); skipping format check."
71+
exit 0
72+
fi
73+
git fetch --depth=1 origin "${GITHUB_BASE_REF}"
74+
base_sha=$(git rev-parse "origin/${GITHUB_BASE_REF}")
75+
changed_py=$(git diff --name-only --diff-filter=ACMR "${base_sha}" -- '*.py')
76+
if [ -z "$changed_py" ]; then
77+
echo "No Python files changed; skipping ruff format check."
78+
exit 0
79+
fi
80+
count=$(echo "$changed_py" | wc -l)
81+
echo "Checking ruff format on $count changed Python files:"
82+
echo "$changed_py" | sed 's/^/ /'
83+
echo "$changed_py" | xargs uv run ruff format --check
84+
5585
ast-grep:
5686
name: AST Lint
5787
runs-on: ubuntu-latest

.gitmodules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
[submodule "src/ha_mcp/resources/skills-vendor"]
22
path = src/ha_mcp/resources/skills-vendor
33
url = https://github.com/homeassistant-ai/skills.git
4+
branch = main

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ uv run mypy src/ # Type check
3232
uv run ast-grep scan # AST lint (error handling patterns)
3333
```
3434

35-
On every commit, hooks run `ruff check --fix` (lint), `ast-grep scan` (AST lint), `mypy` (type check), and unit tests in parallel via [lefthook](https://github.com/evilmartians/lefthook). The **Ruff Lint** and **AST Lint** CI jobs also enforce this on pull requests.
35+
On every commit, hooks run `ruff check --fix` (lint), `ast-grep scan` (AST lint), `mypy` (type check), and unit tests in parallel via [lefthook](https://github.com/evilmartians/lefthook). The **Ruff Lint** and **AST Lint** CI jobs also enforce these on pull requests; **Ruff Lint** additionally runs `ruff format --check` on changed Python files.
3636

3737
## 🔄 Migrating from pre-commit to lefthook
3838

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<!-- mcp-name: io.github.homeassistant-ai/ha-mcp -->
99

1010
<p align="center">
11-
<img src="https://img.shields.io/badge/tools-88-blue" alt="95+ Tools">
11+
<img src="https://img.shields.io/badge/tools-89-blue" alt="95+ Tools">
1212
<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>
1313
<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>
1414
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/homeassistant-ai/ha-mcp.svg" alt="License"></a>
@@ -151,12 +151,13 @@ Spend less time configuring, more time enjoying your smart home.
151151
<details>
152152
<!-- TOOLS_TABLE_START -->
153153

154-
<summary><b>Complete Tool List (88 tools)</b></summary>
154+
<summary><b>Complete Tool List (89 tools)</b></summary>
155155

156156
| Category | Tools |
157157
|----------|-------|
158158
| **Add-ons** | `ha_get_addon`, `ha_manage_addon` |
159159
| **Areas & Floors** | `ha_config_list_areas`, `ha_config_list_floors`, `ha_list_floors_areas`, `ha_remove_area_or_floor`, `ha_set_area_or_floor` |
160+
| **Assist** | `ha_manage_pipeline` |
160161
| **Automations** | `ha_config_get_automation`, `ha_config_remove_automation`, `ha_config_set_automation` |
161162
| **Blueprints** | `ha_get_blueprint`, `ha_import_blueprint` |
162163
| **Calendar** | `ha_config_get_calendar_events`, `ha_config_remove_calendar_event`, `ha_config_set_calendar_event` |

homeassistant-addon-dev/config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: "Home Assistant MCP Server (Dev)"
22
description: "Development channel - AI assistant integration via MCP (unstable)"
3-
version: "7.5.0.dev332"
3+
version: "7.5.0.dev339"
44
slug: "ha_mcp_dev"
55
url: "https://github.com/homeassistant-ai/ha-mcp"
66
stage: experimental

homeassistant-addon/DOCS.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ AI assistant integration for Home Assistant via Model Context Protocol (MCP).
44

55
## About
66

7-
This add-on enables AI assistants (Claude, ChatGPT, etc.) to control your Home Assistant installation through the Model Context Protocol (MCP). It provides 88+ tools for device control, automation management, entity search, calendars, todo lists, dashboards, backup/restore, history/statistics, camera snapshots, and system queries.
7+
This add-on enables AI assistants (Claude, ChatGPT, etc.) to control your Home Assistant installation through the Model Context Protocol (MCP). It provides 89+ tools for device control, automation management, entity search, calendars, todo lists, dashboards, backup/restore, history/statistics, camera snapshots, and system queries.
88

99
**Key Features:**
1010
- **Zero Configuration** - Automatically discovers Home Assistant connection
@@ -256,7 +256,7 @@ Requires add-on restart to take effect.
256256

257257
**Default:** `false`
258258

259-
Replaces the full tool catalog (~88 tools, ~46K tokens) with search-based discovery (~4 proxy tools, ~5K tokens). When enabled, tools are found via `ha_search_tools` and executed through categorized proxies (read/write/delete).
259+
Replaces the full tool catalog (~89 tools, ~46K tokens) with search-based discovery (~4 proxy tools, ~5K tokens). When enabled, tools are found via `ha_search_tools` and executed through categorized proxies (read/write/delete).
260260

261261
> ⚠️ **Do NOT enable this if you use Claude in Sonnet or Opus modes.** Those models run their own built-in tool search / deferred tools, which conflicts with ha-mcp's — running both at once does not work. To use ha-mcp's tool search with Claude, disable Claude's built-in tool search first; otherwise leave this off.
262262

@@ -366,7 +366,7 @@ If the add-on is slow or unresponsive:
366366

367367
<!-- ADDON_TOOLS_START -->
368368

369-
The add-on provides 88+ MCP tools for controlling Home Assistant:
369+
The add-on provides 89+ MCP tools for controlling Home Assistant:
370370

371371
> **Note:** This list is regenerated from the `master` branch on every push, but the add-on image you have installed only updates on stable releases (biweekly, Wednesdays 10:00 UTC). A tool listed below may not yet be present in your installed runtime. If so, calling it returns an "unknown tool" error until the next stable release.
372372

@@ -383,6 +383,9 @@ The add-on provides 88+ MCP tools for controlling Home Assistant:
383383
- `ha_remove_area_or_floor` — Remove a Home Assistant area or floor.
384384
- `ha_set_area_or_floor` — Create or update a Home Assistant area or floor.
385385

386+
### Assist
387+
- `ha_manage_pipeline` — Manage Home Assistant Assist pipelines.
388+
386389
### Automations
387390
- `ha_config_get_automation` — Retrieve Home Assistant automation configuration.
388391
- `ha_config_remove_automation` — Delete a Home Assistant automation.
@@ -441,7 +444,7 @@ The add-on provides 88+ MCP tools for controlling Home Assistant:
441444

442445
### Helper Entities
443446
- `ha_config_list_helpers` — List all Home Assistant helpers of a specific type with their configurations.
444-
- `ha_config_set_helper` — Create or update Home Assistant helper entities (27 types, unified interface).
447+
- `ha_config_set_helper` — Create or update Home Assistant helper entities and config subentries
445448
- `ha_delete_helpers_integrations` — Delete a Home Assistant helper or integration config entry.
446449

447450
### History & Statistics

renovate.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
],
1010
"enabledManagers": [
1111
"custom.regex",
12-
"dockerfile"
12+
"dockerfile",
13+
"git-submodules"
1314
],
1415
"ignorePaths": [],
1516
"customManagers": [

0 commit comments

Comments
 (0)