- Add detailed API documentation for core functions, SSE, and WebSocket APIs - Create comprehensive architecture overview with system design diagrams - Develop in-depth installation and quick start guides - Improve troubleshooting documentation with advanced debugging techniques - Update site navigation and markdown configuration
283 lines
5.6 KiB
Markdown
283 lines
5.6 KiB
Markdown
---
|
|
layout: default
|
|
title: Architecture
|
|
nav_order: 4
|
|
---
|
|
|
|
# Architecture Overview 🏗️
|
|
|
|
This document describes the architecture of the MCP Server, explaining how different components work together to provide a bridge between Home Assistant and Language Learning Models.
|
|
|
|
## System Architecture
|
|
|
|
```mermaid
|
|
graph TD
|
|
subgraph "Client Layer"
|
|
WC[Web Clients]
|
|
MC[Mobile Clients]
|
|
VC[Voice Assistants]
|
|
end
|
|
|
|
subgraph "MCP Server"
|
|
API[API Gateway]
|
|
NLP[NLP Engine]
|
|
SSE[SSE Manager]
|
|
WS[WebSocket Server]
|
|
CM[Command Manager]
|
|
SC[Scene Controller]
|
|
Cache[Redis Cache]
|
|
end
|
|
|
|
subgraph "Home Assistant"
|
|
HA[Home Assistant Core]
|
|
Dev[Devices & Services]
|
|
end
|
|
|
|
subgraph "AI Layer"
|
|
LLM[Language Models]
|
|
IC[Intent Classifier]
|
|
NER[Named Entity Recognition]
|
|
end
|
|
|
|
WC --> |HTTP/WS| API
|
|
MC --> |HTTP/WS| API
|
|
VC --> |HTTP| API
|
|
|
|
API --> |Events| SSE
|
|
API --> |Real-time| WS
|
|
API --> |Process| NLP
|
|
|
|
NLP --> |Query| LLM
|
|
NLP --> |Extract| IC
|
|
NLP --> |Identify| NER
|
|
|
|
CM --> |Execute| HA
|
|
HA --> |Control| Dev
|
|
|
|
SSE --> |State Updates| WC
|
|
SSE --> |State Updates| MC
|
|
WS --> |Bi-directional| WC
|
|
|
|
Cache --> |Fast Access| API
|
|
HA --> |Events| Cache
|
|
```
|
|
|
|
## Component Details
|
|
|
|
### 1. Client Layer
|
|
|
|
The client layer consists of various interfaces that interact with the MCP Server:
|
|
|
|
- **Web Clients**: Browser-based dashboards and control panels
|
|
- **Mobile Clients**: Native mobile applications
|
|
- **Voice Assistants**: Voice-enabled devices and interfaces
|
|
|
|
### 2. MCP Server Core
|
|
|
|
#### API Gateway
|
|
- Handles all incoming HTTP requests
|
|
- Manages authentication and rate limiting
|
|
- Routes requests to appropriate handlers
|
|
|
|
```typescript
|
|
interface APIGateway {
|
|
authenticate(): Promise<boolean>;
|
|
rateLimit(): Promise<boolean>;
|
|
route(request: Request): Promise<Response>;
|
|
}
|
|
```
|
|
|
|
#### NLP Engine
|
|
- Processes natural language commands
|
|
- Integrates with Language Models
|
|
- Extracts intents and entities
|
|
|
|
```typescript
|
|
interface NLPEngine {
|
|
processCommand(text: string): Promise<CommandIntent>;
|
|
extractEntities(text: string): Promise<Entity[]>;
|
|
validateIntent(intent: CommandIntent): boolean;
|
|
}
|
|
```
|
|
|
|
#### Event Management
|
|
- **SSE Manager**: Handles Server-Sent Events
|
|
- **WebSocket Server**: Manages bi-directional communication
|
|
- **Command Manager**: Processes and executes commands
|
|
|
|
### 3. Home Assistant Integration
|
|
|
|
The server maintains a robust connection to Home Assistant through:
|
|
|
|
- REST API calls
|
|
- WebSocket connections
|
|
- Event subscriptions
|
|
|
|
```typescript
|
|
interface HomeAssistantClient {
|
|
connect(): Promise<void>;
|
|
getState(entityId: string): Promise<EntityState>;
|
|
executeCommand(command: Command): Promise<CommandResult>;
|
|
subscribeToEvents(callback: EventCallback): Subscription;
|
|
}
|
|
```
|
|
|
|
### 4. AI Layer
|
|
|
|
#### Language Model Integration
|
|
- Processes natural language input
|
|
- Understands context and user intent
|
|
- Generates appropriate responses
|
|
|
|
#### Intent Classification
|
|
- Identifies command types
|
|
- Extracts parameters
|
|
- Validates requests
|
|
|
|
## Data Flow
|
|
|
|
### 1. Command Processing
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant Client
|
|
participant API
|
|
participant NLP
|
|
participant LLM
|
|
participant HA
|
|
|
|
Client->>API: Send command
|
|
API->>NLP: Process text
|
|
NLP->>LLM: Get intent
|
|
LLM-->>NLP: Return structured intent
|
|
NLP->>HA: Execute command
|
|
HA-->>API: Return result
|
|
API-->>Client: Send response
|
|
```
|
|
|
|
### 2. Real-time Updates
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant HA
|
|
participant Cache
|
|
participant SSE
|
|
participant Client
|
|
|
|
HA->>Cache: State change
|
|
Cache->>SSE: Notify change
|
|
SSE->>Client: Send update
|
|
Note over Client: Update UI
|
|
```
|
|
|
|
### 3. [SSE API](api/sse.md)
|
|
- Event Subscriptions
|
|
- Real-time Updates
|
|
- Connection Management
|
|
|
|
## Security Architecture
|
|
|
|
### Authentication Flow
|
|
|
|
1. **JWT-based Authentication**
|
|
```typescript
|
|
interface AuthToken {
|
|
token: string;
|
|
expires: number;
|
|
scope: string[];
|
|
}
|
|
```
|
|
|
|
2. **Rate Limiting**
|
|
```typescript
|
|
interface RateLimit {
|
|
window: number;
|
|
max: number;
|
|
current: number;
|
|
}
|
|
```
|
|
|
|
### Security Measures
|
|
|
|
- TLS encryption for all communications
|
|
- Input sanitization
|
|
- Request validation
|
|
- Token-based authentication
|
|
- Rate limiting
|
|
- IP filtering
|
|
|
|
## Performance Optimizations
|
|
|
|
### Caching Strategy
|
|
|
|
```mermaid
|
|
graph LR
|
|
Request --> Cache{Cache?}
|
|
Cache -->|Hit| Response
|
|
Cache -->|Miss| HA[Home Assistant]
|
|
HA --> Cache
|
|
Cache --> Response
|
|
```
|
|
|
|
### Connection Management
|
|
|
|
- Connection pooling
|
|
- Automatic reconnection
|
|
- Load balancing
|
|
- Request queuing
|
|
|
|
## Configuration
|
|
|
|
The system is highly configurable through environment variables and configuration files:
|
|
|
|
```yaml
|
|
server:
|
|
port: 3000
|
|
host: '0.0.0.0'
|
|
|
|
homeAssistant:
|
|
url: 'http://homeassistant:8123'
|
|
token: 'YOUR_TOKEN'
|
|
|
|
security:
|
|
jwtSecret: 'your-secret'
|
|
rateLimit: 100
|
|
|
|
ai:
|
|
model: 'gpt-4'
|
|
temperature: 0.7
|
|
|
|
cache:
|
|
ttl: 300
|
|
maxSize: '100mb'
|
|
```
|
|
|
|
## Deployment Architecture
|
|
|
|
### Docker Deployment
|
|
|
|
```mermaid
|
|
graph TD
|
|
subgraph "Docker Compose"
|
|
MCP[MCP Server]
|
|
Redis[Redis Cache]
|
|
HA[Home Assistant]
|
|
end
|
|
|
|
MCP --> Redis
|
|
MCP --> HA
|
|
```
|
|
|
|
### Scaling Considerations
|
|
|
|
- Horizontal scaling capabilities
|
|
- Load balancing support
|
|
- Redis cluster support
|
|
- Multiple HA instance support
|
|
|
|
## Further Reading
|
|
|
|
- [API Documentation](api/index.md)
|
|
- [Installation Guide](getting-started/installation.md)
|
|
- [Contributing Guidelines](contributing.md)
|
|
- [Troubleshooting](troubleshooting.md) |