Releases: Nainounen/homelab-mcp
Releases · Nainounen/homelab-mcp
v2.4.3
Fixed
- npm OIDC trusted publishing: configured trusted publisher on npmjs.com for
Nainounen/homelab-mcp→homelab-mcpso CI publish works end-to-end - Cross-platform lockfile: use
npm installin publish workflow instead ofnpm ci— the npm 10→11 upgrade resolves optional wasm deps (@emnapi/*) differently on Linux than what the macOS-generated lockfile records, causingnpm cito reject the lockfile - CI idempotency: Docker push and GitHub Release creation now skip if already published (re-run safe)
- CI cleanup: removed verbose npm logging now that OIDC diagnostics are resolved
v2.4.0 — Security hardening, health-check fixes, faster lookups, output caps
Security
- Shell injection fixed in
devbox_gitclone: the target directory was interpolated inside double quotes, so arepo_dircontaining$(…)executed on the devbox — now passed throughshellEscapelike every other argument - Safety filter hardened:
rmwith recursive+force flags in any order or spelling (-fr,-r -f,--recursive --force,-rfv) targeting an absolute path is now blocked on both devbox and Proxmox (was: only literal-rf) .envinjection fixed in setup wizard:configurevalues containing newlines could append arbitrary extra lines to.env— now rejected by schema validation
Added
- Output size cap: every tool result is truncated at
MAX_OUTPUT_CHARS(default 30,000 chars ≈ 7,500 tokens,0disables) so a straycatof a huge file can't flood the AI context - Library list filters:
radarr_list_moviesandsonarr_list_seriesacceptfilter(missing/downloaded-or-complete/unmonitored),search, andlimit(default 100) — large libraries no longer dump thousands of lines per call
Fixed
homelab_healthfalse negatives: Proxmox/Devbox/QNAP entries are bare hosts, not URLs, so their HTTP pings always failed — Proxmox is now probed athttps://HOST:PORT, Devbox/QNAP via TCP on their SSH ports; services answering 401/403/404 now count as reachable; self-signed HTTPS no longer fails the reachability probemedia_dashboardstorage section: multipleDASHBOARD_DISK_PATHSwere quoted as a singledfargument and silently produced no output — each path is now escaped individually
Performance
- SSH keepalive + fast-fail connect on devbox, Proxmox, and QNAP connections (
keepaliveInterval15s ×3,readyTimeout15s) — dead peers are detected instead of hanging until command timeout - Server-side lookups: Radarr/Sonarr single-item operations (add/remove/force-search/season-search/check-releases) query by
tmdbId/tvdbIdinstead of fetching the entire library each call devbox_project_list: probes all projects in parallel with one combined SSH command each (was: two sequential round trips per project)ArrClient: HTTPS keep-alive agent added (HTTP-only before)
v2.1.0 — AI Setup Wizard
v2.1.0 — 2026-06-09
Added
homelab_setup— AI-native onboarding wizard with three modes:status— reads .env, reports configured vs missing with progress %configure— saves settings interactively through conversationtest— verifies connectivity to all configured services
isSecretKey()helper — single source of truth for credential masking- npm install method in README (
npm install homelab-mcp) - Updated MCP config for
npx homelab-mcp
Security
- All passwords, API keys, tokens, and secrets are masked (••••••••) in tool output
- Centralized secret detection via
isSecretKey()— covers PASSWORD, API_KEY, TOKEN, SECRET patterns - Secrets written to .env are never read back in plaintext
v2.0.2 — Corrected repo URLs
v2.0.2 — 2026-06-09
Fixed
- Corrected GitHub username in all repository URLs (package.json, README badges, SECURITY.md)
- CI badge now points to the correct Actions workflow
v2.0.1 — Open-source readiness & community polish
v2.0.1 — 2026-06-09
Added
- Community health files: issue/PR templates, CODE_OF_CONDUCT.md
- Status badges (CI, npm, license, node) and banner image in README
.nvmrcfor automatic Node.js version switching.npmrcwithengine-strict=trueto enforce Node.js >=20- Author field in
package.json - Expanded npm keywords for better discoverability
Changed
- Prometheus and Grafana are now optional — server starts without them
- Populated
.mcp.example.jsonwith a working config example
Fixed
- Typo:
serrModule→seerrModulein Seerr module export - Missing security contact in SECURITY.md
- Wrong GitHub username in all URLs (ninomeier → Nainounen)
.claude/directory added to.gitignore