Smart Home Device Control

Controle dispositivos de casa inteligente e consulte informações conectando modelos grandes às APIs de backend de casa inteligente.

Documentação

Servidor MCP de Controle de Dispositivos Inteligentes para Casa

Este servidor MCP permite que modelos de linguagem acessem a API de backend de casas inteligentes por meio do protocolo Model Context Protocol (MCP), possibilitando controle de dispositivos e consulta de informações.

Recursos

  • Fornece interfaces de controle de dispositivos, suportando operações em vários dispositivos inteligentes
  • Consulta visão geral e informações detalhadas dos dispositivos
  • Documentação integrada e abrangente dos dispositivos, orientando o modelo de linguagem no uso correto de cada tipo de dispositivo
  • Suporte à configuração do endereço da API de backend e token de autenticação por meio de argumentos de linha de comando

Tipos de dispositivos suportados e parâmetros de controle

  1. Ar-condicionado (air_conditioner):

    • Definir temperatura (set_temperature)
      • Parâmetro: temperature (faixa: 16-30°C)
      • Exemplo: control_device(device_id="5", action="set_temperature", parameters={"temperature": 24})
    • Controle de ligar/desligar (switch)
      • Parâmetro: state ("on" ou "off")
      • Exemplo: control_device(device_id="5", action="switch", parameters={"state": "on"})
  2. Geladeira (refrigerator):

    • Definir temperatura (set_temperature)
      • Parâmetro: temperature (faixa: -20 a 10°C)
      • Exemplo: control_device(device_id="8", action="set_temperature", parameters={"temperature": 4})
    • Controle de ligar/desligar (switch)
      • Parâmetro: state ("on" ou "off")
      • Exemplo: control_device(device_id="8", action="switch", parameters={"state": "on"})
  3. Lâmpada (light):

    • Definir brilho (set_brightness)
      • Parâmetro: brightness (faixa: 0-100)
      • Exemplo: control_device(device_id="12", action="set_brightness", parameters={"brightness": 80})
    • Controle de ligar/desligar (switch)
      • Parâmetro: state ("on" ou "off")
      • Exemplo: control_device(device_id="12", action="switch", parameters={"state": "on"})
  4. Fechadura (lock):

    • Definir estado da fechadura (set_lock)
      • Parâmetro: state ("lock" ou "unlock")
      • Exemplo: control_device(device_id="15", action="set_lock", parameters={"state": "lock"})
  5. Câmera (camera):

    • Controle de gravação (set_recording)
      • Parâmetro: state ("start" ou "stop")
      • Exemplo: control_device(device_id="20", action="set_recording", parameters={"state": "start"})
    • Definir resolução (set_resolution)
      • Parâmetro: resolution ("720p", "1080p" ou "4k")
      • Exemplo: control_device(device_id="20", action="set_resolution", parameters={"resolution": "1080p"})

Descrição dos estados dos dispositivos

  • online: dispositivo online e funcionando normalmente
  • offline: dispositivo offline
  • error: dispositivo com erro

Como usar

Iniciar o servidor

Você pode executar o script usando o ambiente python:

pip install fastmcp requests

python mcp_server.py --backend http://backend-api-address:8000/api/v1 --token <your_auth_token>

Você também pode baixar o executável binário da plataforma correspondente na seção Release e executá-lo diretamente:

mcp_server --backend http://backend-api-address:8000/api/v1 --token <your_auth_token>

O token your_auth_token precisa ser obtido após fazer login no backend por meio de POST /auth/login

Descrição dos parâmetros:

  • --backend: endereço da API de backend, padrão é http://localhost:8000
  • --token: token de autenticação, usado para autorização de acesso à API de backend

Teste de conversação

Você pode usar cursor ou cline (plugin VSCode) para conversar com o modelo de linguagem e chamar o servidor MCP nele.

{
  "mcpServers": {
    "cpm-smarthome": {
      "disabled": false,
      "timeout": 60,
      "transportType": "stdio",
      "command": "python",
      "args": [
        "/path/to/mcp_server.py",
        "--token",
        "your_auth_token",
        "--backend",
        "http://backend-api-address:8000/api/v1"
      ]
    }
  }
}

Ferramentas disponíveis

O servidor fornece as seguintes ferramentas para uso do modelo de linguagem:

  1. get_config(): obter informações de configuração atuais

    • Retorna o endereço da API de backend e o status de configuração do token de autenticação
    • Observação: o token de autenticação não é retornado em texto claro
  2. get_device_overview(): obter informações de visão geral de todos os dispositivos

    • Retorna a lista de informações básicas de todos os dispositivos no sistema
    • Inclui ID do dispositivo, nome, status e outras informações
  3. get_device_detail(device_id): obter informações detalhadas de um dispositivo específico

    • Retorna o status detalhado do dispositivo especificado
    • Inclui status do dispositivo, consumo de energia, tempo de execução, logs, etc.
  4. control_device(device_id, action, parameters): controlar um dispositivo específico para executar operações

    • Usado para enviar comandos de controle ao dispositivo especificado
    • Consulte a descrição dos tipos de dispositivos acima para parâmetros específicos
  5. get_device_type_docs(device_type): obter documentação de controle do tipo de dispositivo

    • Se o tipo de dispositivo não for especificado, retorna a visão geral de todos os tipos de dispositivos
    • Se o tipo de dispositivo for especificado, retorna a documentação detalhada de controle desse tipo

Interfaces da API de backend

Este servidor se conecta às seguintes interfaces da API de backend:

  1. Controlar dispositivo: POST /devices/{device_id}/control/
  2. Consultar resumo do dispositivo: GET /devices/overview/
  3. Consultar detalhes do dispositivo: GET /devices/{device_id}/detail/

Observações

  • Antes de usar qualquer ferramenta, certifique-se de que o token de autenticação correto foi fornecido na inicialização do servidor
  • Diferentes tipos de dispositivos suportam diferentes operações e parâmetros; consulte a documentação do dispositivo para obter detalhes
  • Todas as chamadas de API exigem um token de autenticação válido
  • As operações de controle de dispositivos retornam o resultado da operação; verifique o campo success retornado para confirmar se a operação foi bem-sucedida