Token导航 LogoToken导航

MCP Server · 运维云端

DLI Power Switch MCP Server

一个基于Model Context Protocol (MCP)的服务器,用于控制DLI Web电源开关,提供硬件发现、查询状态和执行电源操作(开/关/循环)的功能。

stdio官方级别未说明来源级核验工具 8
物联网Python自动化

快速开始

作者 / 组织
hharte
提供方
hharte

工具数量

8

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

2 个

MCP World

选型结论

DLI Power Switch MCP Server 属于运维云端类 MCP Server,公开资料标注 8 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前先确认权限范围。

分类

运维云端

传输方式

stdio

认证方式

无需认证

部署方式

仅本地运行

安装与配置

安装命令

pip install dli-mcp-server

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 对应的运行时,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 8 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

DLI电源开关MCP服务器

概述

该项目实现了 模型上下文协议(MCP) 允许AI代理控制的服务器 数字记录仪(DLI) Web电源开关该系统提供用于发现硬件、查询插座状态和执行电源操作(开/关/循环)的工具。

关键约束: 该系统与物理硬件交互。执行严格的安全协议,以防止关键基础设施意外断电。

关键文件

  • server.py:主要切入点。包含FastMCP服务器实现、工具定义和使用 power-switch-pro 图书馆。
  • switches_config.json:设备配置的真实来源。定义IP地址、身份验证、出口别名和安全类型(standard, critical, prohibited).
  • requirements.txt:Python依赖关系(power-switch-pro).
  • tests/:服务器逻辑的单元测试。

架构与性能

此服务器专为响应性和安全性而设计:

  • 异步核心: 基于Python构建 asyncio 以高效地处理多个操作。
  • 非阻塞I/O: 与物理硬件的交互(可能很慢)被卸载到后台线程,确保主服务器循环保持响应。
  • 并行发现: 这 get_inventory 该工具同时从所有配置的交换机获取状态,显著降低了具有多个设备的系统中的延迟。

安装

使用pip从PyPI安装此服务器:

pip install dli-mcp-server

使用Gemini CLI(和反重力)进行配置

安装后,使用Gemini CLI(或Antigravity)注册服务器 mcp add 命令。这可确保服务器自动启动。

gemini mcp add dli-mcp-server dli-mcp-server -e DLI_MCP_CONFIG="/path/to/your/config.json"

参数:

  • 第一 dli-mcp-server 是您为此服务器实例指定的名称。
  • 第二 dli-mcp-server 是运行服务器的命令(由提供 pip install).
  • -e DLI_MCP_CONFIG="...":(可选)设置配置文件路径的环境变量。如果省略,则默认为 switches_config.json 在当前目录中。
  • -s user 或 -s project:(可选)设置配置范围。默认为 project.

命令行用法

这 server.py 可以直接从命令行使用脚本来控制电源开关。

inventory

列出所有开关及其插座状态。

python server.py inventory

power_action

在特定插座上执行电源操作(打开、关闭、循环)。

python server.py power_action    [--confirmation YES]
  • switch_id:交换机的别名或IP地址。
  • outlet_id:出口的索引或名称。
  • action: on, off,或 cycle.
  • --confirmation:关键插座需要。

group_power_action

对一组插座执行电源操作。

python server.py group_power_action  

sync_config_from_hardware

从硬件同步插座名称。

python server.py sync_config_from_hardware 

list_outlets

列出给定交换机上的所有插座。

python server.py list_outlets 

add_switch

在配置中添加新的DLI电源开关。如果配置文件不存在,它将自动创建。

python server.py add_switch   
  • ip_address:新交换机的IP地址。
  • username:新交换机的用户名。
  • password:新交换机的密码。

remove_switch

从配置中删除DLI电源开关。

python server.py remove_switch 
  • switch_id:要删除的交换机的别名或IP地址。

update_outlet

更新插座的定义。

