LIFX灯光控制协议

一个通过本地网络(LAN)控制LIFX灯光的模型上下文协议(MCP)服务器,无需云连接。

  • by simon-duchastel
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 simon-duchastel/lifx-lan-mcp

使用说明

LIFX LAN MCP

A. 模型上下文协议(MCP) 服务器,允许LLM在没有云连接的情况下通过局域网(LAN)控制LIFX灯。

备注 MCP服务器必须与LIFX灯在同一wifi网络上运行,才能使工具工作。

特性

  • 列出网络上所有可用的LIFX灯
  • 获取灯光的当前状态(颜色、开/关、标签)
  • 打开/关闭灯
  • 更改灯光颜色
  • 本地网络操作(不需要云,服务器必须在同一网络上运行)
  • 可配置传输(sse或stdio)

安装

NPX(通过本地stdio配置)-默认值

将此或类似内容添加到LLM MCP配置文件中(例如 克劳德桌面 这是 claude_desktop_config.json).

{
  "mcpServers": {
    "lifx-lan-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "lifx-lan-mcp"
      ]
    }
  }
}

运行服务器

服务器可以在两种模式下运行:stdio(默认)或HTTP服务器模式。服务器支持2025-03-26和2024-11-05协议版本。

标准模式(默认)

Stdio模式是运行服务器的最简单方式,它通过标准输入/输出直接与LLM通信。这是默认模式,不需要额外的配置。在此模式下,MCP服务器 由与其通信的客户端直接启动。

# Run in stdio mode (default)
npx lifx-lan-mcp

# Or explicitly specify stdio mode
npx lifx-lan-mcp --mode stdio

HTTP服务器模式

警告: HTTP服务器模式是危险的。它目前不支持身份验证,这意味着攻击者可以欺骗您的LLM提供数据,或者允许恶意客户端控制您的LIFX灯。在支持身份验证之前,使用风险由您自行承担。

HTTP服务器模式允许服务器作为可通过HTTP访问的独立服务运行。当您希望将服务器与LLM客户端分开运行时,例如通过网络运行,这非常有用。

# Run in HTTP server mode on default port (3000)
npx lifx-lan-mcp --mode sse

# Run in HTTP server mode on a specific port
npx lifx-lan-mcp --mode sse --port 8080

协议版本

HTTP服务器支持两种协议版本:

  1. 2025-04-21协议 (最新)

    • 用途 /mcp 所有操作的端点
    • 支持HTTP和SSE传输
    • 客户端配置示例:
    {
      "mcpServers": {
        "lifx-lan-mcp": {
          "url": "http://localhost:3000/mcp"
        }
      }
    }
    
  2. 2025-03-26协议 (遗产)

    • 用途 /sse 用于建立连接的端点
    • 用途 /message 用于发送消息的端点
    • 客户端配置示例:
    {
      "mcpServers": {
        "lifx-lan-mcp": {
          "url": "http://localhost:3000/sse"
        }
      }
    }
    

工具

  • lifx_list_lights

    • 列出用户局域网(LAN)上当前可用的所有Lifx灯
    • 每个灯都由一个唯一的字符串标签指定
    • 包括有关灯光的其他信息,如组和位置
    • 输入:无需
  • lifx_lan_get-lights_state

    • 获取一个或多个LIFX灯的当前状态,包括颜色、开/关状态、组和位置
    • 输入:
      • labels (string[]):用于获取状态的灯光标签数组
  • lifxlan_set_lights_color

    • 设置一个或多个Lifx灯光的颜色
    • 输入:
      • labels (string[]):用于设置颜色的灯光标签数组
      • color (对象):颜色规格
        • hue (数字):色调值(0.0-1.0)
        • saturation (数字):饱和度值(0.0-1.0)
        • brightness (数字):亮度值(0.0-1.0)
        • kelvin (数字,可选):色温,单位为开尔文(1500-9000,默认为3500)
      • duration (数字,可选):转换持续时间(毫秒)
  • lifx_lan_turn_on_lights

    • 打开一个或多个Lifx灯,可选择特定颜色
    • 输入:
      • labels (string[]):要打开的灯光标签数组
      • color (对象,可选):更改颜色时的颜色规格
        • hue (数字,可选):色调值(0.0-1.0)
        • saturation (数字,可选):饱和度值(0.0-1.0)
        • brightness (数字,可选):亮度值(0.0-1.0)
        • kelvin (数字,可选):色温(开尔文)
      • duration (数字,可选):转换持续时间(毫秒)
  • lifx_lan_turn_off_lights

    • 关闭一个或多个Lifx灯
    • 输入:
      • labels (string[]):要关闭的灯光标签数组
      • duration (数字,可选):转换持续时间(毫秒)

发展

先决条件

  • Node.js
  • TypeScript
  • 本地网络上的LIFX灯

从源头构建

  1. 克隆存储库:
git clone https://github.com/simon-duchastel/lifx-lan-mcp.git
cd lifx-lan-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

MCP定义见 index.ts,其中包含LLM可用的所有工具。工具调用的API在 src/ 文件夹。

开发脚本

  • npm run prepare -编译项目(构建 dist/index.js)

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

联系

请随时联系 lifx-lan-mcp@duchastel.com 或通过 打开GitHub问题.

如果你觉得这个项目有用,你可以 给我买杯咖啡.