- Update README with minor text formatting - Improve Smithery configuration command formatting - Enhance macOS setup script with WebSocket URL conversion and security hardening
🚀 MCP Server for Home Assistant - Bringing AI-Powered Smart Homes to Life!
Overview 🌐
Welcome to the Model Context Protocol (MCP) Server for Home Assistant! This robust platform bridges Home Assistant with cutting-edge Language Learning Models (LLMs), enabling natural language interactions and real-time automation of your smart devices. Imagine entering your home, saying:
"Hey MCP, dim the lights and start my evening playlist,"
and watching your home transform instantly—that's the magic that MCP Server delivers!
Key Benefits ✨
🎮 Device Control & Monitoring
-
Voice-Controlled Automation:
Use simple commands like "Turn on the kitchen lights" or "Set the thermostat to 22°C" without touching a switch.
Real-World Example:
In the morning, say "Good morning! Open the blinds and start the coffee machine" to kickstart your day automatically. -
Real-Time Communication:
Experience sub-100ms latency updates via Server-Sent Events (SSE) or WebSocket connections, ensuring your dashboard is always current.
Real-World Example:
Monitor energy usage instantly during peak hours and adjust remotely for efficient consumption. -
Seamless Automation:
Create scene-based rules to synchronize multiple devices effortlessly.
Real-World Example:
For movie nights, have MCP dim the lights, adjust the sound system, and launch your favorite streaming app with just one command.
🤖 AI-Powered Enhancements
-
Natural Language Processing (NLP):
Convert everyday speech into actionable commands—just say, "Prepare the house for dinner," and MCP will adjust lighting, temperature, and even play soft background music. -
Predictive Automation & Suggestions:
Receive proactive recommendations based on usage habits and environmental trends.
Real-World Example:
When home temperature fluctuates unexpectedly, MCP suggests an optimal setting and notifies you immediately. -
Anomaly Detection:
Continuously monitor device activity and alert you to unusual behavior, helping prevent malfunctions or potential security breaches.
Architectural Overview 🏗
Our architecture is engineered for performance, scalability, and security. The following Mermaid diagram illustrates the data flow and component interactions:
graph TD
subgraph Client
A[Client Application<br/>(Web / Mobile / Voice)]
end
subgraph CDN
B[CDN / Cache]
end
subgraph Server
C[Bun Native Server]
E[NLP Engine<br/>& Language Processing Module]
end
subgraph Integration
D[Home Assistant<br/>(Devices, Lights, Thermostats)]
end
A -->|HTTP Request| B
B -- Cache Miss --> C
C -->|Interpret Command| E
E -->|Determine Action| D
D -->|Return State/Action| C
C -->|Response| B
B -->|Cached/Processed Response| A
Learn more about our architecture in the Architecture Documentation.
Technical Stack 🔧
Our solution is built on a modern, high-performance stack that powers every feature:
-
Bun:
A next-generation JavaScript runtime offering rapid startup times, native TypeScript support, and high performance.
👉 Learn about Bun -
Bun Native Server:
Utilizes Bun's built-in HTTP server to efficiently process API requests with sub-100ms response times.
👉 See the Installation Guide for details. -
Natural Language Processing (NLP) & LLM Integration:
Processes and interprets natural language commands using state-of-the-art LLMs and custom NLP modules.
👉 Find API usage details in the API Documentation. -
Home Assistant Integration:
Provides seamless connectivity with Home Assistant, ensuring flawless communication with your smart devices.
👉 Refer to the Usage Guide for more information. -
Redis Cache:
Enables rapid data retrieval and session persistence essential for real-time updates. -
TypeScript:
Enhances type safety and developer productivity across the entire codebase. -
JWT & Security Middleware:
Protects your ecosystem with JWT-based authentication, request sanitization, rate-limiting, and encryption. -
Containerization with Docker:
Enables scalable, isolated deployments for production environments.
For further technical details, check out our Documentation Index.
Installation 🛠
Installing via Smithery
To install Home Assistant MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @jango-blockchained/advanced-homeassistant-mcp --client claude
🐳 Docker Setup (Recommended)
For a hassle-free, containerized deployment:
# 1. Clone the repository (using a shallow copy for efficiency)
git clone --depth 1 https://github.com/jango-blockchained/homeassistant-mcp.git
# 2. Configure your environment: copy the example file and edit it with your Home Assistant credentials
cp .env.example .env # Modify .env with your Home Assistant host, tokens, etc.
# 3. Build and run the Docker containers
docker compose up -d --build
# 4. View real-time logs (last 50 log entries)
docker compose logs -f --tail=50
👉 Refer to our Installation Guide for full details.
💻 Bare Metal Installation
For direct deployment on your host machine:
# 1. Install Bun (if not already installed)
curl -fsSL https://bun.sh/install | bash
# 2. Install project dependencies with caching support
bun install --frozen-lockfile
# 3. Launch the server in development mode with hot-reload enabled
bun run dev --watch
Real-World Usage Examples 🔍
📱 Smart Home Dashboard Integration
Integrate MCP's real-time updates into your custom dashboard for a dynamic smart home experience:
const eventSource = new EventSource('http://localhost:3000/subscribe_events?token=YOUR_TOKEN&domain=light');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Real-time update:', data);
// Update your UI dashboard, e.g., refresh a light intensity indicator.
};
🏠 Voice-Activated Control
Utilize voice commands to trigger actions with minimal effort:
// Establish a WebSocket connection for real-time command processing
const ws = new WebSocket('wss://mcp.yourha.com/ws');
ws.onmessage = ({ data }) => {
const update = JSON.parse(data);
if (update.entity_id === 'light.living_room') {
console.log('Adjusting living room lighting based on voice command...');
// Additional logic to update your UI or trigger further actions can go here.
}
};
// Simulate processing a voice command
function simulateVoiceCommand(command) {
console.log("Processing voice command:", command);
// Integrate with your actual voice-to-text system as needed.
}
simulateVoiceCommand("Turn off all the lights for bedtime");
👉 Learn more in our Usage Guide.
Update Strategy 🔄
Maintain a seamless operation with zero downtime updates:
# 1. Pull the latest Docker images
docker compose pull
# 2. Rebuild and restart containers smoothly
docker compose up -d --build
# 3. Clean up unused Docker images to free up space
docker system prune -f
For more details, review our Troubleshooting & Updates.
Security Features 🔐
We prioritize the security of your smart home with multiple layers of defense:
- JWT Authentication 🔑: Secure, token-based API access to prevent unauthorized usage.
- Request Sanitization 🧼: Automatic filtering and validation of API requests to combat injection attacks.
- Rate Limiting & Fail2Ban 🚫: Monitors requests to prevent brute force and DDoS attacks.
- End-to-End Encryption 🔒: Ensures that your commands and data remain private during transmission.
Contributing 🤝
We value community contributions! Here's how you can help improve MCP Server:
- Fork the Repository 🍴
Create your own copy of the project. - Create a Feature Branch 🌿
git checkout -b feature/your-feature-name - Install Dependencies & Run Tests 🧪
bun install bun test --coverage - Make Your Changes & Commit 📝
Follow the Conventional Commits guidelines. - Open a Pull Request 🔀
Submit your changes for review.
Read more in our Contribution Guidelines.
Roadmap & Future Enhancements 🔮
We're continuously evolving MCP Server. Upcoming features include:
- AI Assistant Integration (Q4 2024):
Smarter, context-aware voice commands and personalized automation. - Predictive Automation (Q1 2025):
Enhanced scheduling capabilities powered by advanced AI. - Enhanced Security (Q2 2024):
Introduction of multi-factor authentication, advanced monitoring, and rigorous encryption methods. - Performance Optimizations (Q3 2024):
Reducing latency further, optimizing caching, and improving load balancing.
For more details, see our Roadmap.
Community & Support 🌍
Your feedback and collaboration are vital! Join our community:
- GitHub Issues: Report bugs or request features via our Issues Page.
- Discord & Slack: Connect with fellow users and developers in real-time.
- Documentation: Find comprehensive guides on the MCP Documentation Website.
License 📜
This project is licensed under the MIT License. See LICENSE for full details.
🔋 Batteries included.
MCP Client Integration
This MCP server can be integrated with various clients that support the Model Context Protocol. Below are instructions for different client integrations:
Cursor Integration
The server can be integrated with Cursor by adding the configuration to .cursor/config/config.json:
{
"mcpServers": {
"homeassistant-mcp": {
"command": "bun",
"args": ["run", "start"],
"cwd": "${workspaceRoot}",
"env": {
"NODE_ENV": "development"
}
}
}
}
Claude Desktop Integration
For Claude Desktop, add the following to your Claude configuration file:
{
"mcpServers": {
"homeassistant-mcp": {
"command": "bun",
"args": ["run", "start", "--port", "8080"],
"env": {
"NODE_ENV": "production"
}
}
}
}
Cline Integration
For Cline-based clients, add the following configuration:
{
"mcpServers": {
"homeassistant-mcp": {
"command": "bun",
"args": [
"run",
"start",
"--enable-cline",
"--config",
"${configDir}/.env"
],
"env": {
"NODE_ENV": "production",
"CLINE_MODE": "true"
}
}
}
}
Command Line Usage
Windows
A CMD script is provided in the scripts directory. To use it:
- Navigate to the
scriptsdirectory - Run
start_mcp.cmd
The script will start the MCP server with default configuration.