SmartThings MCP Server
SmartThings MCP Server
Un servidor MCP para Samsung SmartThings que expone dispositivos, escenas, notificaciones y CRUD completo de Rules (Routines) a través de HTTP con streaming.
Creado con FastMCP. OAuth2 con renovación automática de tokens: sin tokens de acceso personales que caduquen por ningún sitio.
Por qué
La mayoría de los servidores MCP de SmartThings solo leen dispositivos y ejecutan escenas. Este además crea, actualiza, elimina y ejecuta Rules, el motor de automatización que hay detrás de Routines, que es justo lo que necesitas para que un LLM cree automatizaciones del hogar.
Related MCP server: SmartThingsMCP
⚠️ Rules vs Routines: lee esto antes de reportar un error
Elemento | ¿Visible vía API? | ¿Gestionable? |
Rules creadas por este servidor ( | ✅ | ✅ CRUD completo + ejecución |
Routines creadas en la app del teléfono de SmartThings | ❌ nunca | ❌ solo en la app |
Que list_rules devuelva [] es esperable si solo has creado Routines en la app móvil. No es un fallo de autenticación. Es una limitación documentada de la plataforma SmartThings que ningún cliente puede evitar:
"Las rutinas automáticas ("rules") que creas en la app de SmartThings son un superconjunto de lo que puedes crear con la Rules API. Las Routines creadas en la app no aparecerán al enviar una solicitud GET a
https://api.smartthings.com/v1/rules/." — Documentación de SmartThings
Herramientas
Grupo | Herramientas |
Dispositivos |
|
Escenas |
|
Ubicaciones |
|
Notificaciones |
|
Rules |
|
Las escenas son de solo lectura por diseño. SmartThings no expone ningún ámbito de escritura para escenas (w:scenes se rechaza directamente), por lo que las escenas se pueden listar y ejecutar, pero nunca crear a través de la API.
Listar y controlar dispositivos
Crear una automatización
Los nombres de dispositivos, IDs y rule IDs de estos ejemplos son ficticios.
Configuración
Crea un OAuth-In SmartApp con estos ámbitos:
r:devices:* x:devices:* r:scenes:* x:scenes:* r:locations:* r:rules:* w:rules:* x:rules:*Configura las credenciales:
cp .env.example .env # fill in SMARTTHINGS_CLIENT_ID and SMARTTHINGS_CLIENT_SECRETAutoriza una vez para generar el token de actualización:
python oauth_setup.pyEsto abre un listener de loopback local (puerto
9444por defecto) y escribedata/tokens.json. Si tu app de SmartThings requiere una devolución de llamada HTTPS pública, usaoauth_capture.pyconOAUTH_REDIRECT_URIconfigurado.Ejecútalo:
docker compose up -d --buildEl servidor escucha en
http://localhost:8085/mcp.
Configuración del cliente
{
"mcpServers": {
"smartthings": {
"type": "http",
"url": "http://localhost:8085/mcp"
}
}
}El servidor es HTTP de streaming sin estado: POST JSON-RPC con Accept: application/json, text/event-stream. No se requiere cabecera mcp-session-id; las respuestas se devuelven como SSE (event: message\ndata: {...}).
Escribir rules
rule_json es una cadena JSON que contiene solo la matriz actions de la Rules API: name y locationId los añade la herramienta.
Esquema: https://developer.smartthings.com/docs/rules/rules-api
Una regla inofensiva, segura de usar al validar execute_routine:
[{"if": {"equals": {"left": {"integer": 1}, "right": {"integer": 1}},
"then": [{"sleep": {"duration": {"value": {"integer": 1}, "unit": "Second"}}}]}}]Una regla real: cuando un interruptor se enciende, apaga otro:
[{"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_routineejecuta las acciones de la regla de verdad, inmediatamente. No simula. Si alguno de tus dispositivos es un interruptor de alimentación de máquinas que te importan, valida con la reglasleepanterior en lugar de con una accióncommand.
Notas de autenticación
Solo OAuth2. data/tokens.json debe contener las tres claves: access_token, refresh_token y un expires_at futuro real. Un bucle de keep-alive en segundo plano (KEEPALIVE_HOURS, 12 h por defecto) se actualiza de forma proactiva para que el token de actualización nunca caduque por desuso.
Los tokens de acceso personales no son compatibles a propósito. Desde diciembre de 2024, los PAT de SmartThings caducan 24 horas después de su creación, lo que los hace inutilizables para un servidor de larga duración. No hay respaldo de PAT ni configuración de PAT: cada solicitud, incluidas todas las llamadas de Rules, utiliza el token OAuth de renovación automática.
Solución de problemas
401 en llamadas de rules. En orden:
Comprueba que
data/tokens.jsontiene las tres claves y unexpires_atfuturo.Confirma que se envía
locationId: SmartThings devuelve un 401 HTML sin formato (no un 400) cuando faltalocationIden las solicitudes/rules, lo que hace que un simple error de parámetro faltante parezca un fallo de autenticación.Reinicia el contenedor para forzar una actualización.
Último recurso: vuelve a ejecutar
oauth_setup.py.
Particularidades del endpoint (ya gestionadas, no las "corrijas"):
create:
POST /rules?locationId=...execute:
POST /rules/execute/{ruleId}?locationId=...(no/rules/{id}/execute)
El contenedor informa que no está sano. El endpoint MCP solo responde a POST, por lo que una comprobación de estado HTTP contra / devuelve 404. Usa la comprobación TCP en docker-compose.yml.
Los cambios de entorno no surten efecto. docker compose up -d --force-recreate: un docker restart simple no volverá a leer .env.
Licencia
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