mqtt-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MQTT_MCP_DB | No | Path to SQLite database | ~/.local/share/mqtt-mcp/history.db |
| MQTT_MCP_HOST | No | Broker host | localhost |
| MQTT_MCP_PORT | No | Broker port | 1883 |
| MQTT_MCP_TOPICS | No | Comma-separated subscription filters | # |
| MQTT_MCP_PASSWORD | No | Optional password for broker authentication | |
| MQTT_MCP_USERNAME | No | Optional username for broker authentication | |
| MQTT_MCP_MAX_DB_MB | No | Hard cap on DB size in MB, triggers oldest-first deletion | 2048 |
| MQTT_MCP_ALLOW_PUBLISH | No | Enable write mode | false |
| MQTT_MCP_BLOCKED_TOPICS | No | Never published to, even in write mode | |
| MQTT_MCP_RETENTION_TAGE | No | Delete messages older than this many days | 30 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_topicsB | Topic-Inventar: welche Topics gibt es, wie viele Nachrichten, wann zuletzt. pattern: Glob wie 'tele/*' oder '*SENSOR'. seit_stunden schraenkt auf den juengeren Zeitraum ein. |
| get_lastA | Letzter bekannter Wert eines Topics — sofort, ohne auf die naechste Nachricht zu warten. Genau das, was fertige MQTT-MCP-Server nicht koennen: bei einem schlafenden Batteriesensor (Shelly H&T) kaeme die naechste Nachricht erst in Stunden. |
| get_historyB | Verlauf eines Topics mit Zeitstempeln — die Kernfunktion dieses Servers. mit_startschwall=False blendet den retained-Altbestand aus, der direkt nach dem Verbinden ankommt und einen irrefuehrend frischen Zeitstempel traegt. |
| get_treeC | Topic-Baum ab einem Praefix — der Ueberblick wie im MQTT Explorer. |
| find_silentA | Topics, die seit X Stunden NICHT mehr gemeldet haben. Die Frage vom 2026-08-01: 'seit wann meldet dieser Stecker nichts mehr?' (sonoff-4854 war seit dem 02.06. still — ein defekter Zwischenstecker). |
| get_gapsB | Zeitraeume, in denen der Sammler NICHT mit dem Broker verbunden war. Trennt 'Geraet ist still' von 'ich habe nicht zugehoert'. Ohne diese Auskunft sehen beide Faelle in den Daten identisch aus. |
| broker_konflikteA | Topics, die von MEHR ALS EINEM Broker bespielt werden. Der Ownership-Canary fuer den Parallelbetrieb zweier Broker: Die gefaehrliche Lage ist nicht "ein Geraet antwortet nicht", sondern "zwei Systeme schreiben auf dasselbe Topic und keiner merkt es". Verglichen wird ueber ALLE Broker-Datenbanken nebeneinander (jeder Server
hat seit dem 22.08. seine eigene). ⛔ Eine BRIDGE ist kein Konflikt. Laeuft eine Bridge zwischen den Brokern, fuehren beide dieselben Topics — das ist der Normalzustand, nicht die Anomalie. Jedes Doppel-Topic wird deshalb eingeordnet: gespiegelt Bridge belegt (hohe Payload-Gleichheit) wahrscheinlich_gespiegelt Payloads zu einfoermig fuer einen Beweis, aber der Zeitversatz spricht dafuer unabhaengig ⛔ der echte Befund: zwei Schreiber unklar nicht entscheidbar — von Hand ansehen
|
| statusA | Zustand des Servers: Verbindung, Datenbestand, Schreibmodus. |
| publishA | Nachricht senden. Nur bei aktivem Schreibmodus und nicht auf gesperrte Topics. ⚠️ Die Sperrliste ist eine Bremse gegen Fehlgriffe, keine Sicherheitsgrenze. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Most tools have clearly distinct purposes: broker_konflikte, find_silent, get_gaps, get_history, get_last, get_tree, list_topics, publish, and status each target a different query. There is mild overlap between list_topics and get_tree (inventory vs. tree view) and between find_silent and get_gaps (device silent vs. collector disconnected), but the descriptions explicitly distinguish these cases.
Four tools follow a clean get_* pattern (get_gaps, get_history, get_last, get_tree) plus list_topics, but broker_konflikte is a German noun-first name and find_silent uses a different verb style, while publish and status are bare verbs/nouns. All snake_case, but the verb conventions are mixed and languages are inconsistent.
Nine tools is well-scoped for an MQTT broker client, covering query, diagnostics, write, and status without redundancy. Each tool earns its place in the workflow.
The surface covers topic history, latest value, tree/list inventory, silence and gap diagnostics, conflict detection, publish, and status — a solid read/diagnostic/write lifecycle. Minor gaps like retained-message management or subscription/streaming operations exist but are not essential.