Nara Home MCP
Inspiration
I wanted ChatGPT to interact with my Home Assistant installation, but I didn't want to expose the entire Home Assistant API to an LLM.
The idea behind Nara Home MCP is simple: instead of giving an AI unrestricted access to a smart home, expose only a small, explicit and auditable set of tools.
This project explores how MCP can be used as a safe interface between large language models and the physical world.
What it does
Nara Home MCP allows ChatGPT to monitor and control a real Home Assistant installation.
Instead of exposing every Home Assistant service, it provides carefully designed tools for common tasks such as:
- Reading environmental sensors
- Monitoring infrastructure
- Querying system health
- Controlling selected lights
- Executing only explicitly approved actions
Every action is validated before reaching Home Assistant.
How I built it
The server is written in Python and communicates with Home Assistant through its REST API.
The architecture is intentionally simple:
- MCP Streamable HTTP server
- Explicit tool definitions
- Entity allowlists
- Security validation layer
- Async Home Assistant client
- Configuration through environment variables
The goal was to minimize the exposed surface while keeping the system practical for everyday use.
Challenges
The biggest challenge was not connecting ChatGPT to Home Assistant.
The difficult part was deciding what should not be accessible.
Designing a secure interface required reducing the available actions, validating every request and avoiding unrestricted API access.
The project also required separating the public repository from the production deployment so sensitive configuration and infrastructure remained private.
Use of Codex
Codex played an important role during development.
I used it to implement features, refactor modules, generate tests, review architecture, improve documentation and prepare the public open-source repository.
Every design decision, testing cycle and deployment was performed on a real Home Assistant installation.
What I learned
Building an MCP server is not only about exposing tools.
It is about designing trust boundaries between an AI model and real devices.
This project reinforced the importance of explicit capabilities, small interfaces and secure defaults when connecting LLMs to systems that interact with the physical world.
Log in or sign up for Devpost to join the conversation.