SmartThings MCP Server
SmartThings MCP Server
Ein MCP-Server für Samsung SmartThings, der Geräte, Szenen, Benachrichtigungen und vollständiges CRUD für Regeln (Routinen) über streamable-HTTP bereitstellt.
Erstellt mit FastMCP. OAuth2 mit automatischer Token-Aktualisierung – keine ablaufenden persönlichen Zugriffstokens.
Warum
Die meisten SmartThings-MCP-Server lesen nur Geräte und lösen Szenen aus. Dieser erstellt, aktualisiert, löscht und führt auch Regeln aus, die Automatisierungs-Engine hinter Routinen – was Sie tatsächlich benötigen, um einem LLM zu ermöglichen, Heimautomatisierungen zu erstellen.
Related MCP server: SmartThingsMCP
⚠️ Regeln vs. Routinen – lesen Sie dies, bevor Sie einen Fehler melden
Sache | Über API sichtbar? | Verwaltbar? |
Von diesem Server erstellte Regeln ( | ✅ | ✅ vollständiges CRUD + Ausführen |
In der SmartThings-Telefon-App erstellte Routinen | ❌ nie | ❌ nur App |
list_rules gibt [] zurück, was erwartet ist, wenn Sie nur Routinen in der
mobilen App erstellt haben. Es ist kein Authentifizierungsfehler. Dies ist eine dokumentierte
Samsung-Plattformbeschränkung, die kein Client umgehen kann:
„Automatische Routinen („Regeln“), die Sie in der SmartThings-App erstellen, sind eine Obermenge dessen, was Sie mit der Rules-API erstellen können. In der App erstellte Routinen werden nicht angezeigt, wenn Sie eine GET-Anfrage an
https://api.smartthings.com/v1/rules/senden." — SmartThings-Dokumentation
Werkzeuge
Gruppe | Werkzeuge |
Geräte |
|
Szenen |
|
Standorte |
|
Benachrichtigungen |
|
Regeln |
|
Szenen sind von Natur aus schreibgeschützt. SmartThings bietet keinen Schreibbereich für Szenen
(w:scenes wird rundweg abgelehnt), daher können Szenen aufgelistet und ausgeführt, aber nie
über die API erstellt werden.
Auflisten und Steuern von Geräten
Erstellen einer Automatisierung
Gerätenamen, IDs und Regel-IDs in diesen Beispielen sind fiktiv.
Einrichtung
Erstellen Sie eine OAuth-In SmartApp mit diesen Bereichen:
r:devices:* x:devices:* r:scenes:* x:scenes:* r:locations:* r:rules:* w:rules:* x:rules:*Konfigurieren Sie Anmeldeinformationen:
cp .env.example .env # fill in SMARTTHINGS_CLIENT_ID and SMARTTHINGS_CLIENT_SECRETAutorisieren Sie einmalig, um das Aktualisierungstoken zu erstellen:
python oauth_setup.pyDies öffnet einen lokalen Loopback-Listener (Standardport
9444) und schreibtdata/tokens.json. Wenn Ihre SmartThings-App stattdessen einen öffentlichen HTTPS-Callback erfordert, verwenden Sieoauth_capture.pymit gesetzterOAUTH_REDIRECT_URI.Führen Sie es aus:
docker compose up -d --buildDer Server lauscht auf
http://localhost:8085/mcp.
Client-Konfiguration
{
"mcpServers": {
"smartthings": {
"type": "http",
"url": "http://localhost:8085/mcp"
}
}
}Der Server ist zustandsloses streamable-HTTP: POST JSON-RPC mit
Accept: application/json, text/event-stream. Kein mcp-session-id-Header ist
erforderlich; Antworten werden als SSE zurückgegeben (event: message\ndata: {...}).
Regeln schreiben
rule_json ist ein JSON-String, der nur das actions-Array der Rules-API enthält –
name und locationId werden vom Tool hinzugefügt.
Schema: https://developer.smartthings.com/docs/rules/rules-api
Eine harmlose Regel, die sicher zum Validieren von execute_routine verwendet werden kann:
[{"if": {"equals": {"left": {"integer": 1}, "right": {"integer": 1}},
"then": [{"sleep": {"duration": {"value": {"integer": 1}, "unit": "Second"}}}]}}]Eine echte Regel – wenn ein Schalter eingeschaltet wird, schalte einen anderen aus:
[{"if": {"equals": {
"left": {"device": {"devices": ["<deviceId>"], "component": "main",
"capability": "switch", "attribute": "switch"}},
"right": {"string": "on"}},
"then": [{"command": {"devices": ["<otherDeviceId>"],
"commands": [{"component": "main", "capability": "switch", "command": "off"}]}}]}}]⚠️
execute_routineführt die Aktionen der Regel real und sofort aus. Es simuliert nicht. Wenn eines Ihrer Geräte ein Netzschalter für Maschinen ist, die Ihnen wichtig sind, validieren Sie mit der obigensleep-Regel anstelle einercommand-Aktion.
Authentifizierungshinweise
Nur OAuth2. data/tokens.json muss alle drei Werte enthalten: access_token,
refresh_token und ein echtes zukünftiges expires_at. Eine Hintergrund-Keep-Alive-Schleife
(KEEPALIVE_HOURS, Standard 12h) aktualisiert proaktiv, sodass das Aktualisierungstoken nie
durch Nichtbenutzung veraltet.
Persönliche Zugriffstokens werden absichtlich nicht unterstützt. Seit Dezember 2024 laufen SmartThings-PATs 24 Stunden nach Erstellung ab, was sie für einen langlaufenden Server unbrauchbar macht. Es gibt keinen PAT-Fallback und keine PAT-Einstellung – jede Anfrage, einschließlich aller Regeln-Aufrufe, verwendet das automatisch aktualisierte OAuth-Token.
Fehlerbehebung
401 bei Regeln-Aufrufen. In dieser Reihenfolge:
Überprüfen Sie, ob
data/tokens.jsonalle drei Schlüssel und ein zukünftigesexpires_atenthält.Bestätigen Sie, dass
locationIdgesendet wird – SmartThings gibt ein reines HTML-401 (kein 400) zurück, wennlocationIdin/rules-Anfragen fehlt, was einen einfachen Fehler eines fehlenden Parameters wie einen Authentifizierungsfehler aussehen lässt.Starten Sie den Container neu, um eine Aktualisierung zu erzwingen.
Letzter Ausweg: Führen Sie
oauth_setup.pyerneut aus.
Endpoint-Eigenheiten (bereits behandelt – „korrigieren“ Sie sie nicht zurück):
create:
POST /rules?locationId=...execute:
POST /rules/execute/{ruleId}?locationId=...(nicht/rules/{id}/execute)
Container meldet „unhealthy“. Der MCP-Endpunkt antwortet nur auf POST, daher gibt ein
HTTP-Healthcheck gegen / 404 zurück. Verwenden Sie den TCP-Check in docker-compose.yml.
Umgebungsänderungen werden nicht wirksam. docker compose up -d --force-recreate – ein einfacher
docker restart liest .env nicht erneut.
Lizenz
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Discover, plan and run tools across your connected business systems through one OAuth MCP endpoint
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables control and monitoring of SmartThings smart home devices through natural language, supporting switches, sensors, refrigerators, and other IoT devices with real-time status queries and command execution.-
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive interaction with SmartThings devices, locations, scenes, and automation rules through the SmartThings API. It features intelligent two-level caching and supports multiple transport options including HTTP, SSE, and STDIO.1MIT
- AlicenseBqualityBmaintenanceEnables control of Matter smart-home devices via REST and MCP APIs, supporting lights, sensors, and AC units with federation capabilities.23MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying and managing SmartThings locations, devices, and rules through MCP tools, with security and confirmation safeguards.MIT