python server.py update_outlet   [--name ] [--description ] [--type ]
  • switch_id:交换机的别名或IP地址。
  • outlet_id:插座的索引或名称(例如“调制解调器”或“1”)。
  • --name:门店的新名称。
  • --description:插座的新描述。
  • --type:新型插座(standard, critical,或 prohibited).
类型代理权限行为
standard完全访问可以立即打开、关闭或循环。
critical受限的“关闭”或“循环”操作需要用户明确确认(confirmation="YES").
prohibited禁止进入永不 修改此出口。服务器将引发 PermissionError.

可用工具

1. get_inventory()

  • 目的: 代理人的“眼睛”。首先调用此命令,查看可用的开关和插座及其当前状态(ON/OFF)。
  • 退货: 一个包含所有开关、插座、组及其描述的JSON对象。

2. power_action(switch_id, outlet_id, action, confirmation="NO")

  • 目的: 控制特定的物理插座。
  • 输入:

- switch_id:别名(例如“garage_rack”)或IP。 - outlet_id:名称(例如“调制解调器”)或索引(例如“1”)。 - action:“开”、“关”或“循环”。 - confirmation:只有当用户明确批准了某个危险操作时,才必须设置为“是” critical 出口。

3. group_power_action(target, action)

  • 目的: 控制一组逻辑插座(例如,“重新启动网络堆栈”)。
  • 行为: 按顺序执行。如果 *任何* 该组的成员是 prohibited,整个操作立即中止。

4. sync_config_from_hardware(switch_id)

  • 目的: 更新 switches_config.json 文件中包含设备上找到的实际插座名称。
  • 注: 这不会覆盖安全类型(critical/prohibited)或描述。

5. add_switch(ip_address, username, password)

  • 目的: 在配置中添加新的DLI电源开关。
  • 输入:

- ip_address:新交换机的IP地址。 - username:新交换机的用户名。 - password:新交换机的密码。

6. remove_switch(switch_id)

  • 目的: 从配置中删除DLI电源开关。
  • 输入:

- switch_id:要删除的交换机的别名或IP地址。

7. list_outlets(switch_id)

  • 目的: 列出给定交换机的所有插座及其状态。
  • 输入:

- switch_id:交换机的别名或IP地址。

  • 退货: 插座信息的JSON数组。

8. update_outlet(switch_id, outlet_id, new_name=None, new_description=None, new_type=None)

  • 目的: 更新配置文件中插座的定义,并将新名称写入硬件。
  • 输入:

- switch_id:交换机的别名或IP地址。 - outlet_id:名称或索引(例如“调制解调器”或“1”)。 - new_name (可选):插座的新名称。这会写入配置文件和硬件。 - new_description (可选):插座的新描述。这只会写入配置文件。 - new_type (可选):新型插座(standard, critical,或 prohibited).这只会写入配置文件。

  • 退货: 成功信息。

代理人操作指南

  1. 始终先检查库存: 在假设插座存在或知道其状态之前,运行 get_inventory.
  2. 尊重“禁止”网点: 如果用户要求关闭被禁止的设备(例如“安全DVR”),请解释您不能这样做,因为它在配置中受到限制。
  3. 处理“关键”警告: 如果 power_action 返回“安全锁定”消息,停止并询问用户: *“这是一个关键设备。您确定要关闭它吗?”*。只有当他们说“是”时才能继续。
  4. 使用别名: 更喜欢使用友好的 alias 和 name (例如,“garage_rack”、“Modem”)在与用户通信时通过IP地址和索引。

测试

该项目包括一套单元测试,以确保服务器逻辑正确。测试位于 tests/ 目录。

要运行测试,请先安装测试依赖项:

pip install -r tests/requirements.txt

然后,使用以下命令运行测试:

python tests/test_server.py

这些测试旨在在没有物理DLI电源开关的情况下运行。他们使用mocking来模拟硬件及其行为。

自动化测试

