Skip to main content
Glama

trmm-mcp

Ein schreibgeschützter MCP-Server, der eine Tactical RMM-Instanz als Agent-Tools bereitstellt, sodass ein LLM Geräte-, Client- und Auditdaten sammeln kann – ohne die Möglichkeit, irgendetwas zu ändern.

  • Von Natur aus schreibgeschützt. Es sind keine Tools für Skriptausführung, Befehlsausführung, Neustart, Installation, Bearbeitung, Erstellung oder Löschung implementiert. Selbst wenn der API-Schlüssel schreibfähig wäre, ist der Schadensradius null. Kombinieren Sie es trotzdem mit einem schreibgeschützten Dienstbenutzer (Defense in Depth).

  • Python + FastMCP. Zwei Transporte aus einer Codebasis: stdio für die lokale Verwendung unter Ihrem MCP-Client und Streamable HTTP (mit gemeinsamer Bearer-Token-Authentifizierung) für einen gemeinsamen Remote-Server, mit dem sich das gesamte Team verbindet – siehe Remote-Bereitstellung.

  • Die Konfiguration erfolgt nur über Umgebungsvariablen – keine Geheimnisse im Code. Beim Start wird schnell abgebrochen, wenn erforderliche Variablen fehlen.

Tools

Alle Tools haben readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true, geben strukturierte Inhalte mit einem Ausgabeschema zurück und unterstützen Paginierung, wo zutreffend.

Tool

Was es tut

trmm_list_clients

Alle Clients/Mandanten (mit optionalen eingebetteten Standortzusammenfassungen).

trmm_list_sites

Standorte, nach Client filterbar.

trmm_list_agents

Agenten/Geräte mit Zusammenfassungsfeldern; filterbar nach Client/Standort/Typ/Plattform/Status/Hostname.

trmm_get_agent

Vollständige Details für einen Agenten (OS, Hardware, Status, Prüfungszusammenfassung); verbose fügt rohe Dienste + WMI hinzu.

trmm_get_agent_checks

Prüfungsergebnisse (CPU/Speicher/Disk/Ping/Dienst/Skript/Ereignis) mit Bestanden/Nicht bestanden-Status.

trmm_list_agent_history

Befehls-/Skript-/Aufgabenausführungsverlauf für einen Agenten (neueste zuerst).

trmm_search_audit_log

Auditprotokoll nach Agent/Client/Benutzer/Aktion/Objekttyp/Zeitbereich abfragen.

trmm_list_pending_actions

Wartende Neustarts/Updates/Skripte für einen oder alle Agenten.

trmm_get_agent_software

Installierte Software-Inventar für einen Agenten.

trmm_get_agent_winupdates

Windows-Update-Einträge, die für einen Agenten bekannt sind.

trmm_server_status

Serverzustand/Version/Zähler (erfordert TRMM_MON_TOKEN).

Siehe docs/API_CONTRACT.md für die genauen Endpunkte und die Audit-Log-Nutzlast.

Related MCP server: KVMFleet MCP Server

Konfiguration

Variable

Erforderlich

Standard

Beschreibung

TRMM_API_URL

