250 lines
5.2 KiB
Markdown
250 lines
5.2 KiB
Markdown
# Quick Start Guide
|
|
|
|
Get your Home Assistant MCP Server running in 5 minutes!
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 18+ installed
|
|
- Running Home Assistant instance
|
|
- Home Assistant long-lived access token
|
|
|
|
## Getting Your Access Token
|
|
|
|
1. Open Home Assistant in your browser
|
|
2. Click your profile picture (bottom left)
|
|
3. Scroll down to "Long-Lived Access Tokens"
|
|
4. Click "Create Token"
|
|
5. Give it a name (e.g., "MCP Server")
|
|
6. Copy the token immediately (you won't see it again!)
|
|
|
|
## Installation
|
|
|
|
### Option 1: Automated Setup (Recommended)
|
|
|
|
```bash
|
|
cd /Users/felix/Nextcloud/AI/projects/ha-mcp-server
|
|
./setup.sh
|
|
```
|
|
|
|
The script will:
|
|
- Check Node.js version
|
|
- Install dependencies
|
|
- Create and configure .env file
|
|
- Build the TypeScript code
|
|
- Test the connection to Home Assistant
|
|
|
|
### Option 2: Manual Setup
|
|
|
|
```bash
|
|
# 1. Install dependencies
|
|
npm install
|
|
|
|
# 2. Create .env file
|
|
cp .env.example .env
|
|
|
|
# 3. Edit .env with your details
|
|
nano .env
|
|
# Set HA_BASE_URL and HA_ACCESS_TOKEN
|
|
|
|
# 4. Build the project
|
|
npm run build
|
|
|
|
# 5. Test it works
|
|
npm start
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Edit `/Users/felix/Nextcloud/AI/projects/ha-mcp-server/.env`:
|
|
|
|
```bash
|
|
# Your Home Assistant URL (with port)
|
|
HA_BASE_URL=http://homeassistant.local:8123
|
|
|
|
# Your long-lived access token
|
|
HA_ACCESS_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGc...
|
|
```
|
|
|
|
**Important:**
|
|
- Include the port number (usually :8123)
|
|
- Use `http://` or `https://` prefix
|
|
- Use your local network address if using `homeassistant.local` doesn't work
|
|
- Example: `http://192.168.1.100:8123`
|
|
|
|
## Testing the Server
|
|
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
You should see:
|
|
```
|
|
Successfully connected to Home Assistant
|
|
Home Assistant MCP Server running on stdio
|
|
```
|
|
|
|
Press `Ctrl+C` to stop.
|
|
|
|
## Using with Claude Desktop
|
|
|
|
1. Find your Claude config file:
|
|
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
|
|
2. Add this configuration:
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"home-assistant": {
|
|
"command": "node",
|
|
"args": ["/Users/felix/Nextcloud/AI/projects/ha-mcp-server/build/index.js"],
|
|
"env": {
|
|
"HA_BASE_URL": "http://homeassistant.local:8123",
|
|
"HA_ACCESS_TOKEN": "your_token_here"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
3. Replace:
|
|
- Path to match your installation location
|
|
- `HA_BASE_URL` with your Home Assistant URL
|
|
- `HA_ACCESS_TOKEN` with your actual token
|
|
|
|
4. Restart Claude Desktop
|
|
|
|
5. Look for the 🔌 icon in Claude to see connected MCP servers
|
|
|
|
## First Commands to Try
|
|
|
|
Once connected, try these with Claude:
|
|
|
|
### Check Status
|
|
```
|
|
What entities do you have access to?
|
|
```
|
|
|
|
### Control Lights
|
|
```
|
|
Turn on the living room lights
|
|
```
|
|
|
|
### Check Temperature
|
|
```
|
|
What's the temperature in the bedroom?
|
|
```
|
|
|
|
### Complex Query
|
|
```
|
|
How many lights are currently on?
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### "Cannot connect to Home Assistant"
|
|
|
|
**Check:**
|
|
- Is Home Assistant running?
|
|
- Can you access it in a browser?
|
|
- Is the URL in .env correct?
|
|
- Does the URL include the port number?
|
|
|
|
**Try:**
|
|
```bash
|
|
# Test with curl
|
|
curl -H "Authorization: Bearer YOUR_TOKEN" http://homeassistant.local:8123/api/
|
|
```
|
|
|
|
### "Invalid access token"
|
|
|
|
**Check:**
|
|
- Token is copied correctly (no spaces)
|
|
- Token hasn't been revoked in Home Assistant
|
|
- Token is from the correct Home Assistant instance
|
|
|
|
**Fix:**
|
|
- Create a new token in Home Assistant
|
|
- Update .env with the new token
|
|
- Rebuild: `npm run build`
|
|
|
|
### "Command not found" in Claude
|
|
|
|
**Check:**
|
|
- Path in claude_desktop_config.json is correct
|
|
- Build folder exists: `/Users/felix/Nextcloud/AI/projects/ha-mcp-server/build/`
|
|
- Run `npm run build` if build folder is missing
|
|
|
|
### Claude doesn't show MCP connection
|
|
|
|
**Check:**
|
|
- claude_desktop_config.json syntax is valid JSON
|
|
- No trailing commas in JSON
|
|
- Restart Claude Desktop after config changes
|
|
- Check Claude Desktop logs
|
|
|
|
**View logs:**
|
|
- macOS: `~/Library/Logs/Claude/`
|
|
- Windows: `%APPDATA%\Claude\logs\`
|
|
|
|
## Common Issues
|
|
|
|
### Port Already in Use
|
|
The server uses stdio (not a network port), so this shouldn't happen.
|
|
|
|
### Permission Denied
|
|
```bash
|
|
chmod +x setup.sh
|
|
```
|
|
|
|
### TypeScript Errors
|
|
```bash
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
### Home Assistant SSL Certificate Issues
|
|
If using HTTPS with self-signed certificate:
|
|
```bash
|
|
# Add to .env
|
|
NODE_TLS_REJECT_UNAUTHORIZED=0
|
|
```
|
|
⚠️ Only use this in development/private networks!
|
|
|
|
## Verification Checklist
|
|
|
|
✅ Node.js 18+ installed
|
|
✅ Dependencies installed (`npm install`)
|
|
✅ .env file configured
|
|
✅ Project built (`npm run build`)
|
|
✅ Connection test passes (`npm start`)
|
|
✅ Claude config updated
|
|
✅ Claude Desktop restarted
|
|
|
|
## Getting Help
|
|
|
|
1. Check the logs when running `npm start`
|
|
2. Read README.md for detailed documentation
|
|
3. Review EXAMPLES.md for usage patterns
|
|
4. Check Home Assistant logs for API errors
|
|
|
|
## Next Steps
|
|
|
|
Once everything is working:
|
|
|
|
1. **Explore capabilities**: Read EXAMPLES.md
|
|
2. **Understand architecture**: Read ARCHITECTURE.md
|
|
3. **Customize**: Modify src/index.ts to add features
|
|
4. **Secure**: Use HTTPS and strong tokens in production
|
|
|
|
## Security Reminders
|
|
|
|
- Never commit .env file
|
|
- Never share your access token
|
|
- Use HTTPS if exposing HA to internet
|
|
- Rotate tokens periodically
|
|
- Use separate tokens for different applications
|
|
|
|
Enjoy controlling your smart home with natural language! 🏠🤖
|