trmm-exec-mcp
trmm-exec-mcp
Ein MCP-Server für Tactical RMM: Entra-gesteuertes Lesen + ein schreibgeschützter PowerShell
Runner. Nur Mitglieder der zugewiesenen Entra-Sicherheitsgruppe können sich verbinden. Er liest
alles auf der Plattform und führt informationssammelnde PowerShell auf jedem
Agenten aus – und verweigert alles, was den Zustand ändert. Basierend auf FastMCP 3.x mit
Microsoft Entra-Authentifizierung (gleicher Stack wie odoo-ticket-mcp).
v2 (vereinfacht). Das frühere Design fügte ein Roam-One-Time-Token-Genehmigungsrelay für echte Schreib-/Ausführungsvorgänge hinzu. Das war mehr Maschinerie als der tatsächliche Bedarf, daher entfernt v2 das Relay, den Vorschlagsspeicher, die Genehmigerliste und die Agenten-Zulassungsliste. Sicherheit kommt jetzt aus zwei Dingen: der Entra-Gruppe (wer sich verbinden kann) und dem Schreibschutz-Wächter (was ein Skript tun darf). Der alte Ablauf lebt in der Git-Historie vor dem
simplify/readonly-entra-Branch.
Was es schreibgeschützt hält
Beliebige PowerShell kann nicht bewiesen schreibgeschützt sein, daher ist guard.py
eine strenge, mehrschichtige Absicherung, die eher ablehnt. Zwei Ebenen:
Cmdlet-Verb-Zulassungsliste — PowerShell-Cmdlets sind
Verb-Nomen; nur Lese- Verben (Get,Test,Measure,Select, …) bestehen, sodass alleSet-*,New-*,Remove-*,Stop-*,Restart-*konstruktionsbedingt abgelehnt werden.Sperrliste für gefährliche Tokens — erfasst zustandsändernde Konstrukte, die keine
Verb-Nomen-Cmdlets sind (nativedel/reg delete/schtasks, .NET::Delete, Umleitung auf Platte) und Verschleierung, die Ebene 1 aushebeln würde (iex,-EncodedCommand, Base64-Decodierung,Invoke-Command).
Eine Ablehnung benennt das auslösende Token. Dies ist keine Sandbox – weisen Sie
TRMM_API_KEY weiterhin einem Konto zu, dessen Schadensradius Sie akzeptieren.
Related MCP server: EndpointRead-MCP
Authentifizierung: Microsoft Entra (Ressourcenserver-Modus)
FastMCPs AzureJWTVerifier + RemoteAuthProvider: Der Server validiert
audience-gebundene Entra-Tokens und veröffentlicht Metadaten für geschützte Ressourcen; er stellt
niemals Tokens aus. claude.ai führt den OAuth gegen Entra durch und verbindet sich. nginx davor
macht nur TLS + die Anthropic-IP-Zulassungsliste. Beschränken Sie den Zugriff auf die Senior-Engineers über
die Gruppenzuweisung der Entra-App (Assignment required = Yes).
Tools
Tool | Art | Zweck |
| lesen | Computer suchen (Filtern nach Hostname/Typ/Plattform/Status). |
| lesen | Volle Details für einen Agenten (Hardware, OS, IPs, Checks, Neustartstatus). |
| lesen | Hostname → agent_id (Fehler bei 0/>1). |
| lesen | TRMMs eigener Audit-Trail (wer hat was in TRMM getan). |
| lesen | Informationssammelnde PowerShell ausführen (Ereignisprotokolle, Dienste, Software, Konfiguration). Verändernde Skripte werden abgelehnt. |
Konfiguration (nur Umgebung)
Variable | Erforderlich | Beschreibung |
| ✅ | TRMM-API-Basis-URL. |
| ✅ | TRMM-Kontoschlüssel mit Lese- + Ausführungs-/Befehlsrechten. |
| — |
|
| ✅† | Mandant + App-Registrierungs-ID der API. |
| ✅† | Öffentliche Basis-URL (ohne |
| ✅† | Muss der in Entra festgelegten App-ID-URI entsprechen (z. B. die |
| — | Bereichskonfiguration (Standard |
| — | Container-Bindung (Standard |
† erforderlich, wenn MCP_AUTH_ENABLED=true.
TRMM-Konto
Verwendet den claude-TRMM-Benutzer, bereitgestellt mit Lese- und Sendeberechtigungen
(SendCMDPerms). Legen Sie seinen Schlüssel in TRMM_API_KEY ab (über die Portainer-Stack-Umgebung,
niemals im Git). Der Schreibschutz-Wächter begrenzt, was ein Skript tun kann; halten Sie das Konto
auf das beschränkt, was die Tools benötigen. Behandeln Sie Domänencontroller als besonders sensibel.
Ausführen/Bereitstellen
python -m venv .venv && .venv\Scripts\activate
pip install -r requirements.txt
# local (auth off): set TRMM_API_URL, TRMM_API_KEY, MCP_AUTH_ENABLED=false, then:
python -m trmm_exec_mcpProduktion: PORTAINER_DEPLOY.md (Git-Stack + Entra-Umgebung, Host-Port) + deploy/nginx-trmm-exec-mcp.conf.
Verifizieren
python -m py_compile trmm_exec_mcp/*.py — sauber. Der Schreibschutz-Wächter hat eine
Testsuite (Leseskripte erlaubt; mutierende/verschleierte/nativ-destruktive abgelehnt).
Nach der Bereitstellung: /healthz ok, /mcp ohne Authentifizierung → 401, und das Discovery-Dokument
bewirbt den https://…/mcp/access_as_user-Umfang (nicht api://…).
This server cannot be installed
Maintenance
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
- AlicenseAqualityBmaintenanceProvides read-only access to TacticalRMM remote monitoring and management instances via the MCP protocol. It enables querying agents, clients, alerts, checks, and other RMM data through natural language.2215AGPL 3.0
- AlicenseBqualityBmaintenanceA read-only MCP server for Microsoft Intune and Entra ID that enables list, get, search, and reporting operations for tenant visibility, audits, troubleshooting, and health reporting without write actions. It includes authentication helpers, report exports, and metadata discovery tools.36MIT
- FlicenseNot gradedqualityCmaintenanceRead-only MCP server for Microsoft Entra ID (Azure AD) that enables querying user sign-in logs, group memberships, and assigned Microsoft 365 licenses via Microsoft Graph API. Provides security and audit visibility without any write operations.
- AlicenseAqualityCmaintenanceRead-only MCP server for the Action1 RMM REST API, enabling access to endpoints, missing updates, vulnerabilities, installed software, policies, automations, and reports.21Apache 2.0
Related MCP Connectors
Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Read-only access to Auralogs production logs: search logs, inspect errors, review AI analyses.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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-exec-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server