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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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 gradedqualityCmaintenanceEnables 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.MIT
- AlicenseBqualityBmaintenanceEnables control of ECHONETLite home automation devices like air conditioners and sensors via MCP, supporting HVAC management and real-time monitoring.141MIT
- AlicenseBqualityAmaintenanceEnables control of Matter smart-home devices via REST and MCP APIs, supporting lights, sensors, and AC units with federation capabilities.23MIT
Related MCP Connectors
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Create and manage CodeQR short links, QR codes, and analytics from any MCP client.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gil906/samrtthings-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server