API-Basis-URL, die api.-Subdomain, Schema enthalten, kein abschließender Schrägstrich (z. B. https://api.example.com).

TRMM_API_KEY

X-API-KEY-Wert, gebunden an einen schreibgeschützten Benutzer.

TRMM_MON_TOKEN

(nicht gesetzt)

Überwachungstoken nur für trmm_server_status. Getrennt vom API-Schlüssel.

TRMM_TIMEOUT

30

Zeitlimit pro Anfrage (Sekunden).

TRMM_VERIFY_SSL

true

Setzen Sie false nur für selbstsignierte Zertifikate.

TRMM_MAX_RETRIES

2

Wiederholungen bei vorübergehenden 5xx-/Netzwerkfehlern.

Erhalten Sie einen API-Schlüssel in TRMM: Einstellungen → Globale Einstellungen → API-Schlüssel (wählen Sie Ihren schreibgeschützten Dienstbenutzer). Der Schlüssel umgeht 2FA und erbt die Rollenberechtigungen dieses Benutzers.

Installation

Erfordert Python 3.10+.

cd tactical-rmm-mcp
python -m venv .venv
# Windows:  .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt

(Oder pip install -e ., um das Konsolenskript trmm-mcp zu erhalten.)

Ausführen

Der Server spricht MCP über stdio, daher wird er normalerweise von Ihrem MCP-Client gestartet. Um ihn manuell auszuführen (er wartet auf einen MCP-Client auf stdin):

# set env first, then:
python -m trmm_mcp
# or
python server.py

Wenn TRMM_API_URL/TRMM_API_KEY fehlen, gibt er eine klare Fehlermeldung auf stderr aus und beendet sich mit einem Nicht-Null-Exit-Code.

Bei einem MCP-Client registrieren (stdio)

Claude Code — Projekt .mcp.json

Erstellen Sie .mcp.json in Ihrem Projekt (verwenden Sie den absoluten Pfad zu server.py und das Python Ihrer venv, damit Abhängigkeiten aufgelöst werden):

{
  "mcpServers": {
    "trmm": {
      "command": "C:\\Users\\admin\\your-workspace\\tactical-rmm-mcp\\.venv\\Scripts\\python.exe",
      "args": ["C:\\Users\\admin\\your-workspace\\tactical-rmm-mcp\\server.py"],
      "env": {
        "TRMM_API_URL": "https://api.yourdomain.com",
        "TRMM_API_KEY": "your-readonly-key",
        "TRMM_MON_TOKEN": "optional-mon-token"
      }
    }
  }
}

Claude Desktop — claude_desktop_config.json

Gleiche Struktur, unter dem Top-Level-Schlüssel "mcpServers":

{
  "mcpServers": {
    "trmm": {
      "command": "/abs/path/tactical-rmm-mcp/.venv/bin/python",
      "args": ["/abs/path/tactical-rmm-mcp/server.py"],
      "env": {
        "TRMM_API_URL": "https://api.yourdomain.com",
        "TRMM_API_KEY": "your-readonly-key"
      }
    }
  }
}

Auf macOS befindet sich diese Datei unter ~/Library/Application Support/Claude/claude_desktop_config.json; unter Windows unter %APPDATA%\Claude\claude_desktop_config.json. Starten Sie die App nach der Bearbeitung neu.

Remote-Bereitstellung (Teamzugriff)

Führen Sie trmm-mcp als gemeinsamen HTTPS-Server aus, damit Ingenieure/Helpdesk ihn als Claude-Connector verwenden, anstatt ihn lokal zu installieren. Der TRMM-API-Schlüssel bleibt serverseitig; Clients authentifizieren sich mit einem gemeinsamen Bearer-Token.

1. Bearer-Token generieren und konfigurieren

python -c "import secrets; print(secrets.token_urlsafe(32))"

In .env (oder Ihrer Portainer-Stack-Umgebung):

TRMM_API_URL=https://api.yourdomain.com
TRMM_API_KEY=<read-only service-user key>
TRMM_MCP_TRANSPORT=http
TRMM_MCP_AUTH_TOKEN=<the token you just generated>

Der Server weigert sich, im HTTP-Modus ohne TRMM_MCP_AUTH_TOKEN zu starten.

2. Mit Docker / Portainer bereitstellen

docker compose up -d --build
curl http://localhost:8080/healthz        # -> {"status":"ok",...}

Stellen Sie in Portainer einen Stack aus diesem Repository bereit und setzen Sie die Umgebungsvariablen im Stack – passt zu Ihrem bestehenden Build → Push → Portainer-Webhook-Redeploy-Ablauf. Das Image läuft als Nicht-Root-Benutzer und enthält einen Docker-HEALTHCHECK gegen /healthz.

3. Hinter HTTPS + ein Netzwerk-Gate stellen

Beenden Sie TLS und beschränken Sie den Zugriff vor dem Container – ein Reverse-Proxy (Caddy/Nginx/Traefik), der z. B. https://trmm-mcp.example.com bereitstellt, hinter Ihrem VPN oder Cloudflare Access. Das Bearer-Token ist Defense-in-Depth, nicht die einzige Schicht. Setzen Sie Port 8080 niemals unauthentifiziert dem Internet aus.

4. Claude verbinden (Claude Code / Desktop)

Remote-.mcp.json – kein Python, Repo oder TRMM-Schlüssel auf dem Rechner des Teammitglieds:

{
  "mcpServers": {
    "trmm": {
      "type": "http",
      "url": "https://trmm-mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer <shared-token>" }
    }
  }
}

