使用说明

项目简介

'mqtt-mcp' 是一个轻量级的Model Context Protocol (MCP) 服务器,旨在安全、标准化地连接大型语言模型 (LLM) 智能体与 MQTT 设备。它允许LLM智能体监控实时传感器数据、执行设备操作和编排复杂的自动化任务,特别适用于楼宇自动化 (BAS)、工业控制系统 (ICS) 和智能家居等场景。通过将MQTT操作抽象为MCP的资源和工具,它极大地简化了LLM与物联网设备的集成过程。

主要功能点

  • MQTT消息接收: LLM智能体可以请求从指定MQTT主题接收消息,支持设置超时,从而获取实时的传感器数据或设备状态更新。
  • MQTT消息发布: LLM智能体可以向指定MQTT主题发布消息,实现远程设备控制、触发自动化流程或发送指令。
  • 上下文管理: 利用MCP的资源(Resources)、工具(Tools)和Prompt模板,'mqtt-mcp' 以标准化方式向LLM提供MQTT相关的上下文信息和操作能力,使得LLM能够理解并操作物联网环境。
  • 会话与认证: 服务器支持会话管理和可选的AuthKit认证提供者,确保LLM与MQTT设备之间交互的安全性和可控性。
  • 多传输协议: 默认通过Streamable HTTP端点提供服务,方便各种MCP客户端进行连接。
  • 自动化任务编排: 结合LLM的推理能力,可以通过MQTT工具实现复杂的自动化任务,例如根据传感器数据自动调整空调,或在特定事件发生时触发警报。

安装步骤

推荐使用 'uv' 或 'pip' 将 'mqtt-mcp' 安装到您的Python项目中。

# 使用 uv (推荐)
uv add mqtt-mcp

# 或者使用 pip
pip install mqtt-mcp

服务器配置

MCP客户端需要以下JSON配置信息来连接到 'mqtt-mcp' 服务器。服务器默认将运行在 'http://127.0.0.1:8000/mcp/'。这些配置应在您的MCP客户端应用中进行设置,而非直接在 'mqtt-mcp' 服务器代码中修改。

{
  "server_label": "MQTT上下文服务器",
  "server_url": "http://127.0.0.1:8000/mcp/",
  "command": "mqtt-mcp",
  "args": ["run"],
  "allowed_tools": ["receive_message", "publish_message"],
  "require_approval": "never"
}

配置参数注释:

  • 'server_label': 在MCP客户端界面中显示的服务器名称,例如 "MQTT上下文服务器"。
  • 'server_url': MCP服务器监听的HTTP端点地址,通常是 'http://127.0.0.1:8000/mcp/'。
  • 'command': 启动 'mqtt-mcp' 服务器的可执行命令,通常是 'mqtt-mcp'。
  • 'args': 传递给 'command' 的参数列表,例如 '["run"]' 命令用于启动服务器。
  • 'allowed_tools': 一个字符串数组,列出允许LLM智能体通过此MCP服务器调用的工具名称。在此项目中,主要包括 'receive_message'(接收MQTT消息)和 'publish_message'(发布MQTT消息)。
  • 'require_approval': 控制LLM智能体调用工具时是否需要用户批准。可选值为 '"never"'(从不批准)、'"always"'(总是批准)或 '"first"'(首次调用需要批准)。

基本使用方法

1. 启动MQTT MCP服务器

在您的终端中运行以下命令以启动 'mqtt-mcp' 服务器:

mqtt-mcp

服务器默认将在 'http://127.0.0.1:8000/mcp/' 监听传入的MCP请求。

2. 配置MQTT连接(可选)

您可以选择通过环境变量或在工作目录下的 '.env' 文件中配置默认的MQTT代理连接信息,以便服务器在操作时使用:

使用环境变量:

export MQTT_MCP_MQTT__HOST=您的MQTT主机IP
export MQTT_MCP_MQTT__PORT=您的MQTT端口
export MQTT_MCP_MQTT__USERNAME=您的MQTT用户名 # 如果需要认证
export MQTT_MCP_MQTT__PASSWORD=您的MQTT密码 # 如果需要认证

使用 '.env' 文件:

在项目根目录创建或编辑 '.env' 文件,添加以下内容:

# .env
mqtt_mcp_mqtt__host=您的MQTT主机IP
mqtt_mcp_mqtt__port=您的MQTT端口
mqtt_mcp_mqtt__username=您的MQTT用户名
mqtt_mcp_mqtt__password=您的MQTT密码

3. 连接MCP Inspector进行验证

为了确认服务器已成功启动并探索其提供的资源和工具,您可以安装并运行 MCP Inspector 工具。连接到服务器地址 'http://127.0.0.1:8000/mcp/',并确保选择 'Streamable HTTP' 作为传输协议。

npx @modelcontextprotocol/inspector

Inspector将显示服务器提供的 'receive_message' 和 'publish_message' 工具以及相关的Prompt模板。

4. 与LLM智能体集成

在您的LLM智能体应用中(例如基于OpenAI Agents SDK, OpenAI Python Library, PydanticAI Agent Framework等),按照您所使用的LLM框架的MCP客户端集成指南,利用上述“服务器配置”信息来连接并使用 'mqtt-mcp' 提供的功能。

LLM智能体可以通过自然语言指令来调用这些工具,例如:

  • 发布消息: 'Publish {"foo":"bar"} to topic "devices/foo" on 127.0.0.1:1883.'
  • 接收消息: 'Receive a message from topic "devices/bar", waiting up to 30 seconds.'

'mqtt-mcp' 将会解析这些指令,执行相应的MQTT操作,并将结果返回给LLM智能体。

信息

分类

通信与社交