项目简介

这是一个基于 Model Context Protocol (MCP) 开发的服务器应用,旨在通过标准的MCP接口,让大型语言模型(LLM)客户端能够方便地控制 Dynatrace UFO 灯光设备。它抽象了底层的设备API,提供了结构化的工具和资源供LLM使用。

主要功能点

  • 统一灯光配置: 通过单个命令配置UFO的顶环、底环和Logo灯光。
  • 执行原始API: 允许直接向UFO设备发送原始API查询字符串。
  • 设置光环图案: 精细控制顶环和底环的LED段、背景色、旋转和渐变效果。
  • 控制Logo灯: 打开、关闭或设置UFO Logo灯的颜色。
  • 效果管理: 播放和停止预设的灯光效果(包括内置效果和自定义效果)。
  • 获取LED状态: 查看服务器维护的UFO当前LED状态(颜色、亮度、Logo、当前效果)。
  • 列出效果: 获取所有可用的灯光效果列表及其描述。
  • 获取设备状态: 查看UFO设备的基本状态信息。

安装步骤

该服务器使用 Go 语言编写。你需要安装 Go 环境来构建项目。

  1. 克隆仓库:
    git clone https://github.com/rhoegg/ufo-mcp-server.git
    cd ufo-mcp-server
  2. 构建项目:
    go build -o ufo-mcp ./cmd/server
    这将生成一个名为 'ufo-mcp' 的可执行文件。

服务器配置

MCP 服务器需要被兼容的MCP客户端(如Claude Desktop)配置才能连接和使用。配置信息通常包含服务器的名称、启动命令及参数。

你需要为你的MCP客户端提供以下信息:

  • 服务器名称 (Server Name): 'ufo'
  • 启动命令 (Command): 'ufo-mcp' 可执行文件的绝对路径。例如:'/home/user/ufo-mcp-server/ufo-mcp'
  • 启动参数 (Args): 启动服务器时需要传递的参数列表。关键参数包括:
    • '--transport <类型>' 或 '-t <类型>':指定通信协议,可以是 'stdio' (标准输入输出) 或 'http'。推荐使用 'stdio'。
    • '--port <端口号>':如果使用 'http' 协议,指定服务器监听的端口(默认为 '8080')。
    • '--ufo-ip <IP地址或主机名>':指定你的 Dynatrace UFO 设备的 IP 地址或主机名。你也可以通过设置 'UFO_IP' 环境变量来指定。
    • '--effects-file <文件路径>':指定存储灯光效果配置的 JSON 文件路径(默认为 '/data/effects.json')。
  • 环境变量 (Env): 可选,可以通过环境变量 'UFO_IP' 设置UFO设备IP。

示例配置说明 (非代码):

如果你将 'ufo-mcp' 可执行文件放在 '/home/user/bin/' 目录下,UFO设备IP是 '192.168.1.100',并且希望使用 stdio 协议,那么你的MCP客户端配置中需要指定:

  • 服务器名称为 'ufo'
  • 命令为 '/home/user/bin/ufo-mcp'
  • 参数列表为 '["--transport", "stdio", "--ufo-ip", "192.168.1.100"]'

如果使用 http 协议,监听 '8080' 端口,UFO设备IP仍是 '192.168.1.100',那么参数列表可能是 '["--transport", "http", "--port", "8080", "--ufo-ip", "192.168.1.100"]'。

基本使用方法

配置完成后,你的LLM客户端就可以通过这个MCP服务器与UFO设备交互了。你可以尝试使用自然语言向LLM提出请求,例如:

  • “将UFO的顶环变成红色。”
  • “显示UFO当前的灯光状态。”
  • “有哪些可用的灯光效果?”
  • “播放叫做‘policeLights’的警灯效果。”
  • “停止当前正在播放的效果。”
  • “把Logo灯打开并设置成蓝色。”
  • “将UFO亮度调整到50%。”

LLM客户端会根据你提出的请求,调用MCP服务器提供的相应工具(Tool)或读取相应的资源(Resource)来与UFO设备进行交互。

信息

分类

桌面与硬件