Provides a flexible interface for Home Assistant device management and automation through a REST API and WebSocket/SSE connections, enabling basic device control, state updates, and automation rule management.
Enables GPU-accelerated speech processing capabilities when using NVIDIA GPUs with CUDA support, improving performance for wake word detection and speech-to-text features.
Home Assistant Model Context Protocol (MCP)
A standardized protocol for AI assistants to interact with Home Assistant, providing a secure, typed, and extensible interface for controlling smart home devices.
Overview
The Model Context Protocol (MCP) server acts as a bridge between AI models (like Claude, GPT, etc.) and Home Assistant, enabling AI assistants to:
- Execute commands on Home Assistant devices 
- Retrieve information about the smart home 
- Stream responses for long-running operations 
- Validate parameters and inputs 
- Provide consistent error handling 
Features
- Modular Architecture - Clean separation between transport, middleware, and tools 
- Typed Interface - Fully TypeScript typed for better developer experience 
- Multiple Transports: - Standard I/O (stdin/stdout) for CLI integration 
- HTTP/REST API with Server-Sent Events support for streaming 
 
- Middleware System - Validation, logging, timeout, and error handling 
- Built-in Tools: - Light control (brightness, color, etc.) 
- Climate control (thermostats, HVAC) 
- More to come... 
 
