trmm-exec-mcp
trmm-exec-mcp
Один MCP-сервер для Tactical RMM: доступ на чтение через Entra + read-only PowerShell runner. Подключаться могут только члены назначенной группы безопасности Entra. Он читает всё на платформе и запускает PowerShell для сбора информации на любом агенте — и отказывает всему, что меняет состояние. Построен на FastMCP 3.x с аутентификацией Microsoft Entra (тот же стек, что и odoo-ticket-mcp).
v2 (упрощённая). В более ранней версии был релей одобрения одноразовых токенов Roam для настоящих операций записи/выполнения. Это было больше, чем реальная потребность, поэтому в v2 убраны релей, хранилище предложений, список одобряющих и список разрешённых агентов. Безопасность теперь обеспечивается двумя вещами: группой Entra (кто может подключаться) и read-only защитой (что может делать скрипт). Старый процесс остался в истории git до ветки
simplify/readonly-entra.
Что обеспечивает режим только для чтения
Произвольный PowerShell нельзя доказательно считать read-only, поэтому guard.py — это строгий защитный барьер с глубиной защиты, который склонен отказывать. Два уровня:
Разрешающий список глаголов командлетов — командлеты PowerShell имеют форму
Verb-Noun; проходят только глаголы чтения (Get,Test,Measure,Select, …), поэтому любыеSet-*,New-*,Remove-*,Stop-*,Restart-*отклоняются по построению.Список запрещённых опасных токенов — ловит конструкции, меняющие состояние, которые не являются командлетами
Verb-Noun(нативныеdel/reg delete/schtasks, .NET::Delete, перенаправление на диск) и обфускацию, которая могла бы обойти уровень 1 (iex,-EncodedCommand, декодирование Base64,Invoke-Command).
Отказ называет нарушающий токен. Это не песочница — по-прежнему указывайте TRMM_API_KEY на аккаунт, чей радиус поражения вы принимаете.
Related MCP server: EndpointRead-MCP
Аутентификация: Microsoft Entra (режим resource-server)
AzureJWTVerifier + RemoteAuthProvider от FastMCP: сервер проверяет токены Entra, привязанные к аудитории, и публикует метаданные защищённого ресурса; он никогда не выдаёт токены. claude.ai выполняет OAuth против Entra и подключается. nginx перед ним выполняет только TLS + список разрешённых IP Anthropic. Ограничьте доступ старшим инженерам через назначение группы в приложении Entra (Assignment required = Yes).
Инструменты
Инструмент | Тип | Назначение |
| read | Найти машины (фильтр по hostname/типу/платформе/статусу). |
| read | Полная информация об одном агенте (железо, ОС, IP, проверки, состояние перезагрузки). |
| read | Hostname → ID агента (ошибка при 0/>1). |
| read | Собственный журнал аудита TRMM (кто что делал в TRMM). |
| read | Запуск read-only PowerShell (журналы событий, службы, ПО, конфигурация). Изменяющие скрипты отклоняются. |
Конфигурация (только env)
Переменная | Обязательная | Описание |
| ✅ | Базовый URL API TRMM. |
| ✅ | Ключ аккаунта TRMM с правами чтения + запуска/отправки команд. |
| — |
|
| ✅† | Tenant + client id регистрации приложения API. |
| ✅† | Публичный корень (без |
| ✅† | Должен совпадать с App ID URI, заданным в Entra (например, URL |
| — | Конфигурация scope ( |
| — | Привязка контейнера (по умолчанию |
† требуется при MCP_AUTH_ENABLED=true.
Аккаунт TRMM
Использует пользователя TRMM claude, предоставленного с правами чтения + Send Command (SendCMDPerms). Поместите его ключ в TRMM_API_KEY (через переменные окружения стека Portainer, никогда в git). Read-only защита ограничивает, что может делать скрипт; держите аккаунт ограниченным тем, что нужно инструментам. Относитесь к DC как к особо чувствительным.
Запуск / развёртывание
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_mcpПродакшн: PORTAINER_DEPLOY.md (Git-стек + webhook, переменные Entra, порт хоста) + deploy/nginx-trmm-exec-mcp.conf.
Проверка
python -m py_compile trmm_exec_mcp/*.py — чисто. Read-only защита имеет набор тестов (read-скрипты разрешены; изменяющие/обфусцированные/нативно-деструктивные отклоняются). После развёртывания: /healthz ok, неаутентифицированный /mcp → 401, и discovery-документ объявляет scope https://…/mcp/access_as_user (не 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