使用说明
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、身份验证)