claude.ai Web & Mobil

Die Web-/Mobile-Custom-Connector-UI authentifiziert über OAuth, nicht über einen statischen Header – daher deckt das obige Bearer-Setup Claude Code + Desktop ab. Für Web + Mobile stellen Sie dem Server Cloudflare Tunnel + ein MCP Server Portal vor: Es führt den OAuth/SSO (Entra)-Flow gegenüber Claude aus und injiziert das Bearer-Token vorgelagert, sodass kein zusätzlicher Servercode erforderlich ist. Vollständige Anleitung: docs/REMOTE_OAUTH_CLOUDFLARE.md. Verwendet docker-compose.cloudflare.yml (Tunnel-Sidecar, keine veröffentlichten Ports).

Endpunkte

Pfad

Auth

Zweck

POST /mcp (konfigurierbar)

Bearer

Der MCP-Endpunkt, mit dem sich Clients verbinden

GET /healthz

keine

Health-Probe für Docker/Orchestratoren

Mit MCP Inspector testen

npx @modelcontextprotocol/inspector \
  -e TRMM_API_URL=https://api.yourdomain.com \
  -e TRMM_API_KEY=your-readonly-key \
  -- python server.py

Dann in der Inspector-UI: Tools auflisten, trmm_list_clients aufrufen und trmm_search_audit_log mit within_days: 7 ausprobieren, um zu bestätigen, dass Paginierung und Audit-Log-Filter mit Live-Daten funktionieren.

Evaluierung

evaluation.xml enthält 10 schreibgeschützte MSP-Fragen mit verifizierten Antworten. Führen Sie sie mit dem im mcp-builder-Skill gebündelten Harness aus:

python scripts/evaluation.py \
  -t stdio -c python -a server.py \
  -e TRMM_API_URL=https://api.yourdomain.com \
  -e TRMM_API_KEY=your-readonly-key \
  -o evaluation_report.md \
  evaluation.xml

Die Antworten in evaluation.xml sind spezifisch für die Instanz, gegen die sie verifiziert wurden; generieren Sie sie für einen anderen Datensatz neu.

Sicherheitshinweise

  • Geheimnisse stammen nur aus der Umgebung; nichts wird auf stdout protokolliert (stdio-Server müssen stdout sauber halten – Diagnosen gehen an stderr).

  • Fehler werden in umsetzbare Meldungen übersetzt, die Authentifizierung (401) vs. Berechtigung (403) vs. Nicht gefunden (404) vs. Netzwerk/Timeout unterscheiden, ohne Interna preiszugeben.

  • Dieser Server ruft niemals einen mutierenden Endpunkt auf. Ein zukünftiger, explizit abgesicherter Aktionsserver wäre ein separates Projekt.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables read-only access to SentinelOne's platform through MCP, allowing security investigations, threat hunting, and asset inventory queries via natural language.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Read-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.
    5
    14
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables read-only interaction with App Store Connect via MCP tools, including listing apps, versions, builds, and review submissions, with compliance boundaries and no write operations by default.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Read-only MCP server for the Action1 RMM REST API, enabling access to endpoints, missing updates, vulnerabilities, installed software, policies, automations, and reports.
    21
    Apache 2.0

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JohnGilligan2/tactical-rmm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server