该项目使用GitHub Actions进行持续集成。对每个推送和拉取请求都会自动执行测试 main 支。工作流在以下平台上运行:

  • 操作系统: Windows、Linux(Ubuntu)和macOS。
  • Python版本: 3.10、3.11和3.12。

这确保了跨支持的Python版本的跨平台兼容性和稳定性。

测试覆盖率

要检查测试覆盖率,您可以使用 coverage 包装(包含在 tests/requirements.txt).

运行覆盖率测试并生成报告:

coverage run tests/test_server.py
coverage report -m

该项目旨在实现高测试覆盖率,以确保可靠性。

使用Gemini CLI(和反重力)进行配置

您可以使用以下命令在Gemini CLI(或Antigravity)中轻松注册此MCP服务器 mcp add 命令。这可确保服务器自动启动。

窗户:

gemini mcp add dli-mcp-server python "C:\Path\To\dli-mcp-server\server.py" -e DLI_MCP_CONFIG="C:\Path\To\your\config.json" -s user

Linux/macOS:

gemini mcp add dli-mcp-server python "/path/to/dli-mcp-server/server.py" -e DLI_MCP_CONFIG="/path/to/your/config.json" -s user

参数:

  • dli-mcp-server:您分配给服务器的名称。
  • python "...":启动服务器的命令。确保提供完整的绝对路径 server.py.
  • -e DLI_MCP_CONFIG="...":(可选)设置配置文件路径的环境变量。如果省略,则默认为 switches_config.json 在服务器的目录中。
  • -s user:将配置保存到用户设置(全局),使其在所有项目中都可用。
  • -s project (默认):将配置保存到当前项目的 .gemini/settings.json。如果您希望服务器配置特定于当前工作区,请使用此选项。

配置

默认情况下,服务器使用 switches_config.json 文件在同一目录中。您可以通过设置 DLI_MCP_CONFIG 环境变量到配置文件的路径。

例子:

export DLI_MCP_CONFIG=/path/to/your/custom_config.json
python server.py inventory

这对于在不修改主配置的情况下使用不同配置进行测试特别有用 switches_config.json 文件。

交互示例

用户: “关闭路由器。”

代理人行动:

  1. 呼叫 get_inventory (内部)->看到路由器 critical.
  2. 呼叫 power_action("garage_rack", "Router", "off").
  3. 结果: 返回“安全锁…”。
  4. 代理响应: “路由器被标记为关键设备。您确定要关闭它吗?”

用户: “是的,做吧。”

代理人行动:

  1. 呼叫 power_action("garage_rack", "Router", "off", confirmation="YES").
  2. 结果: “成功…”
  3. 代理响应: “路由器已关闭。”

发展信息

此MCP服务器是使用Gemini CLI和Gemini 3.0型号开发的。

工具与能力

工具数量

8

资源数量

0

提示词数量

0

能力标签

电源管理Python本地部署硬件控制自动化工具物联网

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

看服务状态

查询容器、日志和监控指标,定位异常。

执行部署变更

在权限范围内触发发布、回滚和环境切换。

核对资源用量

汇总用量,找出闲置和超额的部分。

选择建议

值得选的地方

  • 只提供 8 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 运行环境,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在运维云端场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
DLI Power Switch MCP Server

MCP World · 本页

8stdio有2 个2026-05-17
Ui Tars Desktop 8a825770

MCP World

0stdio有1 个2026-05-17
Elie222 MCP

MCP World

0未说明未标注1 个2026-05-17
Arizeai Phoenix MCP

MCP World

0stdio有3 个2026-05-17
Unity MCP 87ee506e

MCP World

42HTTP有2 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

DLI Power Switch MCP Server 怎么安装?

公开资料给出的安装命令是 pip install dli-mcp-server,运行环境为 未标注。装完后按客户端要求写进 MCP 配置,重启客户端生效。

DLI Power Switch MCP Server 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

DLI Power Switch MCP Server 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

DLI Power Switch MCP Server 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

DLI Power Switch MCP Server 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP