SmartThings MCP

Servidor del Protocolo de Contexto de Modelo de Samsung SmartThings

Documentación

Servidor SmartThings MCP de Lango

smithery badge

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
  • 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-go y el registrador zap

Requisitos

  • Go ≥ 1.23
  • Un PAT de SmartThings válido (Token de Acceso Personal)

Obtención de un Token de Acceso Personal (PAT)

  1. Vaya a Tokens de Acceso Personal de SmartThings.
  2. Inicie sesión con su Cuenta Samsung.
  3. Haga clic en Generar nuevo token.
  4. Ingrese un nombre para su token y seleccione los alcances autorizados (por ejemplo, devices, locations, scenes, rules, schedules).
  5. Haga clic en Generar token.
  6. Copie y guarde el token inmediatamente (no se mostrará de nuevo).

Variables de Entorno

NombrePredeterminadoDescripció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_URLhttps://api.smartthings.comAnulación para pruebas / servidores simulados
MCP_LOG_LEVELinfodebug

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

HerramientaParámetrosDescripción
list_deviceslocation_id?Listar dispositivos del usuario
get_devicedevice_idMetadatos del dispositivo
get_device_statusdevice_idEstado en vivo
list_device_capabilitiesdevice_idCapacidades compatibles
send_device_commanddevice_id, component, capability, command, arguments?[]Enviar comando
list_locations–Listar ubicaciones
list_roomslocation_idListar habitaciones en una ubicación
create_roomlocation_id, nameCrear una nueva habitación
delete_roomlocation_id, room_idEliminar una habitación
list_scenes–Listar todas las escenas
execute_scenescene_idActivar escena
list_rules–Listar reglas de automatización
list_hubs–Listar hubs
get_hub_healthhub_idObtener estado de salud del hub
list_subscriptionsinstalled_app_idListar suscripciones
create_subscriptioninstalled_app_id, device_id, ...Suscribirse a eventos del dispositivo
delete_subscriptioninstalled_app_id, subscription_idEliminar suscripción
list_schedulesinstalled_app_idListar horarios
create_scheduleinstalled_app_id, name, cronCrear horario cron
delete_scheduleinstalled_app_id, schedule_idEliminar horario
get_device_historydevice_idObtener eventos recientes del dispositivo
get_capabilitycapability_id, versionObtener definición de capacidad

Patrones de Recursos

Plantilla URIDescripciónMIME
st://devices/{device_id}Metadatos del dispositivoapplication/json
st://devices/{device_id}/statusEstado en vivoapplication/json
st://locations/{location_id}Metadatos de ubicaciónapplication/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