SmartThings MCP
Servidor del Protocolo de Contexto de Modelo de Samsung SmartThings
Documentación
Servidor SmartThings MCP de Lango
Un servidor de Protocolo de Contexto de Modelo (MCP) que expone la API Pública de SmartThings de Samsung como herramientas, recursos y eventos en tiempo real amigables para LLM.
Características
- Carga Perezosa: Las herramientas son descubribles sin autenticación; solo valida las claves API cuando se invocan las herramientas
- Envuelve operaciones comunes de SmartThings como Herramientas MCP
- Dispositivos:
list_devices,get_device,get_device_status,list_device_capabilities,send_device_command - Ubicaciones y Habitaciones:
list_locations,list_rooms,create_room,delete_room - Escenas y Reglas:
list_scenes,execute_scene,list_rules - Hubs:
list_hubs,get_hub_health - Suscripciones:
list_subscriptions,create_subscription,delete_subscription - Horarios:
list_schedules,create_schedule,delete_schedule - Historial:
get_device_history - Capacidades:
get_capability
- Dispositivos:
- Expone datos de dispositivos / estado / ubicación como Recursos MCP con caché de lectura
- Soporta todos los transportes oficiales de MCP-Go
- Stdio (CLI / local), StreamableHTTP, Eventos Enviados por el Servidor (SSE)
- Poller periódico publica el estado en vivo de los dispositivos a clientes SSE
- Cero dependencias externas aparte de
mcp-goy el registradorzap
Requisitos
- Go ≥ 1.23
- Un PAT de SmartThings válido (Token de Acceso Personal)
Obtención de un Token de Acceso Personal (PAT)
- Vaya a Tokens de Acceso Personal de SmartThings.
- Inicie sesión con su Cuenta Samsung.
- Haga clic en Generar nuevo token.
- Ingrese un nombre para su token y seleccione los alcances autorizados (por ejemplo,
devices,locations,scenes,rules,schedules). - Haga clic en Generar token.
- Copie y guarde el token inmediatamente (no se mostrará de nuevo).
Variables de Entorno
| Nombre | Predeterminado | Descripción |
|---|---|---|
smartThingsToken, SMARTTHINGS_TOKEN | – | Token Bearer para la API de SmartThings. Requerido para operaciones de SmartThings, pero el servidor se iniciará sin él para el descubrimiento de herramientas |
stBaseUrl, ST_BASE_URL | https://api.smartthings.com | Anulación para pruebas / servidores simulados |
MCP_LOG_LEVEL | info | debug |
Instalación
Instalación mediante Smithery
Para instalar smartthings-mcp para Claude Desktop automáticamente mediante Smithery:
npx -y @smithery/cli install @langowarny/smartthings-mcp --client claude
Instalación Manual
git clone https://github.com/langowarny/smartthings-mcp.git
cd smartthings-mcp
go mod download
Ejecución
Stdio
SMARTTHINGS_TOKEN=123ab456-xxx... go run ./cmd/server -transport stdio
StreamableHTTP
SMARTTHINGS_TOKEN=123ab456-xxx... \
go run ./cmd/server -transport stream -host 0.0.0.0 -port 8081
Solicitud de prueba:
curl -X POST http://localhost:8081/mcp/tools/call \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_devices"}}'
SSE
SMARTTHINGS_TOKEN=123ab456-xxx... \
go run ./cmd/server -transport sse -host 0.0.0.0 -port 8081
# Open event stream
echo -e 'GET /mcp/sse HTTP/1.1\nHost: localhost:8081\n\n' | nc localhost 8081
El servidor emite notificaciones smartthings/device_status cada 30 segundos.
Catálogo de Herramientas
| Herramienta | Parámetros | Descripción |
|---|---|---|
list_devices | location_id? | Listar dispositivos del usuario |
get_device | device_id | Metadatos del dispositivo |
get_device_status | device_id | Estado en vivo |
list_device_capabilities | device_id | Capacidades compatibles |
send_device_command | device_id, component, capability, command, arguments?[] | Enviar comando |
list_locations | – | Listar ubicaciones |
list_rooms | location_id | Listar habitaciones en una ubicación |
create_room | location_id, name | Crear una nueva habitación |
delete_room | location_id, room_id | Eliminar una habitación |
list_scenes | – | Listar todas las escenas |
execute_scene | scene_id | Activar escena |
list_rules | – | Listar reglas de automatización |
list_hubs | – | Listar hubs |
get_hub_health | hub_id | Obtener estado de salud del hub |
list_subscriptions | installed_app_id | Listar suscripciones |
create_subscription | installed_app_id, device_id, ... | Suscribirse a eventos del dispositivo |
delete_subscription | installed_app_id, subscription_id | Eliminar suscripción |
list_schedules | installed_app_id | Listar horarios |
create_schedule | installed_app_id, name, cron | Crear horario cron |
delete_schedule | installed_app_id, schedule_id | Eliminar horario |
get_device_history | device_id | Obtener eventos recientes del dispositivo |
get_capability | capability_id, version | Obtener definición de capacidad |
Patrones de Recursos
| Plantilla URI | Descripción | MIME |
|---|---|---|
st://devices/{device_id} | Metadatos del dispositivo | application/json |
st://devices/{device_id}/status | Estado en vivo | application/json |
st://locations/{location_id} | Metadatos de ubicación | application/json |
Desarrollo
go vet ./...
go test ./...
go run ./cmd/server -transport stream
Los registros se emiten mediante Uber Zap; ajuste MCP_LOG_LEVEL para la verbosidad.
Licencia
MIT © 2025 Lango Warny