模型上下文协议服务器

Enapter MCP服务器是一个模型上下文协议服务器,提供与Enapter EMS的无缝集成,使AI助手和其他MCP客户端能够与Enapter站点、设备和遥测数据进行交互。

  • by Enapter
  • Python
  • 混合部署
  • 更新于
在 GitHub 查看 Enapter/mcp-server

使用说明

启用MCP服务器

一个模型上下文协议(MCP)服务器,提供与 这个 Enapter EMS. 该服务器使AI助手和其他MCP客户端能够与 Enapter站点、设备和遥测数据。

连接您的AI应用程序

Enapter MCP服务器可作为公共托管服务在 https://mcp.enapter.com/mcp。它使用流式HTTP传输和OAuth 2.0 用于身份验证。

有关如何连接首选AI客户端的具体说明,请 请参阅以下指南:

自我寄宿

如果您更喜欢运行自己的实例,可以使用以下命令自托管服务器 Docker:

docker run --rm --name enapter-mcp-server \
  -p 8000:8000 \
  enapter/mcp-server:v1.10.0

可以使用环境变量和命令行配置服务器 论据。

可用工具

服务器公开了以下用于与Enapter EMS交互的工具:

工具 描述 访问 默认值
search_sites 在所有具有名称和时区正则表达式过滤的网站中搜索 只读 已启用
search_devices 按站点、类型和名称搜索设备正则表达式过滤 只读 已启用
search_command_executions 搜索命令执行历史记录 只读 已启用
read_blueprint 访问设备蓝图部分(属性、遥测、警报) 只读 已启用
get_historical_telemetry 以可配置的粒度检索时间序列遥测 只读 已启用
search_rules 在特定站点内搜索自动化规则 只读 已启用
read_rule 读取规则Lua脚本的分页行 只读 已启用
execute_command 在设备上执行命令 读写 禁用
create_rule 创建禁用的MCP托管自动化规则 读写 禁用
edit_rule 对禁用的MCP管理规则应用内容匹配编辑 读写 禁用
delete_rule 删除已禁用的MCP管理自动化规则 读写 已禁用

使用示例

以下是如何使用AI助手与Enapter设备交互的现实示例:

示例1:诊断故障排除

用户提示:

我们的一个逆变器刚刚下线。你能检查一下它的状态并告诉我吗 活动警报是什么意思?

发生了什么:

  • 服务器找到特定的逆变器设备
  • 检索其当前连接状态和活动警报
  • 读取设备蓝图,将警报代码转换为人类可读的描述
  • 向用户呈现问题摘要

示例2:历史分析和绩效

用户提示:

主暖通空调的平均功耗和温度是多少 过去7天的系统?

发生了什么:

  • 服务器定位暖通空调系统设备
  • 检查其蓝图,以确定功耗和温度的正确遥测指标名称
  • 获取请求时间段的历史遥测数据
  • 计算并向用户显示平均值

示例3:审核命令执行

用户提示:

检查今天早上是否有人试图打开水泵。有任何 执行过程中出现错误?

发生了什么:

  • 服务器定位特定的水泵设备
  • 读取设备蓝图以找到“打开”设备的确切命令名称
  • 在命令执行历史记录中搜索今天上午执行的特定命令
  • 检索执行状态和任何相关的错误消息
  • 报告命令是成功还是失败

示例4:审核自动化规则

用户提示:

你能检查Alpha站点上运行的自动化规则吗?我需要核实一下 当太阳能过剩时自动启动电解槽的逻辑 可用。

发生了什么:

  • 服务器使用以下命令在指定站点内搜索规则 search_rules
  • 根据其名称/slug标识相关规则
  • 使用以下命令检索规则的Lua脚本 read_rule
  • 分析逻辑并确认触发电解槽的确切阈值和条件

示例5:执行命令(需要人工确认)

⚠️ execute_command 是 破坏性的 --它作用于真实的物理硬件 (泵、电解槽、阀门、逆变器)。它是 默认情况下禁用.启用 它与 --command-execution-enabled 在命令行上或通过设置 ENAPTER_COMMAND_EXECUTION_ENABLED=1.

用户提示:

阿尔法工厂的电解槽已经运行了很长时间。请 为我重新启动它。

发生了什么:

  • 服务器使用以下命令定位电解槽设备 search_devices
  • 读取设备蓝图 read_blueprint(section="commands") 到 发现 reboot 命令并检查它是否声明了 confirmation 块
  • 这 reboot 命令声明 confirmation 带着一个 title 和 description (例如。 “重新启动电解槽” / “这将重新启动 设备和中断生产。"),所以助理 将这些呈现给 人类,等待明确的批准 --它不会主动采取行动
  • 只有在人类确认后,助理才会打电话 execute_command 与 human_confirmed_this_action=True
  • 设备运行命令,工具返回结果 CommandExecution,谁 state 现场报告结果 (success/error/timeout/unsync)
  • 返回的执行 id 稍后可以通过以下方式引用或审核 search_command_executions

示例6:编写和编辑MCP管理自动化规则

⚠️ create_rule, edit_rule,以及 delete_rule 是 破坏性的 --他们 修改可以在物理能源硬件上执行命令的自动化。他们 是 默认情况下禁用。使用以下方式启用它们 --rule-editing-enabled 在命令行上或通过设置 ENAPTER_RULE_EDITING_ENABLED=1.

MCP管理规则是自动化规则,其生命周期通过 MCP服务器。他们遵循严格的工作流程:

  1. Slug前缀。 MCP管理的规则必须有一个以 保留前缀 mcp- (区分大小写,字节精确)。前缀是 所有权边界:助手只能修改明确标记为的规则 MCP管理。
  2. 已创建禁用。 create_rule 总是创建禁用的规则,因此 助手无法发布新的实时自动化。一个人在评论规则 启用UI,并在准备就绪时启用它。
  3. 仅禁用突变。 edit_rule 和 delete_rule 拒绝手术 启用规则,即使slug具有 mcp- 前缀。如果人类能够 MCP管理的规则,稍后希望助手编辑或删除它 人类必须先禁用它,询问助手,查看结果,然后 在Enapter UI中重新启用。这保留了对实时自动化的责任 随着人类的变化。
  4. 没有启用工具。 服务器不公开启用操作。启用 是Enapter UI中人类做出的决定。

用户提示:

在Alpha站点创建一条规则,当电池SOC为“电池电量低”时记录 降至20%以下。

发生了什么:

  • 助手创建规则 create_rule(site_id="...", slug="mcp-battery-low", script_code="..."). 该规则被创建为禁用,并使用运行时版本v3。
  • 人类在Enapter UI中查看规则并启用它。

用户提示(稍后):

将电池电量低规则中的阈值从20%更改为15%。

发生了什么:

  • 助理打来电话 read_rule 以获取当前脚本。
  • 它标识要更改的确切代码段并调用 edit_rule(rule_id="...", old_string="battery_soc < 20", new_string="battery_soc < 15"). 只有当旧字符串在脚本中恰好出现一次时,编辑才会成功 并且该规则当前被禁用。
  • 人工检查更改并在Enapter UI中重新启用规则。

支持

对于问题、疑问或贡献,请:

隐私政策

有关我们如何处理数据的信息,请参阅 Enapter隐私 政策.


制作于❤️ 通过 珐琅器