MQTT MCP服务器

一个支持通过CLI配置传输选项的MQTT MCP服务器,适用于本地开发、Web部署和远程访问。

  • by Omniscience-Labs
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sub-arjun/omni-mqtt-mcp

使用说明

OMNI-MQTT-MCP

MQTT MCP服务器,可通过CLI配置传输选项: 工作室 (默认), 流式HTTP (推荐用于网络),以及 上海证券交易所 (已弃用)。

🚀 快速开始

# Install dependencies
pip install -r requirements.txt

# Run with STDIO (default - for local development)
python mqtt_mcp_server.py

# Run with Streamable HTTP (recommended for web)
python mqtt_mcp_server.py --transport streamable-http

# Run with SSE (deprecated)
python mqtt_mcp_server.py --transport sse

📋 运输选项

选择您的交通工具 --transport CLI参数:

1. STDIO传输 (默认)✅

python mqtt_mcp_server.py --transport stdio
# or simply:
python mqtt_mcp_server.py
  • 最适合:本地开发,Claude Desktop集成
  • 优点:简单、安全,可与Claude Desktop等MCP客户端配合使用
  • 缺点:仅限本地,无远程访问

2. 流式HTTP (推荐用于Web)🌐

python mqtt_mcp_server.py --transport streamable-http
python mqtt_mcp_server.py --transport streamable-http --host 0.0.0.0 --http-port 9000
  • 最适合:Web部署、远程访问、微服务
  • 默认URL: http://127.0.0.1:8000/mcp
  • 优点:现代、高效、支持多个客户端、易于部署
  • 缺点:需要网络设置、安全考虑

3. SSE(服务器发送事件) ⚠️ 已弃用

python mqtt_mcp_server.py --transport sse
  • 最适合:传统部署(不建议用于新项目)
  • 默认URL: http://127.0.0.1:8000/sse
  • 状态:逐步淘汰,转而支持流式HTTP

🛠 可用工具

  • mqtt_publish:将消息发布到MQTT主题
  • mqtt_subscribe:订阅MQTT主题并接收消息

⚙️ 配置选项

MQTT配置

python mqtt_mcp_server.py \
  --broker localhost \
  --port 1883 \
  --client-id mcp-mqtt-client \
  --username your_username \
  --password your_password

传输配置

python mqtt_mcp_server.py \
  --transport streamable-http \
  --host 127.0.0.1 \
  --http-port 8000 \
  --path /mcp

所有选项

python mqtt_mcp_server.py --help

环境变量

您还可以将环境变量用于MQTT设置:

export MQTT_BROKER_ADDRESS=localhost
export MQTT_PORT=1883
export MQTT_CLIENT_ID=mcp-mqtt-client
export MQTT_USERNAME=your_username
export MQTT_PASSWORD=your_password

python mqtt_mcp_server.py --transport streamable-http

🧪 测试

测试HTTP服务器

# Terminal 1: Start server
python mqtt_mcp_server.py --transport streamable-http

# Terminal 2: Test it
python test_http_client.py

使用Claude Desktop进行测试

添加到您的Claude Desktop MCP配置中:

{
  "mcpServers": {
    "mqtt": {
      "command": "python",
      "args": ["/path/to/mqtt_mcp_server.py"],
      "env": {
        "MQTT_BROKER_ADDRESS": "localhost",
        "MQTT_PORT": "1883"
      }
    }
  }
}

🔧 发展

使用MCP CLI

# Run in development mode with MCP Inspector
mcp dev mqtt_mcp_server.py

# Run with specific transport via MCP CLI
mcp run mqtt_mcp_server.py -- --transport streamable-http --http-port 9000

📚 例子

地方发展

# Default STDIO for Claude Desktop
python mqtt_mcp_server.py

Web部署

# HTTP server on port 8000
python mqtt_mcp_server.py --transport streamable-http

# HTTP server on custom port and host
python mqtt_mcp_server.py --transport streamable-http --host 0.0.0.0 --http-port 9000

# Custom path
python mqtt_mcp_server.py --transport streamable-http --path /api/mcp

使用自定义MQTT进行生产

python mqtt_mcp_server.py \
  --transport streamable-http \
  --broker mqtt.example.com \
  --port 8883 \
  --username prod_user \
  --password secret123 \
  --host 0.0.0.0 \
  --http-port 80

🤔 我应该选择哪种交通工具?

用例 命令 为什么?
地方发展 python mqtt_mcp_server.py 简单、安全,可与Claude Desktop配合使用
Web部署 python mqtt_mcp_server.py --transport streamable-http 现代、高效、易于部署
远程AI代理 python mqtt_mcp_server.py --transport streamable-http --host 0.0.0.0 支持身份验证,可扩展
遗留系统 python mqtt_mcp_server.py --transport sse 仅当您已经在使用SSE时

🐳 Docker与Ngrok

在Docker中运行服务器,并使用ngrok隧道自动公开它。

构建

docker build -t mqtt-mcp-ngrok .

跑

docker run -d \
  -p 8000:8000 \
  -e NGROK_AUTHTOKEN=<YOUR_TOKEN> \
  -e TRANSPORT=sse \
  -e FASTMCP_PORT=8000 \
  -e MQTT_BROKER_ADDRESS=mqtt.example.com \
  -e MQTT_PORT=8883 \
  -e MQTT_CLIENT_ID=my-client \
  -e MQTT_USERNAME=prod_user \
  -e MQTT_PASSWORD=secret123 \
  mqtt-mcp-ngrok

容器通过ngrok公开MCP服务器。将环境变量传递给 配置MQTT代理和服务器传输。检查容器日志 发现公共URL。

📚 了解更多

🔒 安全说明

  • 工作室:本地运行,固有安全
  • HTTP/SSE:考虑为生产部署添加身份验证
  • 消息队列遥测传输:配置MQTT代理安全(TLS、身份验证)