SmartThings MCP

Servidor do Protocolo de Contexto de Modelo do Samsung SmartThings

Documentação

Servidor SmartThings MCP da Lango

smithery badge

Um servidor Model Context Protocol (MCP) que expõe a SmartThings Public API da Samsung como ferramentas, recursos e eventos em tempo real amigáveis para LLMs.

Recursos

  • Carregamento Preguiçoso: Ferramentas são descobríveis sem autenticação - só valida chaves de API quando as ferramentas são invocadas
  • Encapsula operações comuns do SmartThings como Ferramentas MCP
    • Dispositivos: list_devices, get_device, get_device_status, list_device_capabilities, send_device_command
    • Locais e Cômodos: list_locations, list_rooms, create_room, delete_room
    • Cenas e Regras: list_scenes, execute_scene, list_rules
    • Hubs: list_hubs, get_hub_health
    • Assinaturas: list_subscriptions, create_subscription, delete_subscription
    • Agendamentos: list_schedules, create_schedule, delete_schedule
    • Histórico: get_device_history
    • Capacidades: get_capability
  • Expõe dados de dispositivo / status / local como Recursos MCP com cache de leitura
  • Suporta todos os transportes oficiais do MCP-Go
    • Stdio (CLI / local), StreamableHTTP, Server-Sent Events (SSE)
  • Poller periódico publica status ao vivo dos dispositivos para clientes SSE
  • Zero dependências externas além do logger mcp-go e zap

Requisitos

  • Go ≥ 1.23
  • Um PAT (Personal Access Token) válido do SmartThings

Obtendo um Personal Access Token (PAT)

  1. Acesse SmartThings Personal Access Tokens.
  2. Faça login com sua conta Samsung.
  3. Clique em Generate new token.
  4. Insira um nome para seu token e selecione os escopos autorizados (ex.: devices, locations, scenes, rules, schedules).
  5. Clique em Generate token.
  6. Copie e salve o token imediatamente (ele não será exibido novamente).

Variáveis de Ambiente

NomePadrãoDescrição
smartThingsToken, SMARTTHINGS_TOKEN–Token Bearer para a API do SmartThings. Obrigatório para operações SmartThings, mas o servidor iniciará sem ele para descoberta de ferramentas
stBaseUrl, ST_BASE_URLhttps://api.smartthings.comSubstituição para testes / servidores mock
MCP_LOG_LEVELinfodebug

Instalação

Instalando via Smithery

Para instalar o smartthings-mcp para Claude Desktop automaticamente via Smithery:

npx -y @smithery/cli install @langowarny/smartthings-mcp --client claude

Instalação Manual

git clone https://github.com/langowarny/smartthings-mcp.git
cd smartthings-mcp
go mod download

Execução

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

Requisição de teste:

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

O servidor emite notificações smartthings/device_status a cada 30 segundos.

Catálogo de Ferramentas

FerramentaParâmetrosDescrição
list_deviceslocation_id?Listar dispositivos do usuário
get_devicedevice_idMetadados do dispositivo
get_device_statusdevice_idStatus ao vivo
list_device_capabilitiesdevice_idCapacidades suportadas
send_device_commanddevice_id, component, capability, command, arguments?[]Enviar comando
list_locations–Listar locais
list_roomslocation_idListar cômodos em um local
create_roomlocation_id, nameCriar um novo cômodo
delete_roomlocation_id, room_idExcluir um cômodo
list_scenes–Listar todas as cenas
execute_scenescene_idAcionar cena
list_rules–Listar regras de automação
list_hubs–Listar hubs
get_hub_healthhub_idObter status de saúde do hub
list_subscriptionsinstalled_app_idListar assinaturas
create_subscriptioninstalled_app_id, device_id, ...Assinar eventos de dispositivos
delete_subscriptioninstalled_app_id, subscription_idExcluir assinatura
list_schedulesinstalled_app_idListar agendamentos
create_scheduleinstalled_app_id, name, cronCriar agendamento cron
delete_scheduleinstalled_app_id, schedule_idExcluir agendamento
get_device_historydevice_idObter eventos recentes do dispositivo
get_capabilitycapability_id, versionObter definição de capacidade

Padrões de Recursos

Modelo de URIDescriçãoMIME
st://devices/{device_id}Metadados do dispositivoapplication/json
st://devices/{device_id}/statusStatus ao vivoapplication/json
st://locations/{location_id}Metadados do localapplication/json

Desenvolvimento

go vet ./...
go test ./...
go run ./cmd/server -transport stream

Os logs são emitidos via Uber Zap; ajuste MCP_LOG_LEVEL para verbosidade.

Licença

MIT © 2025 Lango Warny