An MCP server for TacticalRMM, with an out-of-band human approval gate for privileged actions.
Strong foundation with 24 well-named tools following verb_noun convention (trmm_list_agents, trmm_run_command). All tools have descriptions (avg ~120 chars, within 10-1024 range). Input schemas present for all tools with typed parameters and descriptions. Key strengths: clear risk classification (READ_ONLY, DESTRUCTIVE, DISRUPTIVE, WRITE, ROUTINE), agent resolution accepting both hostname and ID, response truncation to prevent context overflow. Gaps: output schemas not documented in source; error handling guidance minimal; no enum constraints on shell parameter (accepts 'cmd, powershell, shell, python, nushell, deno' as free text); some parameter descriptions lack format/range details (e.g., timeout in seconds but no min/max bounds).
List checks configured on an agent and their current status.
Read the Windows event log on an agent. Pass the log name (System, Application, Security, etc.) and max entries to return.
Recent history of actions on an agent: checks run, scripts executed, etc.
List running processes on an agent, with PID, memory, and command line.
List services on an agent, with state and startup type. Pass search= to filter by name.
List installed software on an agent.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'List services on an agent') but do not specify the structure of response objects, field names, or types. LLMs cannot plan downstream tool calls without knowing what fields to extract.
Shell parameter on trmm_run_command accepts free-form string ('cmd, powershell, shell, python, nushell, deno') instead of enum constraint. LLMs may hallucinate invalid shell names like 'bash' or 'zsh'. Should declare as enum with exactly those 6 values.
Numeric parameters lack bounds. timeout (default 30s) has no min/max; limit parameters have no upper bound. Unbounded numbers let LLMs pass absurd values (timeout=999999, limit=1000000) that break APIs or cause timeouts.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |
List scheduled tasks on an agent.
List available Windows updates on an agent.
Raw GET request to any TRMM API endpoint. Useful for endpoints not covered by a dedicated tool.
Tail the debug log from the TRMM server.
Fleet health summary: agent counts by status, plus the machines that are offline, need a reboot, have failing checks, or have pending patches. The best first call when hunting for problems.
Get full details on a single agent by hostname or agent_id. By default omits heavy fields (services, wmi_detail, all_timezones, graphics); pass include= to add them.
Fetch a script by ID so you can review it before running it.
Install Windows updates on an agent. Requires approval in elevate mode.
List all agents with key fields: hostname, status, last seen, OS, pending actions, etc. Pass include= or fields= to get more data.
Take an agent out of maintenance mode. Requires approval in elevate mode.
Put an agent into maintenance mode (suppress alerts). Requires approval in elevate mode.
List pending actions (scripts, checks, etc.) queued on agents. Pass an agent to filter to one machine.
Reboot the machine immediately. Requires approval in elevate mode.
Reboot the machine with a 5-minute warning. Requires approval in elevate mode.
Run a check on an agent immediately. Requires approval in elevate mode.
Run a shell command on an agent. Requires approval in elevate mode. Runs as SYSTEM by default; pass run_as_user=true to run as the logged-in user.
Run a script on an agent by ID. Requires approval in elevate mode. Runs as SYSTEM by default; pass run_as_user=true to run as the logged-in user.
Send a raw command to an agent (for advanced use). Requires approval in elevate mode.
Error handling guidance minimal. Tool descriptions do not explain what to do if an agent is not found, a command times out, or a script fails. Errors should guide recovery (e.g., 'Agent not found. Try trmm_list_agents to see available machines.').
Destructive tools (trmm_run_command, trmm_run_script, trmm_reboot_agent) lack dry-run or confirmation step. Agents make mistakes, a confirmation pattern prevents catastrophic errors like rebooting the wrong machine.