@jarahkon/hass-mcp-server
npm
v1.0.10
Source verified
Published by jarahkon — publish provenance cryptographically ties this package to that repository. That is proof of origin, not an official vendor package.
MCP server for full Home Assistant control — dashboards, files, automations, add-ons, and more
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 6 = 94. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
Tools that read sensitive data ([ha_list_files, ha_read_file]) and tools that can send data out ([ha_upload_file, ha_upload_file_content]) are exposed together. An agent can move private data to the sink.
Evidence: sources [ha_list_files, ha_read_file] → sinks [ha_upload_file, ha_upload_file_content]
Fix: Keep secret-reading and egress capabilities on separate, separately-approved servers.
Location: flow ha_list_files → ha_upload_file
Tool "ha_delete_file" can write, overwrite or delete files (keyword "delete_file" in tool name). Verify it is scoped to a safe directory.
Fix: Constrain file operations to an explicit, non-sensitive root; reject path traversal.
Location: tool ha_delete_file
In a packaging/dev/install script (shipped, but not the server runtime) (`dist/__tests__/config.test.js:111`): Reading private keys / cloud credentials, or serializing the whole environment, is a sensitive-data source that becomes exfiltration when combined with any egress. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: yPath: "/home/user/.ssh/id_rsa", }; const result = requireSshConfig(config); expect(result.sshPr
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/__tests__/config.test.js
Tool "ha_delete_file" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.
Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.
Location: tool ha_delete_file
Tool "ha_list_files" takes a path parameter "path" with no constraint. Without a canonicalize-and-contain check (not visible statically), this permits ../ traversal outside the intended root.
Fix: Resolve and verify the path stays within an allowed root; reject traversal sequences.
Location: tool ha_list_files · inputSchema.properties.path
Tool "ha_read_file" takes a path parameter "path" with no constraint. Without a canonicalize-and-contain check (not visible statically), this permits ../ traversal outside the intended root.
Fix: Resolve and verify the path stays within an allowed root; reject traversal sequences.
Location: tool ha_read_file · inputSchema.properties.path
Tool "ha_delete_file" takes a path parameter "path" with no constraint. Without a canonicalize-and-contain check (not visible statically), this permits ../ traversal outside the intended root.
Fix: Resolve and verify the path stays within an allowed root; reject traversal sequences.
Location: tool ha_delete_file · inputSchema.properties.path
Each tool and what it can reach — statically extracted from the published source.
ha_delete_filewrites filesha_list_filesreads sensitive dataha_read_filereads sensitive dataha_upload_filenetwork egressha_upload_file_contentnetwork egressha_addon_infono sensitive capabilityha_addon_optionsno sensitive capabilityha_call_serviceno sensitive capabilityha_check_apino sensitive capabilityha_check_configno sensitive capabilityha_create_areano sensitive capabilityha_create_automationno sensitive capabilityha_create_backupno sensitive capabilityha_create_dashboardno sensitive capabilityha_create_helperno sensitive capabilityha_create_sceneno sensitive capabilityha_create_scriptno sensitive capabilityha_delete_automationno sensitive capabilityha_delete_dashboardno sensitive capabilityha_delete_helperno sensitive capabilityha_delete_sceneno sensitive capabilityha_delete_scriptno sensitive capabilityha_delete_stateno sensitive capabilityha_file_existsno sensitive capabilityha_fire_eventno sensitive capabilityha_get_automationno sensitive capabilityha_get_calendar_eventsno sensitive capabilityha_get_calendarsno sensitive capabilityha_get_componentsno sensitive capabilityha_get_configno sensitive capabilityha_get_dashboard_configno sensitive capabilityha_get_entityno sensitive capabilityha_get_error_logno sensitive capabilityha_get_eventsno sensitive capabilityha_get_historyno sensitive capabilityha_get_logbookno sensitive capabilityha_get_statesno sensitive capabilityha_handle_intentno sensitive capabilityha_install_addonno sensitive capabilityha_list_addonsno sensitive capabilityha_list_areasno sensitive capabilityha_list_automationsno sensitive capabilityha_list_backupsno sensitive capabilityha_list_dashboardsno sensitive capabilityha_list_devicesno sensitive capabilityha_list_entity_registryno sensitive capabilityha_list_helpersno sensitive capabilityha_list_scenesno sensitive capabilityha_list_scriptsno sensitive capabilityha_list_servicesno sensitive capabilityha_mkdirno sensitive capabilityha_render_templateno sensitive capabilityha_restart_addonno sensitive capabilityha_restart_coreno sensitive capabilityha_save_dashboard_configno sensitive capabilityha_set_stateno sensitive capabilityha_start_addonno sensitive capabilityha_stop_addonno sensitive capabilityha_system_infono sensitive capabilityha_uninstall_addonno sensitive capabilityha_update_automationno sensitive capabilityha_update_core_configno sensitive capabilityha_update_dashboardno sensitive capabilityha_update_helperno sensitive capabilityha_update_sceneno sensitive capabilityha_update_scriptno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v1.0.10 latest |
A 94/100 | 7 | 1.13.0 | 2026-09-07 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan @jarahkon/hass-mcp-server --online
Independent packages implementing the same tool, scanned with the same engine. Compare all 3 side by side →
Home Assistant Model Context Protocol (MCP) server
MCP server for Home Assistant (REST/WebSocket) control.
Adapters for the FrontMCP framework
Transcend MCP Server — Admin tools.
Transcend MCP Server — Assessments tools.
MCP Server for Bling
MCP Server for Blogger API
Official MCP server for Brilliant Directories — manage members, posts, leads, reviews, and more.