
Home Assistant
STDIOHome Assistant integration MCP server for AI to control smart home devices and systems.
Home Assistant integration MCP server for AI to control smart home devices and systems.
A comprehensive MCP (Model Context Protocol) server that provides extensive integration with Home Assistant, enabling AI assistants to interact with smart home devices, automations, and system management.
🚧 Smithery Deployment Status: Currently optimizing tool loading to prevent timeout during Smithery's tool scanning. See TIMEOUT_RESOLUTION.md for details.
# Clone the repository git clone https://github.com/gilberth/enhanced-homeassistant-mcp.git cd enhanced-homeassistant-mcp # Install dependencies npm install # Copy environment template cp .env.example .env
Edit the .env
file with your Home Assistant details:
HOME_ASSISTANT_URL=http://homeassistant.local:8123 HOME_ASSISTANT_TOKEN=your_long_lived_access_token_here DEBUG=false REQUEST_TIMEOUT=10000
# Development mode npm run dev # Production mode npm run build npm start # With MCP Inspector (for testing) npm run inspector
Para un despliegue fácil y seguro usando Docker:
# Construir la imagen docker build -t enhanced-homeassistant-mcp . # Ejecutar el contenedor docker run -d \ --name homeassistant-mcp \ --restart unless-stopped \ -e HOME_ASSISTANT_URL="http://your-hass-ip:8123" \ -e HOME_ASSISTANT_TOKEN="your_long_lived_token" \ enhanced-homeassistant-mcp
📖 Guía completa de Docker: Ver DOCKER.md para instrucciones detalladas.
Para usar el servidor desplegado en la nube a través de Smithery:
@gilberth/enhanced-homeassistant-mcp
// Usar con Smithery SDK import { createSmitheryUrl } from "@smithery/sdk"; import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; const config = { homeAssistantToken: "your_token", homeAssistantUrl: "http://your-hass-ip:8123", }; const serverUrl = createSmitheryUrl( "https://server.smithery.ai/@gilberth/enhanced-homeassistant-mcp", { config, apiKey: "your-smithery-api-key" } );
🎯 Ventajas de Smithery: Sin configuración de infraestructura, escalado automático, y acceso global.
Tool | Description | Parameters |
---|---|---|
homeassistant_api_status | Check API connectivity | None |
homeassistant_get_entity_state | Get entity state | entity_id |
homeassistant_list_all_entities | List all entities | domain (optional) |
homeassistant_call_service | Call HA service | domain , service , entity_id , service_data |
homeassistant_list_services | List available services | domain (optional) |
homeassistant_get_config | Get HA configuration | None |
Tool | Description | Parameters |
---|---|---|
homeassistant_list_automations | List all automations | None |
homeassistant_toggle_automation | Enable/disable automation | entity_id , action |
homeassistant_trigger_automation | Trigger automation | entity_id |
homeassistant_list_scenes | List all scenes | None |
homeassistant_activate_scene | Activate scene | entity_id |
homeassistant_list_scripts | List all scripts | None |
homeassistant_run_script | Run script | entity_id |
homeassistant_list_input_booleans | List input booleans | None |
homeassistant_toggle_input_boolean | Toggle input boolean | entity_id , action |
Tool | Description | Parameters |
---|---|---|
homeassistant_get_entity_history | Get entity history | entity_id , start_time , end_time , minimal_response |
homeassistant_get_logbook | Get logbook entries | entity_id , start_time , end_time |
homeassistant_get_events | List event types | None |
homeassistant_get_error_log | Get error log | None |
homeassistant_check_config | Validate configuration | None |
Tool | Description | Parameters |
---|---|---|
homeassistant_control_lights | Control lights | entity_id , action , brightness , color_name , rgb_color , etc. |
homeassistant_control_climate | Control climate devices | entity_id , temperature , hvac_mode , preset_mode , etc. |
homeassistant_control_media_player | Control media players | entity_id , action , media_content_id , volume_level , etc. |
homeassistant_control_covers | Control covers/blinds | entity_id , action , position |
homeassistant_get_devices_by_type | List devices by domain | domain |
homeassistant_send_notification | Send notifications | service , title , message , target |
Tool | Description | Parameters |
---|---|---|
homeassistant_system_info | Get system information | None |
homeassistant_render_template | Render Jinja2 template | template |
homeassistant_list_areas | List all areas | None |
homeassistant_list_devices | List all devices | None |
homeassistant_list_integrations | List integrations | None |
homeassistant_restart_service | Restart Home Assistant | confirm |
homeassistant_supervisor_info | Get Supervisor info | None |
homeassistant_list_addons | List add-ons | None |
homeassistant_search_entities | Search entities | search , domain |
// Get light state const lightState = await homeassistant_get_entity_state({ entity_id: "light.living_room", }); // Turn on light with brightness and color const result = await homeassistant_control_lights({ entity_id: "light.living_room", action: "turn_on", brightness_pct: 75, color_name: "warm_white", });
// List all automations const automations = await homeassistant_list_automations(); // Enable an automation const enabled = await homeassistant_toggle_automation({ entity_id: "automation.morning_routine", action: "turn_on", }); // Activate a scene const scene = await homeassistant_activate_scene({ entity_id: "scene.movie_time", });
// Set thermostat temperature const climate = await homeassistant_control_climate({ entity_id: "climate.living_room", temperature: 22, hvac_mode: "heat", });
// Get system overview const systemInfo = await homeassistant_system_info(); // Search for entities const searchResults = await homeassistant_search_entities({ search: "temperature", domain: "sensor", });
Ready-to-use client examples are available in the examples/
directory:
simple-client.js
- Basic connection and tool usagesmithery-client.js
- Full-featured demonstrationsecure-client.js
- Environment-based secure configurationcd examples npm install cp .env.example .env # Edit .env with your credentials npm run secure
🔗 Using with Smithery: The examples are ready for use with servers deployed on Smithery.ai
📖 Detailed Guide: See examples/README.md
for complete setup instructions
src/
├── index.ts # Main server file
├── utils/
│ └── api.ts # API utilities
└── tools/
└── homeassistant/
├── basic.ts # Basic HA operations
├── automation.ts # Automation tools
├── history.ts # History and monitoring
├── devices.ts # Device control
└── system.ts # System administration
server.tool()
# Run with inspector for interactive testing npm run inspector # Test specific endpoints curl -H "Authorization: Bearer YOUR_TOKEN" \ "http://localhost:8123/api/states"
Connection Failed
Authentication Failed
Entity Not Found
homeassistant_list_all_entities
to find correct entity IDslight.
, sensor.
)Service Call Failed
homeassistant_list_services
to verify service availabilityEnable debug logging in your .env
:
DEBUG=true
git checkout -b feature/amazing-feature
git commit -m 'Add amazing feature'
git push origin feature/amazing-feature
This MCP server uses the Home Assistant REST API. Key endpoints:
/api/
- API information/api/states
- Entity states/api/services
- Available services/api/config
- Configuration/api/history
- Historical data/api/logbook
- Logbook entriesThis project is licensed under the MIT License - see the LICENSE file for details.
If you encounter issues or have questions:
Made with ❤️ for the Home Assistant community