OMNI-MQTT-MCP
Enables AI assistants to publish and subscribe to MQTT topics with configurable transport options (STDIO, Streamable HTTP, SSE), supporting both local development and web deployments with flexible broker authentication.
README
OMNI-MQTT-MCP
MQTT MCP Server with configurable transport options via CLI: STDIO (default), Streamable HTTP (recommended for web), and SSE (deprecated).
๐ Quick Start
# 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 Options
Choose your transport with the --transport CLI argument:
1. STDIO Transport (Default) โ
python mqtt_mcp_server.py --transport stdio
# or simply:
python mqtt_mcp_server.py
- Best for: Local development, Claude Desktop integration
- Pros: Simple, secure, works with MCP clients like Claude Desktop
- Cons: Local only, no remote access
2. Streamable HTTP (Recommended for 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
- Best for: Web deployments, remote access, microservices
- Default URL:
http://127.0.0.1:8000/mcp - Pros: Modern, efficient, supports multiple clients, easy deployment
- Cons: Requires network setup, security considerations
3. SSE (Server-Sent Events) โ ๏ธ Deprecated
python mqtt_mcp_server.py --transport sse
- Best for: Legacy deployments (not recommended for new projects)
- Default URL:
http://127.0.0.1:8000/sse - Status: Being phased out in favor of Streamable HTTP
๐ Available Tools
mqtt_publish: Publish messages to MQTT topicsmqtt_subscribe: Subscribe to MQTT topics and receive messages
โ๏ธ Configuration Options
MQTT Configuration
python mqtt_mcp_server.py \
--broker localhost \
--port 1883 \
--client-id mcp-mqtt-client \
--username your_username \
--password your_password
Transport Configuration
python mqtt_mcp_server.py \
--transport streamable-http \
--host 127.0.0.1 \
--http-port 8000 \
--path /mcp
All Options
python mqtt_mcp_server.py --help
Environment Variables
You can also use environment variables for MQTT settings:
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
๐งช Testing
Test HTTP Server
# Terminal 1: Start server
python mqtt_mcp_server.py --transport streamable-http
# Terminal 2: Test it
python test_http_client.py
Test with Claude Desktop
Add to your Claude Desktop MCP configuration:
{
"mcpServers": {
"mqtt": {
"command": "python",
"args": ["/path/to/mqtt_mcp_server.py"],
"env": {
"MQTT_BROKER_ADDRESS": "localhost",
"MQTT_PORT": "1883"
}
}
}
}
๐ง Development
Using the 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
๐ Examples
Local Development
# Default STDIO for Claude Desktop
python mqtt_mcp_server.py
Web Deployment
# 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
Production with Custom 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
๐ค Which Transport Should I Choose?
| Use Case | Command | Why? |
|---|---|---|
| Local development | python mqtt_mcp_server.py |
Simple, secure, works with Claude Desktop |
| Web deployment | python mqtt_mcp_server.py --transport streamable-http |
Modern, efficient, easy to deploy |
| Remote AI agents | python mqtt_mcp_server.py --transport streamable-http --host 0.0.0.0 |
Supports authentication, scalable |
| Legacy systems | python mqtt_mcp_server.py --transport sse |
Only if you're already using SSE |
๐ณ Docker with Ngrok
Run the server inside Docker and automatically expose it with an ngrok tunnel.
Build
docker build -t mqtt-mcp-ngrok .
Run
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
The container exposes the MCP server via ngrok. Pass environment variables to configure the MQTT broker and server transport. Check the container logs to discover the public URL.
๐ Learn More
๐ Security Notes
- STDIO: Runs locally, inherently secure
- HTTP/SSE: Consider adding authentication for production deployments
- MQTT: Configure MQTT broker security (TLS, authentication)
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.
