- Move SSE API documentation to a more structured location under `api/` - Update references to SSE API in getting started and navigation - Remove standalone SSE API markdown file - Add FAQ section to troubleshooting documentation
374 lines
7.1 KiB
Markdown
374 lines
7.1 KiB
Markdown
---
|
|
layout: default
|
|
title: Troubleshooting
|
|
nav_order: 6
|
|
---
|
|
|
|
# Troubleshooting Guide 🔧
|
|
|
|
This guide helps you diagnose and resolve common issues with MCP Server.
|
|
|
|
## Quick Diagnostics
|
|
|
|
### Health Check
|
|
|
|
First, verify the server's health:
|
|
|
|
```bash
|
|
curl http://localhost:3000/health
|
|
```
|
|
|
|
Expected response:
|
|
```json
|
|
{
|
|
"status": "healthy",
|
|
"version": "1.0.0",
|
|
"uptime": 3600,
|
|
"homeAssistant": {
|
|
"connected": true,
|
|
"version": "2024.1.0"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Common Issues
|
|
|
|
### 1. Connection Issues
|
|
|
|
#### Cannot Connect to MCP Server
|
|
|
|
**Symptoms:**
|
|
- Server not responding
|
|
- Connection refused errors
|
|
- Timeout errors
|
|
|
|
**Solutions:**
|
|
|
|
1. Check if the server is running:
|
|
```bash
|
|
# For Docker installation
|
|
docker compose ps
|
|
|
|
# For manual installation
|
|
ps aux | grep mcp
|
|
```
|
|
|
|
2. Verify port availability:
|
|
```bash
|
|
# Check if port is in use
|
|
netstat -tuln | grep 3000
|
|
```
|
|
|
|
3. Check logs:
|
|
```bash
|
|
# Docker logs
|
|
docker compose logs mcp
|
|
|
|
# Manual installation logs
|
|
bun run dev
|
|
```
|
|
|
|
#### Home Assistant Connection Failed
|
|
|
|
**Symptoms:**
|
|
- "Connection Error" in health check
|
|
- Cannot control devices
|
|
- State updates not working
|
|
|
|
**Solutions:**
|
|
|
|
1. Verify Home Assistant URL and token in `.env`:
|
|
```env
|
|
HA_URL=http://homeassistant:8123
|
|
HA_TOKEN=your_long_lived_access_token
|
|
```
|
|
|
|
2. Test Home Assistant connection:
|
|
```bash
|
|
curl -H "Authorization: Bearer YOUR_HA_TOKEN" \
|
|
http://your-homeassistant:8123/api/
|
|
```
|
|
|
|
3. Check network connectivity:
|
|
```bash
|
|
# For Docker setup
|
|
docker compose exec mcp ping homeassistant
|
|
```
|
|
|
|
### 2. Authentication Issues
|
|
|
|
#### Invalid Token
|
|
|
|
**Symptoms:**
|
|
- 401 Unauthorized responses
|
|
- "Invalid token" errors
|
|
|
|
**Solutions:**
|
|
|
|
1. Generate a new token:
|
|
```bash
|
|
curl -X POST http://localhost:3000/auth/token \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"username": "your_username", "password": "your_password"}'
|
|
```
|
|
|
|
2. Verify token format:
|
|
```javascript
|
|
// Token should be in format:
|
|
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
|
|
```
|
|
|
|
#### Rate Limiting
|
|
|
|
**Symptoms:**
|
|
- 429 Too Many Requests
|
|
- "Rate limit exceeded" errors
|
|
|
|
**Solutions:**
|
|
|
|
1. Check current rate limit status:
|
|
```bash
|
|
curl -I http://localhost:3000/api/state
|
|
```
|
|
|
|
2. Adjust rate limits in configuration:
|
|
```yaml
|
|
security:
|
|
rateLimit: 100 # Increase if needed
|
|
rateLimitWindow: 60000 # Window in milliseconds
|
|
```
|
|
|
|
### 3. Real-time Updates Issues
|
|
|
|
#### SSE Connection Drops
|
|
|
|
**Symptoms:**
|
|
- Frequent disconnections
|
|
- Missing state updates
|
|
- EventSource errors
|
|
|
|
**Solutions:**
|
|
|
|
1. Implement proper reconnection logic:
|
|
```javascript
|
|
class SSEClient {
|
|
constructor() {
|
|
this.connect();
|
|
}
|
|
|
|
connect() {
|
|
this.eventSource = new EventSource('/subscribe_events');
|
|
this.eventSource.onerror = this.handleError.bind(this);
|
|
}
|
|
|
|
handleError(error) {
|
|
console.error('SSE Error:', error);
|
|
this.eventSource.close();
|
|
setTimeout(() => this.connect(), 1000);
|
|
}
|
|
}
|
|
```
|
|
|
|
2. Check network stability:
|
|
```bash
|
|
# Monitor connection stability
|
|
ping -c 100 localhost
|
|
```
|
|
|
|
### 4. Performance Issues
|
|
|
|
#### High Latency
|
|
|
|
**Symptoms:**
|
|
- Slow response times
|
|
- Command execution delays
|
|
- UI lag
|
|
|
|
**Solutions:**
|
|
|
|
1. Enable Redis caching:
|
|
```env
|
|
REDIS_ENABLED=true
|
|
REDIS_URL=redis://localhost:6379
|
|
```
|
|
|
|
2. Monitor system resources:
|
|
```bash
|
|
# Check CPU and memory usage
|
|
docker stats
|
|
|
|
# Or for manual installation
|
|
top -p $(pgrep -f mcp)
|
|
```
|
|
|
|
3. Optimize database queries and caching:
|
|
```typescript
|
|
// Use batch operations
|
|
const results = await Promise.all([
|
|
cache.get('key1'),
|
|
cache.get('key2')
|
|
]);
|
|
```
|
|
|
|
### 5. Device Control Issues
|
|
|
|
#### Commands Not Executing
|
|
|
|
**Symptoms:**
|
|
- Commands appear successful but no device response
|
|
- Inconsistent device states
|
|
- Error messages from Home Assistant
|
|
|
|
**Solutions:**
|
|
|
|
1. Verify device availability:
|
|
```bash
|
|
curl http://localhost:3000/api/state/light.living_room
|
|
```
|
|
|
|
2. Check command syntax:
|
|
```bash
|
|
# Test basic command
|
|
curl -X POST http://localhost:3000/api/command \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"command": "Turn on living room lights"}'
|
|
```
|
|
|
|
3. Review Home Assistant logs:
|
|
```bash
|
|
docker compose exec homeassistant journalctl -f
|
|
```
|
|
|
|
## Debugging Tools
|
|
|
|
### Log Analysis
|
|
|
|
Enable debug logging:
|
|
|
|
```env
|
|
LOG_LEVEL=debug
|
|
DEBUG=mcp:*
|
|
```
|
|
|
|
### Network Debugging
|
|
|
|
Monitor network traffic:
|
|
|
|
```bash
|
|
# TCP dump for API traffic
|
|
tcpdump -i any port 3000 -w debug.pcap
|
|
```
|
|
|
|
### Performance Profiling
|
|
|
|
Enable performance monitoring:
|
|
|
|
```env
|
|
ENABLE_METRICS=true
|
|
METRICS_PORT=9090
|
|
```
|
|
|
|
## Getting Help
|
|
|
|
If you're still experiencing issues:
|
|
|
|
1. Check the [GitHub Issues](https://github.com/jango-blockchained/advanced-homeassistant-mcp/issues)
|
|
2. Search [Discussions](https://github.com/jango-blockchained/advanced-homeassistant-mcp/discussions)
|
|
3. Create a new issue with:
|
|
- Detailed description
|
|
- Logs
|
|
- Configuration (sanitized)
|
|
- Steps to reproduce
|
|
|
|
## Maintenance
|
|
|
|
### Regular Health Checks
|
|
|
|
Run periodic health checks:
|
|
|
|
```bash
|
|
# Create a cron job
|
|
*/5 * * * * curl -f http://localhost:3000/health || notify-admin
|
|
```
|
|
|
|
### Log Rotation
|
|
|
|
Configure log rotation:
|
|
|
|
```yaml
|
|
logging:
|
|
maxSize: "100m"
|
|
maxFiles: "7d"
|
|
compress: true
|
|
```
|
|
|
|
### Backup Configuration
|
|
|
|
Regularly backup your configuration:
|
|
|
|
```bash
|
|
# Backup script
|
|
tar -czf mcp-backup-$(date +%Y%m%d).tar.gz \
|
|
.env \
|
|
config/ \
|
|
data/
|
|
```
|
|
|
|
## FAQ
|
|
|
|
### General Questions
|
|
|
|
#### Q: What is MCP Server?
|
|
A: MCP Server is a bridge between Home Assistant and Language Learning Models, enabling natural language control and automation of your smart home devices.
|
|
|
|
#### Q: What are the system requirements?
|
|
A: MCP Server requires:
|
|
- Node.js 16 or higher
|
|
- Home Assistant instance
|
|
- 1GB RAM minimum
|
|
- 1GB disk space
|
|
|
|
#### Q: How do I update MCP Server?
|
|
A: For Docker installation:
|
|
```bash
|
|
docker compose pull
|
|
docker compose up -d
|
|
```
|
|
For manual installation:
|
|
```bash
|
|
git pull
|
|
bun install
|
|
bun run build
|
|
```
|
|
|
|
### Integration Questions
|
|
|
|
#### Q: Can I use MCP Server with any Home Assistant instance?
|
|
A: Yes, MCP Server works with any Home Assistant instance that has the REST API enabled and a valid long-lived access token.
|
|
|
|
#### Q: Does MCP Server support all Home Assistant integrations?
|
|
A: MCP Server supports all Home Assistant devices and services that are accessible via the REST API.
|
|
|
|
### Security Questions
|
|
|
|
#### Q: Is my Home Assistant token secure?
|
|
A: Yes, your Home Assistant token is stored securely and only used for authenticated communication between MCP Server and your Home Assistant instance.
|
|
|
|
#### Q: Can I use MCP Server remotely?
|
|
A: Yes, but we recommend using a secure connection (HTTPS) and proper authentication when exposing MCP Server to the internet.
|
|
|
|
### Troubleshooting Questions
|
|
|
|
#### Q: Why are my device states not updating?
|
|
A: Check:
|
|
1. Home Assistant connection
|
|
2. WebSocket connection status
|
|
3. Device availability in Home Assistant
|
|
4. Network connectivity
|
|
|
|
#### Q: Why are my commands not working?
|
|
A: Verify:
|
|
1. Command syntax
|
|
2. Device availability
|
|
3. User permissions
|
|
4. Home Assistant API access |