Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0ff3d5e5a | ||
|
|
81d6dea7da | ||
|
|
1328bd1306 | ||
|
|
6fa88be433 | ||
|
|
2892f24030 | ||
|
|
1e3442db14 | ||
|
|
f74154d96f | ||
|
|
36d83e0a0e | ||
|
|
33defac76c | ||
|
|
4306a6866f | ||
|
|
039f6890a7 | ||
|
|
4fff318ea9 |
34
.github/workflows/deploy-docs.yml
vendored
34
.github/workflows/deploy-docs.yml
vendored
@@ -1,38 +1,34 @@
|
||||
name: Deploy MkDocs
|
||||
name: Deploy Documentation
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main # or master, depending on your default branch
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
- main
|
||||
paths:
|
||||
- 'docs/**'
|
||||
- 'mkdocs.yml'
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
cache: 'pip'
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install mkdocs-material
|
||||
pip install mkdocs-git-revision-date-localized-plugin
|
||||
pip install mkdocstrings[python]
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r docs/requirements.txt
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
- name: Build docs
|
||||
run: mkdocs build
|
||||
- name: Deploy to GitHub Pages
|
||||
- name: Build and Deploy
|
||||
run: |
|
||||
git checkout --orphan gh-pages
|
||||
git rm -rf .
|
||||
mv site/* .
|
||||
rm -rf site
|
||||
git add .
|
||||
git commit -m "docs: Update documentation"
|
||||
git push origin gh-pages --force
|
||||
mkdocs build --strict
|
||||
mkdocs gh-deploy --force --clean
|
||||
32
.github/workflows/docs-deploy.yml
vendored
32
.github/workflows/docs-deploy.yml
vendored
@@ -1,32 +0,0 @@
|
||||
name: Deploy Documentation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'docs/**'
|
||||
- 'mkdocs.yml'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
deploy-docs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install mkdocs-material
|
||||
pip install mkdocs
|
||||
|
||||
- name: Deploy documentation
|
||||
run: mkdocs gh-deploy --force
|
||||
11
.gitignore
vendored
11
.gitignore
vendored
@@ -31,7 +31,7 @@ wheels/
|
||||
venv/
|
||||
ENV/
|
||||
env/
|
||||
|
||||
.venv/
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
@@ -90,3 +90,12 @@ __pycache__/
|
||||
*$py.class
|
||||
|
||||
models/
|
||||
|
||||
*.code-workspace
|
||||
*.ttf
|
||||
*.otf
|
||||
*.woff
|
||||
*.woff2
|
||||
*.eot
|
||||
*.svg
|
||||
*.png
|
||||
@@ -232,3 +232,11 @@ The current API version is v1. Include the version in the URL:
|
||||
- [Core Functions](core.md) - Detailed endpoint documentation
|
||||
- [Architecture Overview](../architecture.md) - System design details
|
||||
- [Troubleshooting](../troubleshooting.md) - Common issues and solutions
|
||||
|
||||
# API Reference
|
||||
|
||||
The Advanced Home Assistant MCP provides several APIs for integration and automation:
|
||||
|
||||
- [Core API](core.md) - Primary interface for system control
|
||||
- [SSE API](sse.md) - Server-Sent Events for real-time updates
|
||||
- [Core Functions](core.md) - Essential system functions
|
||||
30
docs/config/index.md
Normal file
30
docs/config/index.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Configuration
|
||||
|
||||
This section covers the configuration options available in the Home Assistant MCP Server.
|
||||
|
||||
## Overview
|
||||
|
||||
The MCP Server can be configured through various configuration files and environment variables. This section will guide you through the available options and their usage.
|
||||
|
||||
## Configuration Files
|
||||
|
||||
The main configuration files are:
|
||||
|
||||
1. `.env` - Environment variables
|
||||
2. `config.yaml` - Main configuration file
|
||||
3. `devices.yaml` - Device-specific configurations
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Key environment variables that can be set:
|
||||
|
||||
- `MCP_HOST` - Host address (default: 0.0.0.0)
|
||||
- `MCP_PORT` - Port number (default: 8123)
|
||||
- `MCP_LOG_LEVEL` - Logging level (default: INFO)
|
||||
- `MCP_CONFIG_DIR` - Configuration directory path
|
||||
|
||||
## Next Steps
|
||||
|
||||
- See [System Configuration](../configuration.md) for detailed configuration options
|
||||
- Check [Environment Setup](../getting-started/configuration.md) for initial setup
|
||||
- Review [Security](../security.md) for security-related configurations
|
||||
129
docs/configuration.md
Normal file
129
docs/configuration.md
Normal file
@@ -0,0 +1,129 @@
|
||||
# System Configuration
|
||||
|
||||
This document provides detailed information about configuring the Home Assistant MCP Server.
|
||||
|
||||
## Configuration File Structure
|
||||
|
||||
The MCP Server uses environment variables for configuration, with support for different environments (development, test, production):
|
||||
|
||||
```bash
|
||||
# .env, .env.development, or .env.test
|
||||
PORT=4000
|
||||
NODE_ENV=development
|
||||
HASS_HOST=http://192.168.178.63:8123
|
||||
HASS_TOKEN=your_token_here
|
||||
JWT_SECRET=your_secret_key
|
||||
```
|
||||
|
||||
## Server Settings
|
||||
|
||||
### Basic Server Configuration
|
||||
- `PORT`: Server port number (default: 4000)
|
||||
- `NODE_ENV`: Environment mode (development, production, test)
|
||||
- `HASS_HOST`: Home Assistant instance URL
|
||||
- `HASS_TOKEN`: Home Assistant long-lived access token
|
||||
|
||||
### Security Settings
|
||||
- `JWT_SECRET`: Secret key for JWT token generation
|
||||
- `RATE_LIMIT`: Rate limiting configuration
|
||||
- `windowMs`: Time window in milliseconds (default: 15 minutes)
|
||||
- `max`: Maximum requests per window (default: 100)
|
||||
|
||||
### WebSocket Settings
|
||||
- `SSE`: Server-Sent Events configuration
|
||||
- `MAX_CLIENTS`: Maximum concurrent clients (default: 1000)
|
||||
- `PING_INTERVAL`: Keep-alive ping interval in ms (default: 30000)
|
||||
|
||||
## Environment Variables
|
||||
|
||||
All configuration is managed through environment variables:
|
||||
|
||||
```bash
|
||||
# Server
|
||||
PORT=4000
|
||||
NODE_ENV=development
|
||||
|
||||
# Home Assistant
|
||||
HASS_HOST=http://your-hass-instance:8123
|
||||
HASS_TOKEN=your_token_here
|
||||
|
||||
# Security
|
||||
JWT_SECRET=your-secret-key
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=info
|
||||
LOG_DIR=logs
|
||||
LOG_MAX_SIZE=20m
|
||||
LOG_MAX_DAYS=14d
|
||||
LOG_COMPRESS=true
|
||||
LOG_REQUESTS=true
|
||||
```
|
||||
|
||||
## Advanced Configuration
|
||||
|
||||
### Security Rate Limiting
|
||||
Rate limiting is enabled by default to protect against brute force attacks:
|
||||
|
||||
```typescript
|
||||
RATE_LIMIT: {
|
||||
windowMs: 15 * 60 * 1000, // 15 minutes
|
||||
max: 100 // limit each IP to 100 requests per window
|
||||
}
|
||||
```
|
||||
|
||||
### Logging
|
||||
The server uses Bun's built-in logging capabilities with additional configuration:
|
||||
|
||||
```typescript
|
||||
LOGGING: {
|
||||
LEVEL: "info", // debug, info, warn, error
|
||||
DIR: "logs",
|
||||
MAX_SIZE: "20m",
|
||||
MAX_DAYS: "14d",
|
||||
COMPRESS: true,
|
||||
TIMESTAMP_FORMAT: "YYYY-MM-DD HH:mm:ss:ms",
|
||||
LOG_REQUESTS: true
|
||||
}
|
||||
```
|
||||
|
||||
For production deployments, we recommend using system tools like `logrotate` for log management.
|
||||
|
||||
Example logrotate configuration (`/etc/logrotate.d/mcp-server`):
|
||||
```
|
||||
/var/log/mcp-server.log {
|
||||
daily
|
||||
rotate 7
|
||||
compress
|
||||
delaycompress
|
||||
missingok
|
||||
notifempty
|
||||
create 644 mcp mcp
|
||||
}
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. Always use environment variables for sensitive information
|
||||
2. Keep .env files secure and never commit them to version control
|
||||
3. Use different environment files for development, test, and production
|
||||
4. Enable SSL/TLS in production (preferably via reverse proxy)
|
||||
5. Monitor log files for issues
|
||||
6. Regularly rotate logs in production
|
||||
|
||||
## Validation
|
||||
|
||||
The server validates configuration on startup using Zod schemas:
|
||||
- Required fields are checked (e.g., HASS_TOKEN)
|
||||
- Value types are verified
|
||||
- Enums are validated (e.g., LOG_LEVEL)
|
||||
- Default values are applied when not specified
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
Common configuration issues:
|
||||
1. Missing required environment variables
|
||||
2. Invalid environment variable values
|
||||
3. Permission issues with log directories
|
||||
4. Rate limiting too restrictive
|
||||
|
||||
See the [Troubleshooting Guide](troubleshooting.md) for solutions.
|
||||
141
docs/deployment.md
Normal file
141
docs/deployment.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# Deployment Guide
|
||||
|
||||
This documentation is automatically deployed to GitHub Pages using GitHub Actions. Here's how it works and how to manage deployments.
|
||||
|
||||
## Automatic Deployment
|
||||
|
||||
The documentation is automatically deployed when changes are pushed to the `main` or `master` branch. The deployment process:
|
||||
|
||||
1. Triggers on push to main/master
|
||||
2. Sets up Python environment
|
||||
3. Installs required dependencies
|
||||
4. Builds the documentation
|
||||
5. Deploys to the `gh-pages` branch
|
||||
|
||||
### GitHub Actions Workflow
|
||||
|
||||
The deployment is handled by the workflow in `.github/workflows/deploy-docs.yml`. This is the single source of truth for documentation deployment:
|
||||
|
||||
```yaml
|
||||
name: Deploy MkDocs
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
workflow_dispatch: # Allow manual trigger
|
||||
```
|
||||
|
||||
## Manual Deployment
|
||||
|
||||
If needed, you can deploy manually using:
|
||||
|
||||
```bash
|
||||
# Create a virtual environment
|
||||
python -m venv venv
|
||||
|
||||
# Activate the virtual environment
|
||||
source venv/bin/activate
|
||||
|
||||
# Install dependencies
|
||||
pip install -r docs/requirements.txt
|
||||
|
||||
# Build the documentation
|
||||
mkdocs build
|
||||
|
||||
# Deploy to GitHub Pages
|
||||
mkdocs gh-deploy --force
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
### 1. Documentation Updates
|
||||
- Test locally before pushing: `mkdocs serve`
|
||||
- Verify all links work
|
||||
- Ensure images are optimized
|
||||
- Check mobile responsiveness
|
||||
|
||||
### 2. Version Control
|
||||
- Keep documentation in sync with code versions
|
||||
- Use meaningful commit messages
|
||||
- Tag important documentation versions
|
||||
|
||||
### 3. Content Guidelines
|
||||
- Use consistent formatting
|
||||
- Keep navigation structure logical
|
||||
- Include examples where appropriate
|
||||
- Maintain up-to-date screenshots
|
||||
|
||||
### 4. Maintenance
|
||||
- Regularly review and update content
|
||||
- Check for broken links
|
||||
- Update dependencies
|
||||
- Monitor GitHub Actions logs
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Failed Deployments**
|
||||
- Check GitHub Actions logs
|
||||
- Verify dependencies are up to date
|
||||
- Ensure all required files exist
|
||||
|
||||
2. **Broken Links**
|
||||
- Run `mkdocs build --strict`
|
||||
- Use relative paths in markdown
|
||||
- Check case sensitivity
|
||||
|
||||
3. **Style Issues**
|
||||
- Verify theme configuration
|
||||
- Check CSS customizations
|
||||
- Test on multiple browsers
|
||||
|
||||
## Configuration Files
|
||||
|
||||
### requirements.txt
|
||||
|
||||
Create a requirements file for documentation dependencies:
|
||||
|
||||
```txt
|
||||
mkdocs-material
|
||||
mkdocs-minify-plugin
|
||||
mkdocs-git-revision-date-plugin
|
||||
mkdocs-mkdocstrings
|
||||
mkdocs-social-plugin
|
||||
mkdocs-redirects
|
||||
```
|
||||
|
||||
## Monitoring
|
||||
|
||||
- Check [GitHub Pages settings](https://github.com/jango-blockchained/advanced-homeassistant-mcp/settings/pages)
|
||||
- Monitor build status in Actions tab
|
||||
- Verify site accessibility
|
||||
|
||||
## Workflow Features
|
||||
|
||||
### Caching
|
||||
The workflow implements caching for Python dependencies to speed up deployments:
|
||||
- Pip cache for Python packages
|
||||
- MkDocs dependencies cache
|
||||
|
||||
### Deployment Checks
|
||||
Several checks are performed during deployment:
|
||||
1. Link validation with `mkdocs build --strict`
|
||||
2. Build verification
|
||||
3. Post-deployment site accessibility check
|
||||
|
||||
### Manual Triggers
|
||||
You can manually trigger deployments using the "workflow_dispatch" event in GitHub Actions.
|
||||
|
||||
## Cleanup
|
||||
|
||||
To clean up duplicate workflow files, run:
|
||||
|
||||
```bash
|
||||
# Make the script executable
|
||||
chmod +x scripts/cleanup-workflows.sh
|
||||
|
||||
# Run the cleanup script
|
||||
./scripts/cleanup-workflows.sh
|
||||
```
|
||||
@@ -1,190 +0,0 @@
|
||||
# Development Guide
|
||||
|
||||
This guide provides information for developers who want to contribute to or extend the Home Assistant MCP.
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
homeassistant-mcp/
|
||||
├── src/
|
||||
│ ├── __tests__/ # Test files
|
||||
│ ├── __mocks__/ # Mock files
|
||||
│ ├── api/ # API endpoints and route handlers
|
||||
│ ├── config/ # Configuration management
|
||||
│ ├── hass/ # Home Assistant integration
|
||||
│ ├── interfaces/ # TypeScript interfaces
|
||||
│ ├── mcp/ # MCP core functionality
|
||||
│ ├── middleware/ # Express middleware
|
||||
│ ├── routes/ # Route definitions
|
||||
│ ├── security/ # Security utilities
|
||||
│ ├── sse/ # Server-Sent Events handling
|
||||
│ ├── tools/ # Tool implementations
|
||||
│ ├── types/ # TypeScript type definitions
|
||||
│ └── utils/ # Utility functions
|
||||
├── __tests__/ # Test files
|
||||
├── docs/ # Documentation
|
||||
├── dist/ # Compiled JavaScript
|
||||
└── scripts/ # Build and utility scripts
|
||||
```
|
||||
|
||||
## Development Setup
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
2. Set up development environment:
|
||||
```bash
|
||||
cp .env.example .env.development
|
||||
```
|
||||
|
||||
3. Start development server:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Code Style
|
||||
|
||||
We follow these coding standards:
|
||||
|
||||
1. TypeScript best practices
|
||||
- Use strict type checking
|
||||
- Avoid `any` types
|
||||
- Document complex types
|
||||
|
||||
2. ESLint rules
|
||||
- Run `npm run lint` to check
|
||||
- Run `npm run lint:fix` to auto-fix
|
||||
|
||||
3. Code formatting
|
||||
- Use Prettier
|
||||
- Run `npm run format` to format code
|
||||
|
||||
## Testing
|
||||
|
||||
1. Unit tests:
|
||||
```bash
|
||||
npm run test
|
||||
```
|
||||
|
||||
2. Integration tests:
|
||||
```bash
|
||||
npm run test:integration
|
||||
```
|
||||
|
||||
3. Coverage report:
|
||||
```bash
|
||||
npm run test:coverage
|
||||
```
|
||||
|
||||
## Creating New Tools
|
||||
|
||||
1. Create a new file in `src/tools/`:
|
||||
```typescript
|
||||
import { z } from 'zod';
|
||||
import { Tool } from '../types';
|
||||
|
||||
export const myTool: Tool = {
|
||||
name: 'my_tool',
|
||||
description: 'Description of my tool',
|
||||
parameters: z.object({
|
||||
// Define parameters
|
||||
}),
|
||||
execute: async (params) => {
|
||||
// Implement tool logic
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
2. Add to `src/tools/index.ts`
|
||||
3. Create tests in `__tests__/tools/`
|
||||
4. Add documentation in `docs/tools/`
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Write/update tests
|
||||
5. Update documentation
|
||||
6. Submit a pull request
|
||||
|
||||
### Pull Request Process
|
||||
|
||||
1. Ensure all tests pass
|
||||
2. Update documentation
|
||||
3. Update CHANGELOG.md
|
||||
4. Get review from maintainers
|
||||
|
||||
## Building
|
||||
|
||||
1. Development build:
|
||||
```bash
|
||||
npm run build:dev
|
||||
```
|
||||
|
||||
2. Production build:
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
1. Update documentation for changes
|
||||
2. Follow documentation structure
|
||||
3. Include examples
|
||||
4. Update type definitions
|
||||
|
||||
## Debugging
|
||||
|
||||
1. Development debugging:
|
||||
```bash
|
||||
npm run dev:debug
|
||||
```
|
||||
|
||||
2. Test debugging:
|
||||
```bash
|
||||
npm run test:debug
|
||||
```
|
||||
|
||||
3. VSCode launch configurations provided
|
||||
|
||||
## Performance
|
||||
|
||||
1. Follow performance best practices
|
||||
2. Use caching where appropriate
|
||||
3. Implement rate limiting
|
||||
4. Monitor memory usage
|
||||
|
||||
## Security
|
||||
|
||||
1. Follow security best practices
|
||||
2. Validate all inputs
|
||||
3. Use proper authentication
|
||||
4. Handle errors securely
|
||||
|
||||
## Deployment
|
||||
|
||||
1. Build for production:
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
2. Start production server:
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
3. Docker deployment:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
Need development help?
|
||||
1. Check documentation
|
||||
2. Search issues
|
||||
3. Create new issue
|
||||
4. Join discussions
|
||||
197
docs/development/environment.md
Normal file
197
docs/development/environment.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# Development Environment Setup
|
||||
|
||||
This guide will help you set up your development environment for the Home Assistant MCP Server.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
### Required Software
|
||||
- Python 3.10 or higher
|
||||
- pip (Python package manager)
|
||||
- git
|
||||
- Docker (optional, for containerized development)
|
||||
- Node.js 18+ (for frontend development)
|
||||
|
||||
### System Requirements
|
||||
- 4GB RAM minimum
|
||||
- 2 CPU cores minimum
|
||||
- 10GB free disk space
|
||||
|
||||
## Initial Setup
|
||||
|
||||
1. Clone the Repository
|
||||
```bash
|
||||
git clone https://github.com/jango-blockchained/homeassistant-mcp.git
|
||||
cd homeassistant-mcp
|
||||
```
|
||||
|
||||
2. Create Virtual Environment
|
||||
```bash
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate # Linux/macOS
|
||||
# or
|
||||
.venv\Scripts\activate # Windows
|
||||
```
|
||||
|
||||
3. Install Dependencies
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
pip install -r docs/requirements.txt # for documentation
|
||||
```
|
||||
|
||||
## Development Tools
|
||||
|
||||
### Code Editor Setup
|
||||
We recommend using Visual Studio Code with these extensions:
|
||||
- Python
|
||||
- Docker
|
||||
- YAML
|
||||
- ESLint
|
||||
- Prettier
|
||||
|
||||
### VS Code Settings
|
||||
```json
|
||||
{
|
||||
"python.linting.enabled": true,
|
||||
"python.linting.pylintEnabled": true,
|
||||
"python.formatting.provider": "black",
|
||||
"editor.formatOnSave": true
|
||||
}
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
1. Create Local Config
|
||||
```bash
|
||||
cp config.example.yaml config.yaml
|
||||
```
|
||||
|
||||
2. Set Environment Variables
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Edit .env with your settings
|
||||
```
|
||||
|
||||
## Running Tests
|
||||
|
||||
### Unit Tests
|
||||
```bash
|
||||
pytest tests/unit
|
||||
```
|
||||
|
||||
### Integration Tests
|
||||
```bash
|
||||
pytest tests/integration
|
||||
```
|
||||
|
||||
### Coverage Report
|
||||
```bash
|
||||
pytest --cov=src tests/
|
||||
```
|
||||
|
||||
## Docker Development
|
||||
|
||||
### Build Container
|
||||
```bash
|
||||
docker build -t mcp-server-dev -f Dockerfile.dev .
|
||||
```
|
||||
|
||||
### Run Development Container
|
||||
```bash
|
||||
docker run -it --rm \
|
||||
-v $(pwd):/app \
|
||||
-p 8123:8123 \
|
||||
mcp-server-dev
|
||||
```
|
||||
|
||||
## Database Setup
|
||||
|
||||
### Local Development Database
|
||||
```bash
|
||||
docker run -d \
|
||||
-p 5432:5432 \
|
||||
-e POSTGRES_USER=mcp \
|
||||
-e POSTGRES_PASSWORD=development \
|
||||
-e POSTGRES_DB=mcp_dev \
|
||||
postgres:14
|
||||
```
|
||||
|
||||
### Run Migrations
|
||||
```bash
|
||||
alembic upgrade head
|
||||
```
|
||||
|
||||
## Frontend Development
|
||||
|
||||
1. Install Node.js Dependencies
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
```
|
||||
|
||||
2. Start Development Server
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
### Build Documentation
|
||||
```bash
|
||||
mkdocs serve
|
||||
```
|
||||
|
||||
### View Documentation
|
||||
Open http://localhost:8000 in your browser
|
||||
|
||||
## Debugging
|
||||
|
||||
### VS Code Launch Configuration
|
||||
```json
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Python: MCP Server",
|
||||
"type": "python",
|
||||
"request": "launch",
|
||||
"program": "src/main.py",
|
||||
"console": "integratedTerminal"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Git Hooks
|
||||
|
||||
### Install Pre-commit
|
||||
```bash
|
||||
pip install pre-commit
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
### Available Hooks
|
||||
- black (code formatting)
|
||||
- flake8 (linting)
|
||||
- isort (import sorting)
|
||||
- mypy (type checking)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
Common Issues:
|
||||
1. Port already in use
|
||||
- Check for running processes: `lsof -i :8123`
|
||||
- Kill process if needed: `kill -9 PID`
|
||||
|
||||
2. Database connection issues
|
||||
- Verify PostgreSQL is running
|
||||
- Check connection settings in .env
|
||||
|
||||
3. Virtual environment problems
|
||||
- Delete and recreate: `rm -rf .venv && python -m venv .venv`
|
||||
- Reinstall dependencies
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Review the [Architecture Guide](../architecture.md)
|
||||
2. Check [Contributing Guidelines](../contributing.md)
|
||||
3. Start with [Simple Issues](https://github.com/jango-blockchained/homeassistant-mcp/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
|
||||
54
docs/development/index.md
Normal file
54
docs/development/index.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Development Guide
|
||||
|
||||
Welcome to the development guide for the Home Assistant MCP Server. This section provides comprehensive information for developers who want to contribute to or extend the project.
|
||||
|
||||
## Development Overview
|
||||
|
||||
The MCP Server is built with modern development practices in mind, focusing on:
|
||||
|
||||
- Clean, maintainable code
|
||||
- Comprehensive testing
|
||||
- Clear documentation
|
||||
- Modular architecture
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. Set up your development environment
|
||||
2. Fork the repository
|
||||
3. Install dependencies
|
||||
4. Run tests
|
||||
5. Make your changes
|
||||
6. Submit a pull request
|
||||
|
||||
## Development Topics
|
||||
|
||||
- [Architecture](../architecture.md) - System architecture and design
|
||||
- [Contributing](../contributing.md) - Contribution guidelines
|
||||
- [Testing](../testing.md) - Testing framework and guidelines
|
||||
- [Troubleshooting](../troubleshooting.md) - Common issues and solutions
|
||||
- [Deployment](../deployment.md) - Deployment procedures
|
||||
- [Roadmap](../roadmap.md) - Future development plans
|
||||
|
||||
## Best Practices
|
||||
|
||||
- Follow the coding style guide
|
||||
- Write comprehensive tests
|
||||
- Document your changes
|
||||
- Keep commits atomic
|
||||
- Use meaningful commit messages
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. Create a feature branch
|
||||
2. Make your changes
|
||||
3. Run tests
|
||||
4. Update documentation
|
||||
5. Submit a pull request
|
||||
6. Address review comments
|
||||
7. Merge when approved
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Review the [Architecture](../architecture.md)
|
||||
- Check [Contributing Guidelines](../contributing.md)
|
||||
- Set up your [Development Environment](environment.md)
|
||||
@@ -1,30 +0,0 @@
|
||||
# Getting Started
|
||||
|
||||
Begin your journey with the Home Assistant MCP Server by following these steps:
|
||||
|
||||
- **API Documentation:** Read the [API Documentation](api.md) for available endpoints.
|
||||
- **Real-Time Updates:** Learn about [Server-Sent Events](api/sse.md) for live communication.
|
||||
- **Tools:** Explore available [Tools](tools/tools.md) for device control and automation.
|
||||
- **Configuration:** Refer to the [Configuration Guide](getting-started/configuration.md) for setup and advanced settings.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you encounter any issues:
|
||||
1. Verify that your Home Assistant instance is accessible.
|
||||
2. Ensure that all required environment variables are properly set.
|
||||
3. Consult the [Troubleshooting Guide](troubleshooting.md) for additional solutions.
|
||||
|
||||
## Development
|
||||
|
||||
For contributors:
|
||||
1. Fork the repository.
|
||||
2. Create a feature branch.
|
||||
3. Follow the [Development Guide](development/development.md) for contribution guidelines.
|
||||
4. Submit a pull request with your enhancements.
|
||||
|
||||
## Support
|
||||
|
||||
Need help?
|
||||
- Visit our [GitHub Issues](https://github.com/jango-blockchained/homeassistant-mcp/issues).
|
||||
- Review the [Troubleshooting Guide](troubleshooting.md).
|
||||
- Check the [FAQ](troubleshooting.md#faq) for common questions.
|
||||
8
docs/getting-started/index.md
Normal file
8
docs/getting-started/index.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Getting Started
|
||||
|
||||
Welcome to the Advanced Home Assistant MCP getting started guide. Follow these steps to begin:
|
||||
|
||||
1. [Installation](installation.md)
|
||||
2. [Configuration](configuration.md)
|
||||
3. [Docker Setup](docker.md)
|
||||
4. [Quick Start](quickstart.md)
|
||||
@@ -4,9 +4,18 @@ title: Home
|
||||
nav_order: 1
|
||||
---
|
||||
|
||||
# 🏠 MCP Server for Home Assistant
|
||||
# Advanced Home Assistant MCP
|
||||
|
||||
Welcome to the Model Context Protocol (MCP) Server documentation! This guide will help you get started with integrating a lightweight automation tool with your Home Assistant setup.
|
||||
Welcome to the Advanced Home Assistant Master Control Program documentation.
|
||||
|
||||
This documentation provides comprehensive information about setting up, configuring, and using the Advanced Home Assistant MCP system.
|
||||
|
||||
## Quick Links
|
||||
|
||||
- [Getting Started](getting-started/index.md)
|
||||
- [API Reference](api/index.md)
|
||||
- [Configuration Guide](getting-started/configuration.md)
|
||||
- [Docker Setup](getting-started/docker.md)
|
||||
|
||||
## What is MCP Server?
|
||||
|
||||
|
||||
62
docs/javascripts/extra.js
Normal file
62
docs/javascripts/extra.js
Normal file
@@ -0,0 +1,62 @@
|
||||
// Dark mode handling
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
// Check for saved dark mode preference
|
||||
const darkMode = localStorage.getItem('darkMode');
|
||||
if (darkMode === 'true') {
|
||||
document.body.classList.add('dark-mode');
|
||||
}
|
||||
});
|
||||
|
||||
// Smooth scrolling for anchor links
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
document.querySelector(this.getAttribute('href')).scrollIntoView({
|
||||
behavior: 'smooth'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Add copy button to code blocks
|
||||
document.querySelectorAll('pre code').forEach((block) => {
|
||||
const button = document.createElement('button');
|
||||
button.className = 'copy-button';
|
||||
button.textContent = 'Copy';
|
||||
|
||||
button.addEventListener('click', async () => {
|
||||
await navigator.clipboard.writeText(block.textContent);
|
||||
button.textContent = 'Copied!';
|
||||
setTimeout(() => {
|
||||
button.textContent = 'Copy';
|
||||
}, 2000);
|
||||
});
|
||||
|
||||
const pre = block.parentNode;
|
||||
pre.insertBefore(button, block);
|
||||
});
|
||||
|
||||
// Add version selector handling
|
||||
const versionSelector = document.querySelector('.version-selector');
|
||||
if (versionSelector) {
|
||||
versionSelector.addEventListener('change', (e) => {
|
||||
const version = e.target.value;
|
||||
window.location.href = `/${version}/`;
|
||||
});
|
||||
}
|
||||
|
||||
// Add feedback handling
|
||||
document.querySelectorAll('.feedback-button').forEach(button => {
|
||||
button.addEventListener('click', function () {
|
||||
const feedback = this.getAttribute('data-feedback');
|
||||
// Send feedback to analytics
|
||||
if (typeof gtag !== 'undefined') {
|
||||
gtag('event', 'feedback', {
|
||||
'event_category': 'Documentation',
|
||||
'event_label': feedback
|
||||
});
|
||||
}
|
||||
// Show thank you message
|
||||
this.textContent = 'Thank you!';
|
||||
this.disabled = true;
|
||||
});
|
||||
});
|
||||
12
docs/javascripts/mathjax.js
Normal file
12
docs/javascripts/mathjax.js
Normal file
@@ -0,0 +1,12 @@
|
||||
window.MathJax = {
|
||||
tex: {
|
||||
inlineMath: [["\\(", "\\)"]],
|
||||
displayMath: [["\\[", "\\]"]],
|
||||
processEscapes: true,
|
||||
processEnvironments: true
|
||||
},
|
||||
options: {
|
||||
ignoreHtmlClass: ".*|",
|
||||
processHtmlClass: "arithmatex"
|
||||
}
|
||||
};
|
||||
42
docs/requirements.txt
Normal file
42
docs/requirements.txt
Normal file
@@ -0,0 +1,42 @@
|
||||
# Core
|
||||
mkdocs>=1.5.3
|
||||
mkdocs-material>=9.5.3
|
||||
|
||||
# Enhanced Functionality
|
||||
mkdocs-minify-plugin>=0.7.1
|
||||
mkdocs-git-revision-date-localized-plugin>=1.2.1
|
||||
mkdocs-glightbox>=0.3.4
|
||||
mkdocs-git-authors-plugin>=0.7.2
|
||||
mkdocs-git-committers-plugin>=0.2.3
|
||||
mkdocs-static-i18n>=1.2.0
|
||||
mkdocs-awesome-pages-plugin>=2.9.2
|
||||
mkdocs-redirects>=1.2.1
|
||||
mkdocs-include-markdown-plugin>=6.0.4
|
||||
mkdocs-macros-plugin>=1.0.4
|
||||
mkdocs-meta-descriptions-plugin>=3.0.0
|
||||
mkdocs-print-site-plugin>=2.3.6
|
||||
|
||||
# Code Documentation
|
||||
mkdocstrings>=0.24.0
|
||||
mkdocstrings-python>=1.7.5
|
||||
|
||||
# Markdown Extensions
|
||||
pymdown-extensions>=10.5
|
||||
markdown>=3.5.1
|
||||
mdx_truly_sane_lists>=1.3
|
||||
pygments>=2.17.2
|
||||
|
||||
# Math Support
|
||||
python-markdown-math>=0.8
|
||||
|
||||
# Diagrams
|
||||
plantuml-markdown>=3.9.2
|
||||
mkdocs-mermaid2-plugin>=1.1.1
|
||||
|
||||
# Search Enhancements
|
||||
mkdocs-material[imaging]>=9.5.3
|
||||
pillow>=10.2.0
|
||||
cairosvg>=2.7.1
|
||||
|
||||
# Development Tools
|
||||
mike>=2.0.0 # For version management
|
||||
146
docs/security.md
Normal file
146
docs/security.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# Security Guide
|
||||
|
||||
This document outlines security best practices and configurations for the Home Assistant MCP Server.
|
||||
|
||||
## Authentication
|
||||
|
||||
### JWT Authentication
|
||||
The server uses JWT (JSON Web Tokens) for API authentication:
|
||||
|
||||
```http
|
||||
Authorization: Bearer YOUR_JWT_TOKEN
|
||||
```
|
||||
|
||||
### Token Configuration
|
||||
```yaml
|
||||
security:
|
||||
jwt_secret: YOUR_SECRET_KEY
|
||||
token_expiry: 24h
|
||||
refresh_token_expiry: 7d
|
||||
```
|
||||
|
||||
## Access Control
|
||||
|
||||
### CORS Configuration
|
||||
Configure allowed origins to prevent unauthorized access:
|
||||
|
||||
```yaml
|
||||
security:
|
||||
allowed_origins:
|
||||
- http://localhost:3000
|
||||
- https://your-domain.com
|
||||
```
|
||||
|
||||
### IP Filtering
|
||||
Restrict access by IP address:
|
||||
|
||||
```yaml
|
||||
security:
|
||||
allowed_ips:
|
||||
- 192.168.1.0/24
|
||||
- 10.0.0.0/8
|
||||
```
|
||||
|
||||
## SSL/TLS Configuration
|
||||
|
||||
### Enable HTTPS
|
||||
```yaml
|
||||
ssl:
|
||||
enabled: true
|
||||
cert_file: /path/to/cert.pem
|
||||
key_file: /path/to/key.pem
|
||||
```
|
||||
|
||||
### Certificate Management
|
||||
1. Use Let's Encrypt for free SSL certificates
|
||||
2. Regularly renew certificates
|
||||
3. Monitor certificate expiration
|
||||
|
||||
## Rate Limiting
|
||||
|
||||
### Basic Rate Limiting
|
||||
```yaml
|
||||
rate_limit:
|
||||
enabled: true
|
||||
requests_per_minute: 100
|
||||
burst: 20
|
||||
```
|
||||
|
||||
### Advanced Rate Limiting
|
||||
```yaml
|
||||
rate_limit:
|
||||
rules:
|
||||
- endpoint: /api/control
|
||||
requests_per_minute: 50
|
||||
- endpoint: /api/state
|
||||
requests_per_minute: 200
|
||||
```
|
||||
|
||||
## Data Protection
|
||||
|
||||
### Sensitive Data
|
||||
- Use environment variables for secrets
|
||||
- Encrypt sensitive data at rest
|
||||
- Implement secure backup procedures
|
||||
|
||||
### Logging Security
|
||||
- Avoid logging sensitive information
|
||||
- Rotate logs regularly
|
||||
- Protect log file access
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. Regular Security Updates
|
||||
- Keep dependencies updated
|
||||
- Monitor security advisories
|
||||
- Apply patches promptly
|
||||
|
||||
2. Password Policies
|
||||
- Enforce strong passwords
|
||||
- Implement password expiration
|
||||
- Use secure password storage
|
||||
|
||||
3. Monitoring
|
||||
- Log security events
|
||||
- Monitor access patterns
|
||||
- Set up alerts for suspicious activity
|
||||
|
||||
4. Network Security
|
||||
- Use VPN for remote access
|
||||
- Implement network segmentation
|
||||
- Configure firewalls properly
|
||||
|
||||
## Security Checklist
|
||||
|
||||
- [ ] Configure SSL/TLS
|
||||
- [ ] Set up JWT authentication
|
||||
- [ ] Configure CORS properly
|
||||
- [ ] Enable rate limiting
|
||||
- [ ] Implement IP filtering
|
||||
- [ ] Secure sensitive data
|
||||
- [ ] Set up monitoring
|
||||
- [ ] Configure backup encryption
|
||||
- [ ] Update security policies
|
||||
|
||||
## Incident Response
|
||||
|
||||
1. Detection
|
||||
- Monitor security logs
|
||||
- Set up intrusion detection
|
||||
- Configure alerts
|
||||
|
||||
2. Response
|
||||
- Document incident details
|
||||
- Isolate affected systems
|
||||
- Investigate root cause
|
||||
|
||||
3. Recovery
|
||||
- Apply security fixes
|
||||
- Restore from backups
|
||||
- Update security measures
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- [Security Best Practices](https://owasp.org/www-project-top-ten/)
|
||||
- [JWT Security](https://jwt.io/introduction)
|
||||
- [SSL Configuration](https://ssl-config.mozilla.org/)
|
||||
164
docs/stylesheets/extra.css
Normal file
164
docs/stylesheets/extra.css
Normal file
@@ -0,0 +1,164 @@
|
||||
/* Modern Dark Theme Enhancements */
|
||||
[data-md-color-scheme="slate"] {
|
||||
--md-default-bg-color: #1a1b26;
|
||||
--md-default-fg-color: #a9b1d6;
|
||||
--md-default-fg-color--light: #a9b1d6;
|
||||
--md-default-fg-color--lighter: #787c99;
|
||||
--md-default-fg-color--lightest: #4e5173;
|
||||
--md-primary-fg-color: #7aa2f7;
|
||||
--md-primary-fg-color--light: #7dcfff;
|
||||
--md-primary-fg-color--dark: #2ac3de;
|
||||
--md-accent-fg-color: #bb9af7;
|
||||
--md-accent-fg-color--transparent: #bb9af722;
|
||||
--md-accent-bg-color: #1a1b26;
|
||||
--md-accent-bg-color--light: #24283b;
|
||||
}
|
||||
|
||||
/* Code Blocks */
|
||||
.highlight pre {
|
||||
background-color: #24283b !important;
|
||||
border-radius: 6px;
|
||||
padding: 1em;
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.highlight code {
|
||||
font-family: 'Roboto Mono', monospace;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
/* Copy Button */
|
||||
.copy-button {
|
||||
position: absolute;
|
||||
right: 0.5em;
|
||||
top: 0.5em;
|
||||
padding: 0.4em 0.8em;
|
||||
background-color: var(--md-accent-bg-color--light);
|
||||
border: 1px solid var(--md-accent-fg-color--transparent);
|
||||
border-radius: 4px;
|
||||
color: var(--md-default-fg-color);
|
||||
font-size: 0.8em;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.copy-button:hover {
|
||||
background-color: var(--md-accent-fg-color--transparent);
|
||||
border-color: var(--md-accent-fg-color);
|
||||
}
|
||||
|
||||
/* Navigation Enhancements */
|
||||
.md-nav {
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.md-nav__link {
|
||||
padding: 0.4rem 0;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
.md-nav__link:hover {
|
||||
color: var(--md-primary-fg-color) !important;
|
||||
}
|
||||
|
||||
/* Tabs */
|
||||
.md-tabs__link {
|
||||
opacity: 0.8;
|
||||
transition: opacity 0.2s ease;
|
||||
}
|
||||
|
||||
.md-tabs__link:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.md-tabs__link--active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* Admonitions */
|
||||
.md-typeset .admonition,
|
||||
.md-typeset details {
|
||||
border-width: 0;
|
||||
border-left-width: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
.md-typeset table:not([class]) {
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 4px var(--md-accent-fg-color--transparent);
|
||||
}
|
||||
|
||||
.md-typeset table:not([class]) th {
|
||||
background-color: var(--md-accent-bg-color--light);
|
||||
border-bottom: 2px solid var(--md-accent-fg-color--transparent);
|
||||
}
|
||||
|
||||
/* Search */
|
||||
.md-search__form {
|
||||
background-color: var(--md-accent-bg-color--light);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* Feedback Buttons */
|
||||
.feedback-button {
|
||||
padding: 0.5em 1em;
|
||||
margin: 0 0.5em;
|
||||
border-radius: 4px;
|
||||
background-color: var(--md-accent-bg-color--light);
|
||||
border: 1px solid var(--md-accent-fg-color--transparent);
|
||||
color: var(--md-default-fg-color);
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.feedback-button:hover {
|
||||
background-color: var(--md-accent-fg-color--transparent);
|
||||
border-color: var(--md-accent-fg-color);
|
||||
}
|
||||
|
||||
.feedback-button:disabled {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
/* Version Selector */
|
||||
.version-selector {
|
||||
padding: 0.5em;
|
||||
border-radius: 4px;
|
||||
background-color: var(--md-accent-bg-color--light);
|
||||
border: 1px solid var(--md-accent-fg-color--transparent);
|
||||
color: var(--md-default-fg-color);
|
||||
}
|
||||
|
||||
/* Scrollbar */
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: var(--md-accent-bg-color--light);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--md-accent-fg-color--transparent);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--md-accent-fg-color);
|
||||
}
|
||||
|
||||
/* Print Styles */
|
||||
@media print {
|
||||
.md-typeset a {
|
||||
color: var(--md-default-fg-color) !important;
|
||||
}
|
||||
|
||||
.md-content__inner {
|
||||
margin: 0;
|
||||
padding: 1rem;
|
||||
}
|
||||
}
|
||||
42
docs/tools/index.md
Normal file
42
docs/tools/index.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Tools Overview
|
||||
|
||||
The Home Assistant MCP Server provides a variety of tools to help you manage and interact with your home automation system.
|
||||
|
||||
## Available Tools
|
||||
|
||||
### Device Management
|
||||
- [List Devices](device-management/list-devices.md) - View and manage connected devices
|
||||
- [Device Control](device-management/control.md) - Control device states and settings
|
||||
|
||||
### History & State
|
||||
- [History](history-state/history.md) - View and analyze historical data
|
||||
- [Scene Management](history-state/scene.md) - Create and manage scenes
|
||||
|
||||
### Automation
|
||||
- [Automation Management](automation/automation.md) - Create and manage automations
|
||||
- [Automation Configuration](automation/automation-config.md) - Configure automation settings
|
||||
|
||||
### Add-ons & Packages
|
||||
- [Add-on Management](addons-packages/addon.md) - Manage server add-ons
|
||||
- [Package Management](addons-packages/package.md) - Handle package installations
|
||||
|
||||
### Notifications
|
||||
- [Notify](notifications/notify.md) - Send and manage notifications
|
||||
|
||||
### Events
|
||||
- [Event Subscription](events/subscribe-events.md) - Subscribe to system events
|
||||
- [SSE Statistics](events/sse-stats.md) - Monitor Server-Sent Events statistics
|
||||
|
||||
## Getting Started
|
||||
|
||||
To get started with these tools:
|
||||
|
||||
1. Ensure you have the MCP Server properly installed and configured
|
||||
2. Check the specific tool documentation for detailed usage instructions
|
||||
3. Use the API endpoints or command-line interface as needed
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Review the [API Documentation](../api/index.md) for programmatic access
|
||||
- Check [Configuration](../config/index.md) for tool-specific settings
|
||||
- See [Examples](../examples/index.md) for practical use cases
|
||||
@@ -1,127 +0,0 @@
|
||||
# Home Assistant MCP Tools
|
||||
|
||||
This section documents all available tools in the Home Assistant MCP.
|
||||
|
||||
## Available Tools
|
||||
|
||||
### Device Management
|
||||
|
||||
1. [List Devices](device-management/list-devices.md)
|
||||
- List all available Home Assistant devices
|
||||
- Group devices by domain
|
||||
- Get device states and attributes
|
||||
|
||||
2. [Device Control](device-management/control.md)
|
||||
- Control various device types
|
||||
- Support for lights, switches, covers, climate devices
|
||||
- Domain-specific commands and parameters
|
||||
|
||||
### History and State
|
||||
|
||||
1. [History](history-state/history.md)
|
||||
- Fetch device state history
|
||||
- Filter by time range
|
||||
- Get significant changes
|
||||
|
||||
2. [Scene Management](history-state/scene.md)
|
||||
- List available scenes
|
||||
- Activate scenes
|
||||
- Scene state information
|
||||
|
||||
### Automation
|
||||
|
||||
1. [Automation Management](automation/automation.md)
|
||||
- List automations
|
||||
- Toggle automation state
|
||||
- Trigger automations manually
|
||||
|
||||
2. [Automation Configuration](automation/automation-config.md)
|
||||
- Create new automations
|
||||
- Update existing automations
|
||||
- Delete automations
|
||||
- Duplicate automations
|
||||
|
||||
### Add-ons and Packages
|
||||
|
||||
1. [Add-on Management](addons-packages/addon.md)
|
||||
- List available add-ons
|
||||
- Install/uninstall add-ons
|
||||
- Start/stop/restart add-ons
|
||||
- Get add-on information
|
||||
|
||||
2. [Package Management](addons-packages/package.md)
|
||||
- Manage HACS packages
|
||||
- Install/update/remove packages
|
||||
- List available packages by category
|
||||
|
||||
### Notifications
|
||||
|
||||
1. [Notify](notifications/notify.md)
|
||||
- Send notifications
|
||||
- Support for multiple notification services
|
||||
- Custom notification data
|
||||
|
||||
### Real-time Events
|
||||
|
||||
1. [Event Subscription](events/subscribe-events.md)
|
||||
- Subscribe to Home Assistant events
|
||||
- Monitor specific entities
|
||||
- Domain-based monitoring
|
||||
|
||||
2. [SSE Statistics](events/sse-stats.md)
|
||||
- Get SSE connection statistics
|
||||
- Monitor active subscriptions
|
||||
- Connection management
|
||||
|
||||
## Using Tools
|
||||
|
||||
All tools can be accessed through:
|
||||
|
||||
1. REST API endpoints
|
||||
2. WebSocket connections
|
||||
3. Server-Sent Events (SSE)
|
||||
|
||||
### Authentication
|
||||
|
||||
Tools require authentication using:
|
||||
- Home Assistant Long-Lived Access Token
|
||||
- JWT tokens for specific operations
|
||||
|
||||
### Error Handling
|
||||
|
||||
All tools follow a consistent error handling pattern:
|
||||
```typescript
|
||||
{
|
||||
success: boolean;
|
||||
message?: string;
|
||||
data?: any;
|
||||
}
|
||||
```
|
||||
|
||||
### Rate Limiting
|
||||
|
||||
Tools are subject to rate limiting:
|
||||
- Default: 100 requests per 15 minutes
|
||||
- Configurable through environment variables
|
||||
|
||||
## Tool Development
|
||||
|
||||
Want to create a new tool? Check out:
|
||||
- [Tool Development Guide](../development/tools.md)
|
||||
- [Tool Interface Documentation](../development/interfaces.md)
|
||||
- [Best Practices](../development/best-practices.md)
|
||||
|
||||
## Examples
|
||||
|
||||
Each tool documentation includes:
|
||||
- Usage examples
|
||||
- Code snippets
|
||||
- Common use cases
|
||||
- Troubleshooting tips
|
||||
|
||||
## Support
|
||||
|
||||
Need help with tools?
|
||||
- Check individual tool documentation
|
||||
- See [Troubleshooting Guide](../troubleshooting.md)
|
||||
- Create an issue on GitHub
|
||||
255
mkdocs.yml
255
mkdocs.yml
@@ -1,76 +1,220 @@
|
||||
site_name: Advanced Home Assistant MCP
|
||||
site_url: https://jango-blockchained.github.io/advanced-homeassitant-mcp
|
||||
repo_url: https://github.com/jango-blockchained/advanced-homeassitant-mcp
|
||||
site_name: MCP Server for Home Assistant
|
||||
site_url: https://jango-blockchained.github.io/advanced-homeassistant-mcp
|
||||
repo_url: https://github.com/jango-blockchained/advanced-homeassistant-mcp
|
||||
site_description: Home Assistant MCP Server Documentation
|
||||
# Add this to handle GitHub Pages serving from a subdirectory
|
||||
site_dir: site/advanced-homeassistant-mcp
|
||||
|
||||
theme:
|
||||
name: material
|
||||
logo: assets/images/logo.png
|
||||
favicon: assets/images/favicon.ico
|
||||
palette:
|
||||
- scheme: default
|
||||
primary: indigo
|
||||
accent: indigo
|
||||
toggle:
|
||||
icon: material/brightness-7
|
||||
name: Switch to dark mode
|
||||
- scheme: slate
|
||||
primary: indigo
|
||||
accent: indigo
|
||||
toggle:
|
||||
icon: material/brightness-4
|
||||
name: Switch to light mode
|
||||
|
||||
# Modern Features
|
||||
features:
|
||||
- navigation.instant
|
||||
- navigation.tracking
|
||||
# Navigation Enhancements
|
||||
- navigation.tabs
|
||||
- navigation.tabs.sticky
|
||||
- navigation.indexes
|
||||
- navigation.sections
|
||||
- navigation.expand
|
||||
- navigation.top
|
||||
- navigation.path
|
||||
- navigation.footer
|
||||
- navigation.prune
|
||||
- navigation.tracking
|
||||
- navigation.instant
|
||||
|
||||
# UI Elements
|
||||
- header.autohide
|
||||
- toc.integrate
|
||||
- toc.follow
|
||||
- announce.dismiss
|
||||
|
||||
# Search Features
|
||||
- search.suggest
|
||||
- search.highlight
|
||||
- search.share
|
||||
|
||||
# Code Features
|
||||
- content.code.annotate
|
||||
- content.code.copy
|
||||
- content.code.select
|
||||
- content.tabs.link
|
||||
- content.tooltips
|
||||
|
||||
# Theme Configuration
|
||||
palette:
|
||||
# Dark mode as primary
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
primary: deep-purple
|
||||
accent: purple
|
||||
toggle:
|
||||
icon: material/weather-sunny
|
||||
name: Switch to light mode
|
||||
# Light mode as secondary
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
primary: deep-purple
|
||||
accent: purple
|
||||
toggle:
|
||||
icon: material/weather-night
|
||||
name: Switch to dark mode
|
||||
|
||||
font:
|
||||
text: Roboto
|
||||
code: Roboto Mono
|
||||
|
||||
icon:
|
||||
repo: fontawesome/brands/github
|
||||
edit: material/pencil
|
||||
view: material/eye
|
||||
|
||||
markdown_extensions:
|
||||
# Modern Code Highlighting
|
||||
- pymdownx.highlight:
|
||||
anchor_linenums: true
|
||||
line_spans: __span
|
||||
pygments_lang_class: true
|
||||
- pymdownx.inlinehilite
|
||||
- pymdownx.snippets
|
||||
- pymdownx.superfences
|
||||
- admonition
|
||||
|
||||
# Advanced Formatting
|
||||
- pymdownx.critic
|
||||
- pymdownx.caret
|
||||
- pymdownx.keys
|
||||
- pymdownx.mark
|
||||
- pymdownx.tilde
|
||||
|
||||
# Interactive Elements
|
||||
- pymdownx.details
|
||||
- pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
- pymdownx.tasklist:
|
||||
custom_checkbox: true
|
||||
|
||||
# Diagrams & Formatting
|
||||
- pymdownx.superfences:
|
||||
custom_fences:
|
||||
- name: mermaid
|
||||
class: mermaid
|
||||
format: !!python/name:pymdownx.superfences.fence_code_format
|
||||
- pymdownx.arithmatex:
|
||||
generic: true
|
||||
|
||||
# Additional Extensions
|
||||
- admonition
|
||||
- attr_list
|
||||
- md_in_html
|
||||
- pymdownx.emoji:
|
||||
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
||||
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
||||
- footnotes
|
||||
- tables
|
||||
- def_list
|
||||
- abbr
|
||||
|
||||
plugins:
|
||||
- search
|
||||
- git-revision-date-localized:
|
||||
type: date
|
||||
- mkdocstrings:
|
||||
default_handler: python
|
||||
handlers:
|
||||
python:
|
||||
options:
|
||||
show_source: true
|
||||
# Core Plugins
|
||||
- search:
|
||||
separator: '[\s\-,:!=\[\]()"/]+|(?!\b)(?=[A-Z][a-z])|\.(?!\d)|&[lg]t;'
|
||||
- minify:
|
||||
minify_html: true
|
||||
- mkdocstrings
|
||||
|
||||
# Advanced Features
|
||||
- social:
|
||||
cards: false
|
||||
- tags
|
||||
- offline
|
||||
|
||||
# Version Management
|
||||
- git-revision-date-localized:
|
||||
enable_creation_date: true
|
||||
type: date
|
||||
|
||||
extra:
|
||||
# Consent Management
|
||||
consent:
|
||||
title: Cookie consent
|
||||
description: >-
|
||||
We use cookies to recognize your repeated visits and preferences, as well
|
||||
as to measure the effectiveness of our documentation and whether users
|
||||
find what they're searching for. With your consent, you're helping us to
|
||||
make our documentation better.
|
||||
actions:
|
||||
- accept
|
||||
- reject
|
||||
- manage
|
||||
|
||||
# Version Management
|
||||
version:
|
||||
provider: mike
|
||||
default: latest
|
||||
|
||||
# Social Links
|
||||
social:
|
||||
- icon: fontawesome/brands/github
|
||||
link: https://github.com/jango-blockchained/homeassistant-mcp
|
||||
- icon: fontawesome/brands/docker
|
||||
link: https://hub.docker.com/r/jangoblockchained/homeassistant-mcp
|
||||
|
||||
# Status Indicators
|
||||
status:
|
||||
new: Recently added
|
||||
deprecated: Deprecated
|
||||
beta: Beta
|
||||
|
||||
# Analytics
|
||||
analytics:
|
||||
provider: google
|
||||
property: !ENV GOOGLE_ANALYTICS_KEY
|
||||
feedback:
|
||||
title: Was this page helpful?
|
||||
ratings:
|
||||
- icon: material/emoticon-happy-outline
|
||||
name: This page was helpful
|
||||
data: 1
|
||||
note: >-
|
||||
Thanks for your feedback!
|
||||
- icon: material/emoticon-sad-outline
|
||||
name: This page could be improved
|
||||
data: 0
|
||||
note: >-
|
||||
Thanks for your feedback! Please consider creating an issue to help us improve.
|
||||
|
||||
extra_css:
|
||||
- stylesheets/extra.css
|
||||
|
||||
extra_javascript:
|
||||
- javascripts/mathjax.js
|
||||
- https://polyfill.io/v3/polyfill.min.js?features=es6
|
||||
- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
|
||||
- javascripts/extra.js
|
||||
|
||||
copyright: Copyright © 2025 jango-blockchained
|
||||
|
||||
# Keep existing nav structure
|
||||
nav:
|
||||
- Home: index.md
|
||||
- Usage: usage.md
|
||||
- API: api.md
|
||||
- Configuration:
|
||||
- Claude Desktop Config: claude_desktop_config.md
|
||||
- Cline Config: cline_config.md
|
||||
- Getting Started:
|
||||
- Overview: getting-started.md
|
||||
- Overview: getting-started/index.md
|
||||
- Installation: getting-started/installation.md
|
||||
- Quick Start: getting-started/quickstart.md
|
||||
- Configuration: getting-started/configuration.md
|
||||
- Docker Setup: getting-started/docker.md
|
||||
- Quick Start: getting-started/quickstart.md
|
||||
- API Reference:
|
||||
- Overview: api/index.md
|
||||
- Core API: api.md
|
||||
- Core API: api/core.md
|
||||
- SSE API: api/sse.md
|
||||
- Core Functions: api/core.md
|
||||
- API Documentation: api.md
|
||||
- Usage: usage.md
|
||||
- Configuration:
|
||||
- Overview: config/index.md
|
||||
- System Configuration: configuration.md
|
||||
- Security: security.md
|
||||
- Tools:
|
||||
- Overview: tools/tools.md
|
||||
- Overview: tools/index.md
|
||||
- Device Management:
|
||||
- List Devices: tools/device-management/list-devices.md
|
||||
- Device Control: tools/device-management/control.md
|
||||
@@ -89,32 +233,17 @@ nav:
|
||||
- Event Subscription: tools/events/subscribe-events.md
|
||||
- SSE Statistics: tools/events/sse-stats.md
|
||||
- Development:
|
||||
- Overview: development/development.md
|
||||
- Overview: development/index.md
|
||||
- Environment Setup: development/environment.md
|
||||
- Architecture: architecture.md
|
||||
- Contributing: contributing.md
|
||||
- Testing: testing.md
|
||||
- Best Practices: development/best-practices.md
|
||||
- Interfaces: development/interfaces.md
|
||||
- Tool Development: development/tools.md
|
||||
- Testing Guide: testing.md
|
||||
- Architecture: architecture.md
|
||||
- Contributing: contributing.md
|
||||
- Test Migration Guide: development/test-migration-guide.md
|
||||
- Troubleshooting: troubleshooting.md
|
||||
- Deployment: deployment.md
|
||||
- Roadmap: roadmap.md
|
||||
- Examples:
|
||||
- Overview: examples/index.md
|
||||
- Roadmap: roadmap.md
|
||||
|
||||
extra:
|
||||
social:
|
||||
- icon: fontawesome/brands/github
|
||||
link: https://github.com/jango-blockchained/homeassistant-mcp
|
||||
- icon: fontawesome/brands/docker
|
||||
link: https://hub.docker.com/r/jangoblockchained/homeassistant-mcp
|
||||
analytics:
|
||||
provider: google
|
||||
property: !ENV GOOGLE_ANALYTICS_KEY
|
||||
|
||||
extra_css:
|
||||
- stylesheets/extra.css
|
||||
|
||||
extra_javascript:
|
||||
- javascripts/extra.js
|
||||
|
||||
copyright: Copyright © 2025 jango-blockchained
|
||||
Reference in New Issue
Block a user