trmm-exec-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@trmm-exec-mcpRun a read-only PowerShell on agent 'SERVER-01' to collect recent event log errors"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
trmm-exec-mcp
One MCP server for Tactical RMM: Entra-gated reads + a read-only PowerShell
runner. Only members of the assigned Entra security group can connect. It reads
everything on the platform and runs information-gathering PowerShell on any
agent — and refuses anything that changes state. Built on FastMCP 3.x with
Microsoft Entra auth (same stack as odoo-ticket-mcp).
v2 (simplified). The earlier design added a Roam one-time-token approval relay for genuine write/exec. That was more machine than the actual need, so v2 drops the relay, the proposal store, the approver list, and the agent allowlist. Safety now comes from two things: the Entra group (who can connect) and the read-only guard (what a script may do). The old flow lives in git history before the
simplify/readonly-entrabranch.
What keeps it read-only
Arbitrary PowerShell can't be proven read-only, so guard.py
is a strict, defense-in-depth backstop that errs on refusing. Two layers:
Cmdlet verb allowlist — PowerShell cmdlets are
Verb-Noun; only read verbs (Get,Test,Measure,Select, …) pass, so anySet-*,New-*,Remove-*,Stop-*,Restart-*is refused by construction.Dangerous-token denylist — catches state-changing constructs that aren't
Verb-Nouncmdlets (nativedel/reg delete/schtasks, .NET::Delete, redirection to disk) and obfuscation that would defeat layer 1 (iex,-EncodedCommand, Base64 decode,Invoke-Command).
A refusal names the offending token. This is not a sandbox — still point
TRMM_API_KEY at an account whose blast radius you accept.
Related MCP server: EndpointRead-MCP
Auth: Microsoft Entra (resource-server mode)
FastMCP's AzureJWTVerifier + RemoteAuthProvider: the server validates
audience-bound Entra tokens and publishes protected-resource metadata; it never
issues tokens. claude.ai does the OAuth against Entra and connects. nginx in front
does only TLS + the Anthropic IP allowlist. Restrict to the senior engineers via
the Entra app's group assignment (Assignment required = Yes).
Tools
Tool | Kind | Purpose |
| read | Find machines (filter by hostname/type/platform/status). |
| read | Full detail for one agent (hardware, OS, IPs, checks, reboot state). |
| read | Hostname → agent_id (errors if 0/>1). |
| read | TRMM's own audit trail (who did what in TRMM). |
| read | Run information-gathering PowerShell (event logs, services, software, config). Mutating scripts refused. |
Configuration (env only)
Variable | Required | Description |
| ✅ | TRMM API base URL. |
| ✅ | TRMM account key with read + run/send-command. |
| — |
|
| ✅† | Tenant + API app-registration client id. |
| ✅† | Public root (no |
| ✅† | Must equal the App ID URI set in Entra (e.g. the |
| — | Scope config ( |
| — | Container bind (default |
† required when MCP_AUTH_ENABLED=true.
TRMM account
Uses the claude TRMM user, provisioned with read + Send Command
(SendCMDPerms). Put its key in TRMM_API_KEY (via the Portainer stack env,
never in git). The read-only guard limits what a script can do; keep the account
scoped to what the tools need. Treat DCs as extra-sensitive.
Run / deploy
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_mcpProduction: PORTAINER_DEPLOY.md (Git stack + webhook, Entra env, host port) + deploy/nginx-trmm-exec-mcp.conf.
Verify
python -m py_compile trmm_exec_mcp/*.py — clean. The read-only guard has a case
suite (read scripts allowed; mutating/obfuscated/native-destructive refused).
After deploy: /healthz ok, unauthenticated /mcp → 401, and the discovery doc
advertises the https://…/mcp/access_as_user scope (not 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