MQTT PLC服务器

一个通过MQTT通信使AI助手能够发现和监控工业PLC的模型上下文协议(MCP)服务器,适用于工业自动化监控、物联网数据分析和SCADA系统集成。

  • by Manusevl
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 manusevl/mcp-mqtt-plc

使用说明

MCP MQTT PLC服务器

一种模型上下文协议(MCP)服务器,使AI助手能够通过MQTT通信发现和监控工业PLC。非常适合工业自动化监控、物联网数据分析和SCADA系统集成。

🚀 快速安装

npm install -g mcp-mqtt-plc

✨ 特性

  • 🔍 主题发现:自动发现所有可用的MQTT主题
  • 📊 详细数据检索:获取有关特定主题的全面信息
  • 🤖 人工智能集成:原生支持VS Code MCP和Claude Desktop
  • ⚡ 自动启动:服务器在需要时自动启动-无后台进程
  • 🔧 可配置的:易于基于环境的配置
  • 🛡️ 安全:支持经过身份验证的MQTT连接
  • 🔒 只读的:无控制命令的安全监控界面

📋 可用工具

  1. search_mqtt_topics -发现并列出所有可用的MQTT主题

    • 返回所有主题的概述,包括消息计数和示例数据
    • 无需参数
    • 首先使用它来了解可用的数据
  2. get_topic_details -获取特定主题的详细信息

    • 需要 topicPattern 参数(精确名称或部分匹配)
    • 返回完整的数据有效载荷和元数据
    • 支持模式匹配以实现灵活的主题发现

🛠️ 设置

VS代码(原生MCP)

  1. 全局安装:

    npm install -g mcp-mqtt-plc
    
  2. 添加到VS代码设置.json:

{ “服务器”:{ “mcp-mqtt plc”:{ “命令”:“mcp-mqtt plc”, “args”:[], “env”:{ “MQTT_BROKER_URL”:“您的MQTTURL”, “MQTT_CLIENT_ID”:“vscode mcp客户端”, “MQTT_USERNAME”:“您的用户”, “MQTT_PASSWORD”:“您的密码”, } } } }


### For Claude Desktop

1. **Install globally:**
```bash
npm install -g mcp-mqtt-plc
  1. 配置Claude桌面 (%APPDATA%\Claude\claude_desktop_config.json):

{ “mcpServers”:{ “mcp-mqtt plc”:{ “命令”:“mcp-mqtt plc”, “args”:[], “env”:{ “MQTT_BROKER_URL”:“您的URL”, “MQTT_CLIENT_ID”:“vscode mcp客户端”, “MQTT_USERNAME”:“您的用户”, “MQTT_PASSWORD”:“您的密码” } } } }


## ⚙️ Configuration

Configure via environment variables:

| Variable | Default | Description |
|----------|---------|-------------|
| `MQTT_BROKER_URL` | `mqtt://localhost:1883` | MQTT broker connection URL |
| `MQTT_CLIENT_ID` | `mcp-plc-server` | MQTT client identifier |
| `MQTT_USERNAME` | - | MQTT username (optional) |
| `MQTT_PASSWORD` | - | MQTT password (optional) |
| `MQTT_PLC_DATA_TOPIC` | `plc/data` | Default PLC data topic |
| `MQTT_PLC_COMMANDS_TOPIC` | `plc/commands` | Default PLC command topic |

## 🎯 Usage Examples

### Discovery Workflow

用户:“有哪些行业数据?” → AI调用search_mqtt_topics() → 显示:“工厂/温度”、“plc/电机”、“传感器/压力”

用户:“现在的温度是多少?”
→ AI调用get_topic_details(“温度”) → 返回:{“温度”:72.5,“单位”:“°F”,“时间戳”:“…”}


### Pattern Matching

get_topic_details(“电动机”)#查找包含“电动机”的主题 get_topic_details(“plc/data”)#精确的主题匹配 get_topic_details(“temp”)#查找与温度相关的主题


## 🧪 Development & Testing

### NPM Scripts
- `npm run build` - Build TypeScript to JavaScript  
- `npm run start` - Start the MCP server
- `npm run dev` - Build and start in one command
- `npm run watch` - Build in watch mode
- `npm run test-mqtt` - Test MQTT connection
- `npm run mock-plc` - Start mock PLC for testing

### Local Development
1. Clone the repository
2. Install dependencies: `npm install`
3. Create `.env` file with your MQTT configuration
4. Build: `npm run build`
5. Test: `npm run test-mqtt`

### Testing with Mock PLC
```bash
# Terminal 1: Start mock PLC
npm run mock-plc

# Terminal 2: Test the server
npm run test-mqtt

🏭 工业应用案例

  • 工厂监控:实时生产数据分析
  • SCADA集成:将人工智能助手连接到现有的SCADA系统
  • 预测性维护:传感器数据趋势的人工智能分析
  • 质量控制:生产参数的自动监测
  • 能源管理:智能分析功耗数据
  • 安全监测:实时警报分析和响应

🛡️ 安全与安保

  • 只读接口:无控制命令-仅监控
  • 安全连接:支持经过身份验证的MQTT代理
  • 无数据存储:无数据持久性的实时监控
  • 独立执行:在受控MCP环境中运行

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature-name
  3. 进行更改并添加测试
  4. 构建和测试: npm run build && npm run test-mqtt
  5. 承诺: git commit -am 'Add feature'
  6. 推: git push origin feature-name
  7. 创建拉取请求

📄 许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。


非常适合使用AI助手安全、智能地监控工业MQTT数据! 🏭🤖