Smart Home Device Control

Controla dispositivos del hogar inteligente y consulta información conectando modelos grandes a las APIs de backend del hogar inteligente.

Documentación

Servidor MCP de Control de Dispositivos para Hogar Inteligente

Este servidor MCP permite que los modelos de lenguaje accedan a la API de backend de hogar inteligente a través del protocolo Model Context Protocol (MCP), habilitando el control de dispositivos y la consulta de información.

Características

  • Proporciona interfaces de control de dispositivos, compatibles con la operación de varios dispositivos de hogar inteligente
  • Consulta de resúmenes e información detallada de dispositivos
  • Documentación integrada y completa de dispositivos que guía a los modelos de lenguaje en el uso correcto de cada tipo de dispositivo
  • Soporta configuración de la dirección de la API de backend y el token de autenticación mediante argumentos de línea de comandos

Tipos de dispositivos compatibles y parámetros de control

  1. Aire acondicionado (air_conditioner):

    • Configurar temperatura (set_temperature)
      • Parámetro: temperature (rango: 16-30°C)
      • Ejemplo: control_device(device_id="5", action="set_temperature", parameters={"temperature": 24})
    • Control de encendido/apagado (switch)
      • Parámetro: state ("on" u "off")
      • Ejemplo: control_device(device_id="5", action="switch", parameters={"state": "on"})
  2. Refrigerador (refrigerator):

    • Configurar temperatura (set_temperature)
      • Parámetro: temperature (rango: -20 a 10°C)
      • Ejemplo: control_device(device_id="8", action="set_temperature", parameters={"temperature": 4})
    • Control de encendido/apagado (switch)
      • Parámetro: state ("on" u "off")
      • Ejemplo: control_device(device_id="8", action="switch", parameters={"state": "on"})
  3. Luz (light):

    • Configurar brillo (set_brightness)
      • Parámetro: brightness (rango: 0-100)
      • Ejemplo: control_device(device_id="12", action="set_brightness", parameters={"brightness": 80})
    • Control de encendido/apagado (switch)
      • Parámetro: state ("on" u "off")
      • Ejemplo: control_device(device_id="12", action="switch", parameters={"state": "on"})
  4. Cerradura (lock):

    • Configurar estado de bloqueo (set_lock)
      • Parámetro: state ("lock" o "unlock")
      • Ejemplo: control_device(device_id="15", action="set_lock", parameters={"state": "lock"})
  5. Cámara (camera):

    • Control de grabación (set_recording)
      • Parámetro: state ("start" o "stop")
      • Ejemplo: control_device(device_id="20", action="set_recording", parameters={"state": "start"})
    • Configurar resolución (set_resolution)
      • Parámetro: resolution ("720p", "1080p" o "4k")
      • Ejemplo: control_device(device_id="20", action="set_resolution", parameters={"resolution": "1080p"})

Descripción de estados de dispositivos

  • online: el dispositivo está en línea y funcionando correctamente
  • offline: el dispositivo está fuera de línea
  • error: el dispositivo presenta un error

Método de uso

Iniciar el servidor

Puede ejecutar el script en un entorno python:

pip install fastmcp requests

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

También puede descargar el ejecutable binario correspondiente a su plataforma desde Release y ejecutarlo directamente:

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

El token your_auth_token debe obtenerse después de iniciar sesión en el backend a través de POST /auth/login

Descripción de parámetros:

  • --backend: dirección de la API de backend, valor predeterminado: http://localhost:8000
  • --token: token de autenticación, utilizado para la autorización de acceso a la API de backend

Prueba de conversación

Puede usar cursor o cline (complemento de VSCode) para conversar con el modelo de lenguaje e invocar el servidor MCP en la conversación.

{
  "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"
      ]
    }
  }
}

Herramientas disponibles

El servidor proporciona las siguientes herramientas para que las use el modelo de lenguaje:

  1. get_config(): obtener la información de configuración actual

    • Devuelve la dirección de la API de backend y el estado de configuración del token de autenticación
    • Nota: el token de autenticación no se devuelve en texto plano
  2. get_device_overview(): obtener la información de resumen de todos los dispositivos

    • Devuelve la lista de información básica de todos los dispositivos en el sistema
    • Incluye ID del dispositivo, nombre, estado y otra información
  3. get_device_detail(device_id): obtener información detallada de un dispositivo específico

    • Devuelve la información de estado detallada del dispositivo especificado
    • Incluye estado del dispositivo, consumo de energía, tiempo de funcionamiento, registros, etc.
  4. control_device(device_id, action, parameters): controlar un dispositivo específico para ejecutar operaciones

    • Se utiliza para enviar comandos de control al dispositivo especificado
    • Consulte la descripción de tipos de dispositivos anterior para conocer los parámetros específicos
  5. get_device_type_docs(device_type): obtener la documentación de control del tipo de dispositivo

    • Si no se especifica un tipo de dispositivo, devuelve el resumen de todos los tipos de dispositivos
    • Si se especifica un tipo de dispositivo, devuelve la documentación de control detallada de ese tipo

Interfaces de API de backend

Este servidor se conecta a las siguientes interfaces de API de backend:

  1. Controlar dispositivo: POST /devices/{device_id}/control/
  2. Consultar resumen de dispositivo: GET /devices/overview/
  3. Consultar detalle de dispositivo: GET /devices/{device_id}/detail/

Notas

  • Antes de usar cualquier herramienta, asegúrese de que el servidor se haya iniciado con el token de autenticación correcto
  • Diferentes tipos de dispositivos admiten diferentes operaciones y parámetros; consulte la documentación del dispositivo para obtener más detalles
  • Todas las llamadas a la API requieren un token de autenticación válido
  • Las operaciones de control de dispositivos devuelven el resultado de la operación; verifique el campo success devuelto para confirmar si la operación fue exitosa