ha-nexus-agent
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HA_URL | Yes | Home Assistant URL | http://homeassistant.local:8123 |
| HA_TOKEN | Yes | Long-lived access token (required for standalone mode) | |
| NEXUS_PORT | No | HTTP server port | 7123 |
| NEXUS_API_KEY | No | Pin to a specific API key (auto-generated if not set) | |
| HA_CONFIG_PATH | No | Path to HA config directory (for git tools) | /config |
| SUPERVISOR_TOKEN | No | Auto-injected when running as Home Assistant add-on |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| entities_list_entitiesA | List entities, optionally filtered by domain, with pagination and field selection. |
| entities_get_entityC | Get full state and attributes of a single entity. |
| entities_turn_onA | Turn on an entity. Optional: brightness (0-255), color_temp (mireds), rgb_color ([r,g,b]). |
| entities_turn_offC | Turn off an entity. |
| entities_toggleC | Toggle an entity between on and off. |
| entities_set_valueC | Set value of input_number, number, or climate temperature. |
| entities_select_optionC | Select option for input_select or select entity. |
| entities_update_entity_nameC | Rename an entity in the entity registry. |
| entities_assign_entity_to_areaC | Assign an entity to an area. |
| entities_disable_entityC | Disable an entity in the registry. |
| entities_enable_entityB | Re-enable a disabled entity. |
| entities_list_entity_registryC | Get raw entity registry (includes disabled, hidden entities). |
| entities_bulk_controlA | Bulk turn_on/turn_off/toggle a list of entities. Groups entities by domain and issues one service call per domain
(e.g. all |
| entities_bulk_set_stateA | Bulk-write states using HA's set_state API. Each item must contain |
| entities_set_entity_exposureB | Expose or hide an entity to a voice assistant.
|
| entities_get_entity_exposureB | Get exposure flags for an entity across all voice assistants. |
| entities_list_exposed_entitiesA | List all entities exposed to a given voice assistant.
|
| entities_bulk_set_entity_exposureA | Expose/hide many entities across one or more voice assistants in one call.
|
| services_call_serviceA | Call any Home Assistant service. E.g. domain='light', service='turn_on', data={'entity_id':'light.living_room','brightness':200}. |
| services_list_servicesB | List all available services, optionally filtered by domain. |
| services_fire_eventC | Fire a Home Assistant event. |
| services_render_templateA | Render a Jinja2 template string using HA template engine. Useful for testing templates before saving. |
| services_reload_configA | Reload configuration for a domain (automation, script, scene, input_boolean, etc.). |
| services_press_buttonC | Press a button entity. |
| services_set_cover_positionC | Set cover/blind/shutter position (0=closed, 100=open). |
| services_set_cover_tiltA | Set cover tilt position (0=closed, 100=open). |
| services_set_climate_modeA | Set climate HVAC mode (heat, cool, auto, off, fan_only, dry). |
| services_set_light_colorC | Set light color, color temperature and/or brightness. |
| services_media_play_pauseC | Toggle play/pause on a media player. |
| services_media_seekC | Seek media player to position (seconds). |
| services_set_volumeB | Set media player volume (0.0 to 1.0). |
| services_send_notificationC | Send a Home Assistant notification. target = notify service name (default: notify). |
| services_camera_snapshotB | Take a still snapshot from a camera entity.
|
| services_camera_recordB | Record a short clip from a camera entity to
|
| services_notify_persistent_createA | Create or replace a persistent notification in the HA UI. Provide |
| services_notify_persistent_dismissB | Dismiss a persistent notification by its |
| services_notify_persistent_dismiss_allA | Dismiss all persistent notifications. |
| automations_list_automationsA | List all automations with their current state. |
| automations_trigger_automationC | Manually trigger an automation. |
| automations_enable_automationA | Enable a disabled automation. |
| automations_disable_automationC | Disable an automation. |
| automations_reload_automationsA | Reload all automations from YAML. |
| automations_list_scriptsA | List all scripts. |
| automations_run_scriptC | Run a script, optionally with variables. |
| automations_reload_scriptsC | Reload all scripts from YAML. |
| automations_list_scenesA | List all scenes. |
| automations_activate_sceneC | Activate a scene. |
| automations_reload_scenesB | Reload scenes from YAML. |
| automations_get_scene_configA | Get a scene's config dict (entities + their target states). Accepts bare id or 'scene.'. Returns None if not found. |
| automations_set_scene_configB | Create or overwrite a scene config. Auto-reloads scenes. entities format — keys are entity_ids, values are the target state dict: { "light.living_room": {"state": "on", "brightness": 76}, "cover.roleta": {"state": "closed", "position": 0}, "switch.fan": {"state": "off"} } brightness range is 0-255 (30% ≈ 76, 50% ≈ 128, 100% = 255). |
| automations_delete_sceneA | Delete a scene config. Requires confirm=True. Auto-reloads scenes. |
| automations_get_automation_configA | Get an automation's YAML config as a dict. Accepts bare id or 'automation.'. Returns None if not found. |
| automations_set_automation_configA | Create or overwrite an automation YAML config (alias, trigger, action, condition, ...). Auto-reloads automations. |
| automations_delete_automationB | Delete an automation by id. Auto-reloads automations afterwards. Set confirm=True to proceed. |
| automations_get_script_configA | Get a script's YAML config as a dict. Accepts bare id or 'script.'. Returns None if not found. |
| automations_set_script_configB | Create or overwrite a script YAML config (sequence, fields, ...). Auto-reloads scripts. |
| automations_delete_scriptB | Delete a script by id. Auto-reloads scripts afterwards. Set confirm=True to proceed. |
| automations_list_automation_tracesA | List trace summaries (recent runs) for an automation. Accepts bare id or 'automation.'. |
| automations_get_automation_traceB | Get a full automation trace (steps, timing, condition results) for a specific run. |
| automations_list_script_tracesA | List trace summaries (recent runs) for a script. Accepts bare id or 'script.'. |
| automations_get_script_traceA | Get a full script trace (steps, timing, action results) for a specific run. |
| automations_get_last_automation_traceA | Shortcut: fetch the most recent trace for an automation in one call. Use |
| automations_get_last_script_traceA | Shortcut: fetch the most recent (or most recent failed) trace for a script. |
| automations_validate_best_practicesA | Validate automation YAML against HA best practices (static linter). Accepts a single automation dict or a list of automation dicts. Checks:
Returns: {valid_yaml, automations_checked, issues_total, warnings, infos, issues[], summary} Each issue: {automation, rule, severity, message} severity: 'warning' = should fix, 'info' = good to know. |
| automations_validate_automation_referencesA | Cross-check entity IDs and services used in automation YAML against the live HA registry. Unlike validate_best_practices (static), this tool calls Home Assistant to verify that every referenced entity_id exists and every service is registered. Template values ({{ ... }}) are skipped — they can't be resolved statically. Returns: { valid_yaml, entities_checked, services_checked, missing_entities[], missing_services[], template_refs_skipped, summary } |
| automations_list_groupsA | List all Home Assistant entity groups (group.* entities). Returns groups with their members, icon, and current state. |
| automations_set_groupA | Create or update a Home Assistant entity group. Wraps the group.set service. Group is stored in groups.yaml and persists restarts. |
| automations_remove_groupA | Remove a Home Assistant entity group. Set confirm=True to proceed. |
| areas_list_areasA | List all areas (rooms) in Home Assistant. |
| areas_create_areaC | Create a new area. |
| areas_delete_areaB | Delete an area by its area_id. |
| areas_list_floorsA | List all floors. |
| areas_list_devicesB | List all devices in the device registry. |
| areas_get_area_entitiesC | Get all entities belonging to an area. |
| areas_get_area_statesA | Get current states of all entities in an area. |
| areas_control_areaA | Turn on/off/toggle all entities of a domain in an area. action: 'turn_on' | 'turn_off' | 'toggle' |
| history_get_state_historyC | Get state history for an entity over the last N hours. |
| history_get_logbookC | Get logbook entries, optionally filtered by entity_id. |
| history_get_error_logA | Fetch the Home Assistant error log. |
| history_get_system_infoA | Get Home Assistant system/version info. |
| history_get_ha_configA | Get current Home Assistant configuration (location, units, version, components). |
| helpers_list_helpersA | List all helper entities (input_boolean, input_number, input_select, counter, timer…). |
| helpers_set_input_booleanC | Set input_boolean to true or false. |
| helpers_set_input_numberC | Set an input_number value. |
| helpers_set_input_textC | Set an input_text value. |
| helpers_set_input_selectC | Set an input_select to a specific option. |
| helpers_set_input_datetimeB | Set input_datetime. Provide date (YYYY-MM-DD), time (HH:MM:SS) or datetime (YYYY-MM-DD HH:MM:SS). |
| helpers_increment_counterC | Increment a counter helper. |
| helpers_reset_counterC | Reset a counter helper to 0. |
| helpers_start_timerC | Start a timer. duration format: HH:MM:SS or number of seconds. |
| helpers_cancel_timerC | Cancel a running timer. |
| helpers_reload_helpersA | Reload all helper entities from configuration. |
| system_check_configA | Validate Home Assistant configuration before restart. |
| system_restart_haA | Restart Home Assistant. WARNING: causes ~30s downtime. Set confirm=True to proceed; without it returns a safety prompt. |
| system_stop_haA | Stop Home Assistant. WARNING: requires manual restart. Set confirm=True to proceed; without it returns a safety prompt. |
| system_reload_allB | Reload core configuration (automations, scripts, scenes, groups, etc.). |
| system_create_backupB | Create a full Home Assistant backup. |
| system_list_integrationsA | List all loaded integrations (config entries). |
| system_reload_integrationC | Reload a specific integration config entry. |
| system_ping_haA | Check if Home Assistant is reachable. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| card_builder_design_dashboard | Set context for designing a whole Home Assistant dashboard. |
| card_builder_design_card | Set context for designing one Card Builder card for an entity domain. |
| card_builder_pick_template | Help an AI client choose the right pre-built template for an entity. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Fistacho/ha-nexus-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server