Home Assistant verilerine erişin ve cihazları (ışıklar, anahtarlar, termostatlar vb.) kontrol edin.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"tevonsb-homeassistant-mcp": {
"command": "node",
"args": [
"~/.mcp/homeassistant-mcp/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/tevonsb/homeassistant-mcp.git ~/.mcp/homeassistant-mcp
cd ~/.mcp/homeassistant-mcp Sunucu, yerel bir Home Assistant örneğine erişimi bir LLM uygulaması ile paylaşmak için MCP protokolünü kullanır.
Home Assistant örneğiniz ve Dil Öğrenme Modelleri (LLM'ler) arasında güçlü bir köprü, Model Context Protocol (MCP) aracılığıyla akıllı ev cihazlarınızı doğal dil ile kontrol etme ve izleme olanağı sunar. Bu sunucu, cihaz kontrolünden sistem yönetimine kadar tüm Home Assistant ekosistemini yönetmek için kapsamlı bir API sağlar.
Sunucu, Home Assistant örneğinizden gerçek zamanlı güncellemeler sağlayan güçlü bir Server-Sent Events (SSE) sistemi içerir. Bu sayede şunları yapabilirsiniz:
const eventSource = new EventSource(
'http://localhost:3000/subscribe_events?token=YOUR_TOKEN&domain=light'
);
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Update received:', data);
};
SSE sistemi hakkında tam belgeler için SSE_API.md dosyasını inceleyin.
Eklenti Yönetimi
Paket Yönetimi (HACS)
Otomasyon Yönetimi
Akıllı Organizasyon
Sağlam Mimari
# Deposu klonlayın
git clone https://github.com/tevonsb/homeassistant-mcp.git
cd homeassistant-mcp
# Bağımlılıkları yükleyin
npm install
# Projeyi derleyin
npm run build
Proje, kolay dağıtım ve farklı platformlar arasında tutarlı ortamlar için Docker desteği içerir.
Deposu klonlayın:
git clone https://github.com/tevonsb/homeassistant-mcp.git
cd homeassistant-mcp
Ortamı yapılandırın:
cp .env.example .env
.env dosyasını Home Assistant yapılandırmanız ile düzenleyin:
# Home Assistant Yapılandırması
HASS_HOST=http://homeassistant.local:8123
HASS_TOKEN=your_home_assistant_token
HASS_SOCKET_URL=ws://homeassistant.local:8123/api/websocket
# Sunucu Yapılandırması
PORT=3000
NODE_ENV=production
DEBUG=false
Docker Compose ile derleyin ve çalıştırın:
# Konteyner'ları derleyin ve başlatın
docker compose up -d
# Günlükleri görüntüleyin
docker compose logs -f
# Servisi durdurun
docker compose down
Kurulumu doğrulayın:
Sunucu şimdi http://localhost:3000 adresinde çalışıyor olmalıdır. Health endpoint'i http://localhost:3000/health adresinde kontrol edebilirsiniz.
Uygulamayı güncelleyin:
# En son değişiklikleri çekin
git pull
# Konteyner'ları yeniden derleyin ve başlatın
docker compose up -d --build
Docker kurulumu aşağıdakileri içerir:
Tüm ortam değişkenleri .env dosyasında yapılandırılabilir. Aşağıdaki değişkenler desteklenir:
HASS_HOST: Home Assistant örneğinizin URL'siHASS_TOKEN: Home Assistant için uzun süreli erişim token'ıHASS_SOCKET_URL: Home Assistant WebSocket URL'siPORT: Sunucu port'u (varsayılan: 3000)NODE_ENV: Ortam (production/development)DEBUG: Debug modunu etkinleştir (true/false)# Home Assistant Yapılandırması
HASS_HOST=http://homeassistant.local:8123 # Home Assistant örneğinizin URL'si
HASS_TOKEN=your_home_assistant_token # Uzun süreli erişim token'ı
HASS_SOCKET_URL=ws://homeassistant.local:8123/api/websocket # WebSocket URL'si
# Sunucu Yapılandırması
PORT=3000 # Sunucu port'u (varsayılan: 3000)
NODE_ENV=production # Ortam (production/development)
DEBUG=false # Debug modunu etkinleştir
# Test Yapılandırması
TEST_HASS_HOST=http://localhost:8123 # Test örneği URL'si
TEST_HASS_TOKEN=test_token # Test token'ı
.env.example dosyasını .env.development olarak kopyalayın.env.example dosyasını .env.production olarak kopyalayın.env.example dosyasını .env.test olarak kopyalayınYeni Home Assistant MCP sunucusunu kullanmak için Claude Desktop'ı istemci olarak ekleyebilirsiniz. Aşağıdaki yapılandırmayı ekleyin. Bunun MCP'yi claude içinde çalıştıracağını ve Docker yöntemi ile çalışmayacağını unutmayın.
{
"homeassistant": {
"command": "node",
"args": [<path/to/your/dist/folder>]
"env": {
NODE_ENV=development
HASS_HOST=http://homeassistant.local:8123
HASS_TOKEN=your_home_assistant_token
PORT=3000
HASS_SOCKET_URL=ws://homeassistant.local:8123/api/websocket
LOG_LEVEL=debug
}
}
}
{
"tool": "control",
"command": "turn_on", // veya "turn_off", "toggle"
"entity_id": "light.living_room"
}
{
"tool": "control",
"command": "turn_on",
"entity_id": "light.living_room",
"brightness": 128,
"color_temp": 4000,
"rgb_color": [255, 0, 0]
}
{
"tool": "addon",
"action": "list"
}
{
"tool": "addon",
"action": "install",
"slug": "core_configurator",
"version": "5.6.0"
}
{
"tool": "addon",
"action": "start", // veya "stop", "restart"
"slug": "core_configurator"
}
{
"tool": "package",
"action": "list",
"category": "integration" // veya "plugin", "theme", "python_script", "appdaemon", "netdaemon"
}
{
"tool": "package",
"action": "install",
"category": "integration",
"repository": "hacs/integration",
"version": "1.32.0"
}
{
"tool": "automation_config",
"action": "create",
"config": {
"alias": "Motion Light",
"description": "Turn on light when motion detected",
"mode": "single",
"trigger": [
{
"platform": "state",
"entity_id": "binary_sensor.motion",
"to": "on"
}
],
"action": [
{
"service": "light.turn_on",
"target": {
"entity_id": "light.living_room"
}
}
]
}
}
{
"tool": "automation_config",
"action": "duplicate",
"automation_id": "automation.motion_light"
}
GET /api/state
POST /api/state
Sistemin mevcut durumunu yönetir.
Örnek İstek:
POST /api/state
{
"context": "living_room",
"state": {
"lights": "on",
"temperature": 22
}
}
POST /api/context
Mevcut bağlamı yeni bilgiler ile günceller.
Örnek İstek:
POST /api/context
{
"user": "john",
"location": "kitchen",
"time": "morning",
"activity": "cooking"
}
POST /api/action
Belirtilen işlemi verilen parametreler ile yürütür.
Örnek İstek:
POST /api/action
{
"action": "turn_on_lights",
"parameters": {
"room": "living_room",
"brightness": 80
}
}
POST /api/actions/batch
Birden fazla işlemi sırayla yürütür.
Örnek İstek:
POST /api/actions/batch
{
"actions": [
{
"action": "turn_on_lights",
"parameters": {
"room": "living_room"
}
},
{
"action": "set_temperature",
"parameters": {
"temperature": 22
}
}
]
}
GET /api/actions
Tüm kullanılabilir işlemlerin listesini döndürür.
Örnek Yanıt:
{
"actions": [
{
"name": "turn_on_lights",
"parameters": ["room", "brightness"],
"description": "Turns on lights in specified room"
},
{
"name": "set_temperature",
"parameters": ["temperature"],
"description": "Sets temperature in current context"
}
]
}
GET /api/context?type=current
Bağlam bilgilerini alır.
Örnek Yanıt:
{
"current_context": {
"user": "john",
"location": "kitchen",
"time": "morning",
"activity": "cooking"
}
}
Sunucu, WebSocket bağlantıları aracılığıyla gerçek zamanlı güncellemeleri destekler.
// İstemci tarafı bağlantı örneği
const ws = new WebSocket('ws://localhost:3000/ws');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Received update:', data);
};
state_change: Sistem durumu değiştiğinde yayınlanırcontext_update: Bağlam güncellendiğinde yayınlanıraction_executed: İşlem tamamlandığında yayınlanırerror: Bir hata oluştuğunda yayınlanırÖrnek Olay Verileri:
{
"event": "state_change",
"data": {
"previous_state": {
"lights": "off"
},
"current_state": {
"lights": "on"
},
"timestamp": "2024-03-20T10:30:00Z"
}
}
Tüm endpoint'ler standart HTTP durum kodlarını döndürür:
Hata Yanıtı Biçimi:
{
"error": {
"code": "INVALID_PARAMETERS",
"message": "Missing required parameter: room",
"details": {
"missing_fields": ["room"]
}
}
}
API, kötüye kullanımı önlemek için hız sınırlaması uygular:
Hız sınırı aşıldığında, sunucu şunu döndürür:
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests",
"reset_time": "2024-03-20T10:31:00Z"
}
}
# Mevcut durumu alın
curl -X GET \
http://localhost:3000/api/state \
-H 'Authorization: ApiKey your_api_key_here'
# İşlemi yürütün
curl -X POST \
http://localhost:3000/api/action \
-H 'Authorization: ApiKey your_api_key_here' \
-H 'Content-Type: application/json' \
-d '{
"action": "turn_on_lights",
"parameters": {
"room": "living_room",
"brightness": 80
}
}'
// İşlemi yürütün
async function executeAction() {
const response = await fetch('http://localhost:3000/api/action', {
method: 'POST',
headers: {
'Authorization': 'ApiKey your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
action: 'turn_on_lights',
parameters: {
room: 'living_room',
brightness: 80
}
})
});
const data = await response.json();
console.log('Action result:', data);
}
# Sıcak yükleme ile geliştirme modu
npm run dev
# Projeyi derleyin
npm run build
# Üretim modu
npm run start
# Testleri çalıştırın
npx jest --config=jest.config.cjs
# Kapsama ile testleri çalıştırın
npx jest --coverage
# Kodu lint'leyin
npm run lint
# Kodu biçimlendir
npm run format
Node.js Sürümü (toSorted is not a function)
nvm install 20.10.0
nvm use 20.10.0
Bağlantı Sorunları
HASS_HOST erişimini kontrol edinEklenti Yönetimi Sorunları
HACS Entegrasyon Sorunları
Otomasyon Sorunları
✅ Tamamlandı
🚧 Devam Ediyor
MIT Lisansı - Ayrıntılar için LICENSE dosyasını inceleyin
Tüm MCP protokol özelliklerini kullanan MCP sunucusu.
Python'da MCP sunucuları oluşturmak için üst düzey bir framework.
Ekran ve ses kaydını zaman damgasıyla indeksleyen, SQL/embedding storage kullanan, semantic search ve LLM tabanlı geçmiş analizi yapan local-first sistem. NextJS plugin ekosistemi aracılığıyla bağlam farkında AI ajanlar oluşturmayı ve event-triggered aksiyonları destekler.
YouTube video bilgilerini çıkartıp dönüştürün.
Obsidian ile REST API aracılığıyla etkileşim kurma
AI ajanlarını 600+ entegrasyon ile tek bir arayüzden bağlayın - OAuth, scaling ve monitoring dahil