- Extensible Plugin System - Easily add new tools and capabilities 
- Streaming Responses - Support for long-running operations 
- Parameter Validation - Using Zod schemas 
- Claude & Cursor Integration - Ready-made utilities for AI assistants 
Getting Started
Prerequisites
- Node.js 16+ 
- Home Assistant instance (or you can use the mock implementations for testing) 
Installation
Running the Server
Configuration
Configure the server using environment variables or a .env file:
Architecture
The MCP server is built with a layered architecture:
- Transport Layer - Handles communication protocols (stdio, HTTP) 
- Middleware Layer - Processes requests through a pipeline 
- Tool Layer - Implements specific functionality 
- Resource Layer - Manages stateful resources 
Tools
Tools are the primary way to add functionality to the MCP server. Each tool:
- Has a unique name 
- Accepts typed parameters 
- Returns typed results 
- Can stream partial results 
- Validates inputs and outputs 
Example tool registration:
API
When running with HTTP transport, the server provides a JSON-RPC 2.0 API:
- POST /api/mcp/jsonrpc- Execute a tool
- GET /api/mcp/stream- Connect to SSE stream for real-time updates
- GET /api/mcp/info- Get server information
- GET /health- Health check endpoint
Integration with AI Models
Claude Integration
Cursor Integration
To use the Home Assistant MCP server with Cursor, add the following to your .cursor/config/config.json file:
This configuration:
- Runs the MCP server with stdio transport 
- Redirects all stderr output to /dev/null 
- Uses grep to filter stdout for lines containing - {"jsonrpc":"2.0", ensuring clean JSON-RPC output
Troubleshooting Cursor Integration
If you encounter a "failed to create client" error when using the MCP server with Cursor:
- Make sure you're using the correct command and arguments in your Cursor configuration - The bash script approach ensures only valid JSON-RPC messages reach Cursor 
- Ensure the server is built by running - bun run buildbefore trying to connect
 
- Ensure the server is properly outputting JSON-RPC messages to stdout: bun run dist/index.js --stdio 2>/dev/null | grep -E '\{"jsonrpc":"2\.0"' > json_only.txt- Then examine json_only.txt to verify it contains only valid JSON-RPC messages. 
- Make sure grep is installed on your system (it should be available by default on most systems) 
- Try rebuilding the server with: bun run build
- Enable debug mode by setting - DEBUG_STDIO=truein the environment variables
If the issue persists, you can try:
- Restarting Cursor 
- Clearing Cursor's cache (Help > Developer > Clear Cache and Reload) 
- Using a similar approach with Node.js: { "command": "bash", "args": ["-c", "cd ${workspaceRoot} && node dist/index.js --stdio 2>/dev/null | grep -E '\\{\"jsonrpc\":\"2\\.0\"'"] }
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
MCP Server for Home Assistant ð ð€
 
 
 
Overview ð
MCP (Model Context Protocol) Server is my lightweight integration tool for Home Assistant, providing a flexible interface for device management and automation. It's designed to be fast, secure, and easy to use. Built with Bun for maximum performance.
Core Features âš
- ð Basic device control via REST API 
- ð¡ WebSocket/Server-Sent Events (SSE) for state updates 
- ð€ Simple automation rule management 
- ð JWT-based authentication 
- ð Standard I/O (stdio) transport for integration with Claude and other AI assistants 
Why Bun? ð
I chose Bun as the runtime for several key benefits:
- â¡ Blazing Fast Performance - Up to 4x faster than Node.js 
- Built-in TypeScript support 
- Optimized file system operations 
 
- ð¯ All-in-One Solution - Package manager (faster than npm/yarn) 
- Bundler (no webpack needed) 
- Test runner (built-in testing) 
- TypeScript transpiler 
 
- ð Built-in Features - SQLite3 driver 
- .env file loading 
- WebSocket client/server 
- File watcher 
- Test runner 
 
- ðŸ Resource Efficient - Lower memory usage 
- Faster cold starts 
- Better CPU utilization 
 
- ð Node.js Compatibility - Runs most npm packages 
- Compatible with Express/Fastify 
- Native Node.js APIs 
 
Prerequisites ð
- ð Bun runtime (v1.0.26+) 
- ð¡ Home Assistant instance 
- ð³ Docker (optional, recommended for deployment) 
- ð¥ïž Node.js 18+ (optional, for speech features) 
- ð® NVIDIA GPU with CUDA support (optional, for faster speech processing) 
Quick Start ð
- Clone my repository: 
- Set up the environment: 
- Configure your settings: 
- Edit - .envfile with your Home Assistant details
- Required: Add your - HASS_TOKEN(long-lived access token)
- Build and launch with Docker: 
Docker Build Options ð³
My Docker build script (docker-build.sh) supports different configurations:
1. Standard Build
- Basic MCP server functionality 
- REST API and WebSocket support 
- No speech features 
2. Speech-Enabled Build
- Includes wake word detection 
- Speech-to-text capabilities 
- Pulls required images: - onerahmet/openai-whisper-asr-webservice
- rhasspy/wyoming-openwakeword
 
3. GPU-Accelerated Build
- All speech features 
- CUDA GPU acceleration 
- Optimized for faster processing 
- Float16 compute type for better performance 
Build Features
- ð Automatic resource allocation 
- ðŸ Memory-aware building 
- ð CPU quota management 
- ð§¹ Automatic cleanup 
- ð Detailed build logs 
- ð Build summary and status 
Environment Configuration ð§
I've implemented a hierarchical configuration system:
File Structure ð
- .env.example- My template with all options
- .env- Your configuration (copy from .env.example)
- Environment overrides: - .env.dev- Development settings
- .env.prod- Production settings
- .env.test- Test settings
 
Loading Priority â¡
Files load in this order:
- .env(base config)
- Environment-specific file: - NODE_ENV=developmentâ- .env.dev
- NODE_ENV=productionâ- .env.prod
- NODE_ENV=testâ- .env.test
 
Later files override earlier ones.
Development ð»
Performance Comparison ð
| Operation | Bun | Node.js | 
| Install Dependencies | ~2s | ~15s | 
| Cold Start | 300ms | 1000ms | 
| Build Time | 150ms | 4000ms | 
| Memory Usage | ~150MB | ~400MB | 
Documentation ð
Core Documentation
Advanced Features
- Natural Language Processing - AI-powered automation analysis and control 
- Custom Prompts Guide - Create and customize AI behavior 
- Extras & Tools - Additional utilities and advanced features 
Client Integration ð
Cursor Integration ð±ïž
Add to .cursor/config/config.json:
Claude Desktop ð¬
Add to your Claude config:
Command Line ð»
Windows users can use the provided script:
- Go to - scriptsdirectory
- Run - start_mcp.cmd
Additional Features
Speech Features ð€
MCP Server optionally supports speech processing capabilities:
- ð£ïž Wake word detection ("hey jarvis", "ok google", "alexa") 
- ð¯ Speech-to-text using fast-whisper 
- ð Multiple language support 
- ð GPU acceleration support 
Speech Features Setup
Prerequisites
- ð³ Docker installed and running 
- ð® NVIDIA GPU with CUDA (optional) 
- ðŸ 4GB+ RAM (8GB+ recommended) 
Configuration
- Enable speech in - .env:
- Choose your STT engine: 
Available Models ð€
Choose based on your needs:
- tiny.en: Fastest, basic accuracy
- base.en: Good balance (recommended)
- small.en: Better accuracy, slower
- medium.en: High accuracy, resource intensive
- large-v2: Best accuracy, very resource intensive
Launch with Speech Features
Extra Tools ð ïž
I've included several powerful tools in the extra/ directory to enhance your Home Assistant experience:
- Home Assistant Analyzer CLI ( - ha-analyzer-cli.ts)- Deep automation analysis using AI models 
- Security vulnerability scanning 
- Performance optimization suggestions 
- System health metrics 
 
- Speech-to-Text Example ( - speech-to-text-example.ts)- Wake word detection 
- Speech-to-text transcription 
- Multiple language support 
- GPU acceleration support 
 
- Claude Desktop Setup ( - claude-desktop-macos-setup.sh)- Automated Claude Desktop installation for macOS 
- Environment configuration 
- MCP integration setup 
 
See Extras Documentation for detailed usage instructions and examples.
License ð
MIT License. See LICENSE for details.
Author ðšâð»
Created by jango-blockchained
Running with Standard I/O Transport ð
MCP Server supports a JSON-RPC 2.0 stdio transport mode for direct integration with AI assistants like Claude:
MCP Stdio Features
â
 JSON-RPC 2.0 Compatibility: Full support for the MCP protocol standard
â
 NPX Support: Run directly without installation using npx homeassistant-mcp
â
 Auto Configuration: Creates necessary directories and default configuration
â
 Cross-Platform: Works on macOS, Linux, and Windows
â
 Claude Desktop Integration: Ready to use with Claude Desktop
â
 Parameter Validation: Automatic validation of tool parameters
â
 Error Handling: Standardized error codes and handling
â
 Detailed Logging: Logs to files without polluting stdio
Option 1: Using NPX (Easiest)
Run the MCP server directly without installation using npx:
This will:
- Install the package temporarily 
- Automatically run in stdio mode with JSON-RPC 2.0 transport 
- Create a logs directory for logging 
- Create a default .env file if not present 
Perfect for integration with Claude Desktop or other MCP clients.
Integrating with Claude Desktop
To use MCP with Claude Desktop:
- Open Claude Desktop settings 
- Go to the "Advanced" tab 
- Under "MCP Server", select "Custom" 
- Enter the command: - npx homeassistant-mcp
- Click "Save" 
Claude will now use the MCP server for Home Assistant integration, allowing you to control your smart home directly through Claude.
Option 2: Local Installation
- Update your - .envfile to enable stdio transport:USE_STDIO_TRANSPORT=true
- Run the server using the stdio-start script: ./stdio-start.sh- Available options: ./stdio-start.sh --debug # Enable debug mode ./stdio-start.sh --rebuild # Force rebuild ./stdio-start.sh --help # Show help
When running in stdio mode:
- The server communicates via stdin/stdout using JSON-RPC 2.0 format 
- No HTTP server is started 
- Console logging is disabled to avoid polluting the stdio stream 
- All logs are written to the log files in the - logs/directory
JSON-RPC 2.0 Message Format
Request Format
Response Format
Error Response Format
Notification Format (Server to Client)
Supported Error Codes
| Code | Description | Meaning | 
| -32700 | Parse error | Invalid JSON was received | 
| -32600 | Invalid request | JSON is not a valid request object | 
| -32601 | Method not found | Method does not exist or is unavailable | 
| -32602 | Invalid params | Invalid method parameters | 
| -32603 | Internal error | Internal JSON-RPC error | 
| -32000 | Tool execution | Error executing the tool | 
| -32001 | Validation error | Parameter validation failed | 
Integrating with Claude Desktop
To use this MCP server with Claude Desktop:
- Create or edit your Claude Desktop configuration: # On macOS nano ~/Library/Application\ Support/Claude/claude_desktop_config.json # On Linux nano ~/.config/Claude/claude_desktop_config.json # On Windows notepad %APPDATA%\Claude\claude_desktop_config.json
- Add the MCP server configuration: { "mcpServers": { "homeassistant-mcp": { "command": "npx", "args": ["homeassistant-mcp"], "env": { "HASS_TOKEN": "your_home_assistant_token_here", "HASS_HOST": "http://your_home_assistant_host:8123" } } } }
- Restart Claude Desktop. 
- In Claude, you can now use the Home Assistant MCP tools. 
JSON-RPC 2.0 Message Format
Usage
Using NPX (Easiest)
The simplest way to use the Home Assistant MCP server is through NPX:
This will automatically:
- Start the server in stdio mode 
- Output JSON-RPC messages to stdout 
- Send log messages to stderr 
- Create a logs directory if it doesn't exist 
You can redirect stderr to hide logs and only see the JSON-RPC output:
Manual Installation
If you prefer to install the package globally or locally:
Or install locally:
Advanced Usage
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Smart Device Control ð® ð¡ Lights: Brightness, color, RGB ð¡ïž Climate: Temperature, HVAC, humidity ðª Covers: Position and tilt ð Switches: On/off ðš Sensors: State monitoring
Intelligent Organization ð Grouping with context awareness.
Robust Architecture ð ïž Error handling, state validation ...
Related MCP Servers
- -security-license-qualityAccess Home Assistant data and control devices (lights, switches, thermostats, etc).Last updated -6431Apache 2.0
- -security-license-qualityEnables users to control Google Home smart plugs using the Smart Home API with OAuth2 authentication, offering real-time device state management and control operations.
- Asecurity-licenseAqualityEnables AI assistants to control SwitchBot devices, providing functionalities like device management, scene execution, and sensor information monitoring through the SwitchBot API.Last updated -3ISC License
- -security-license-qualityEnables users to control Govee LED devices using the Govee API, with features for turning devices on/off, setting colors, and adjusting brightness through a CLI or MCP clients.Last updated -3MIT License
Appeared in Searches
- A server for finding information about smart technology and intelligence
- An MCP for managing lifestyle, coordinating daily routines, exercise, and study tasks
- Searching for information about license types or information starting with 'f'
- Finding MCP Servers Providing Insights for a Conversational Voice Interface
- A server for finding information about guitars