trmm-exec-mcp
trmm-exec-mcp
하나의 MCP 서버 for Tactical RMM: Entra 게이트 읽기 + 읽기 전용 PowerShell 실행기. 지정된 Entra 보안 그룹의 구성원만 연결할 수 있습니다. 플랫폼의 모든 것을 읽고 모든 에이전트에서 정보 수집 PowerShell을 실행하며, 상태를 변경하는 모든 것은 거부합니다. Microsoft Entra 인증을 사용하는 FastMCP 3.x 기반입니다(odoo-ticket-mcp와 동일한 스택).
v2(단순화). 이전 설계는 실제 쓰기/실행을 위해 Roam 일회용 토큰 승인 릴레이를 추가했습니다. 실제 필요보다 과한 구조였기에 v2에서는 릴레이, 제안 저장소, 승인자 목록, 에이전트 허용 목록을 제거했습니다. 안전성은 이제 두 가지에서 비롯됩니다: Entra 그룹(누가 연결할 수 있는지)과 읽기 전용 가드(스크립트가 무엇을 할 수 있는지)입니다. 이전 흐름은
simplify/readonly-entra브랜치 이전의 git 기록에 남아 있습니다.
읽기 전용을 지키는 방법
임의의 PowerShell은 읽기 전용임을 증명할 수 없으므로, guard.py는 거부를 기본으로 하는 엄격한 심층 방어 안전장치입니다. 두 계층으로 구성됩니다:
Cmdlet 동사 허용 목록 — PowerShell cmdlet은
Verb-Noun형태입니다. 읽기 동사(Get,Test,Measure,Select, …)만 통과하므로Set-*,New-*,Remove-*,Stop-*,Restart-*는 구조적으로 거부됩니다.위험 토큰 차단 목록 —
Verb-Nouncmdlet이 아닌 상태 변경 구문(네이티브del/reg delete/schtasks, .NET::Delete, 디스크 리디렉션)과 1계층을 무력화하는 난독화(iex,-EncodedCommand, Base64 디코딩,Invoke-Command)를 잡아냅니다.
거부 시 문제가 되는 토큰을 명시합니다. 이것은 샌드박스가 아닙니다 — 여전히 TRMM_API_KEY를 감수할 수 있는 폭발 반경(blast radius)의 계정으로 설정하세요.
Related MCP server: EndpointRead-MCP
인증: Microsoft Entra(리소스 서버 모드)
FastMCP의 AzureJWTVerifier + RemoteAuthProvider: 서버는 대상(audience)이 바인딩된 Entra 토큰을 검증하고 보호된 리소스 메타데이터를 게시하며, 토큰을 발급하지 않습니다. claude.ai가 Entra에 대해 OAuth를 수행하고 연결합니다. 앞단의 nginx는 TLS와 Anthropic IP 허용 목록만 처리합니다. Entra 앱의 그룹 할당을 통해 시니어 엔지니어로 제한하세요(할당 필요 = 예).
도구
도구 | 종류 | 용도 |
| 읽기 | 머신 검색(호스트명/유형/플랫폼/상태로 필터링). |
| 읽기 | 단일 에이전트의 전체 세부 정보(하드웨어, OS, IP, 검사, 재부팅 상태). |
| 읽기 | 호스트명 → agent_id(0개 또는 1개 초과 시 오류). |
| 읽기 | TRMM 자체 감사 추적(TRMM에서 누가 무엇을 했는지). |
| 읽기 | 정보 수집 PowerShell 실행(이벤트 로그, 서비스, 소프트웨어, 구성). 변경을 가하는 스크립트는 거부됨. |
구성(환경 변수만)
변수 | 필수 | 설명 |
| ✅ | TRMM API 기본 URL. |
| ✅ | 읽기 및 실행/명령 전송 권한이 있는 TRMM 계정 키. |
| — |
|
| ✅† | 테넌트 및 API 앱 등록 클라이언트 ID. |
| ✅† | 공개 루트( |
| ✅† | Entra에 설정된 앱 ID URI와 동일해야 함(예: |
| — | 범위 구성(기본값 |
| — | 컨테이너 바인드(기본값 |
† MCP_AUTH_ENABLED=true일 때 필수.
TRMM 계정
claude TRMM 사용자를 사용하며, 읽기 + 명령 전송(SendCMDPerms) 권한으로 프로비저닝됩니다. 해당 키는 TRMM_API_KEY에 넣습니다(Portainer 스택 환경 변수를 통해, git에는 절대 넣지 않음). 읽기 전용 가드가 스크립트가 할 수 있는 작업을 제한하므로, 계정은 도구가 필요로 하는 범위로만 유지하세요. 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 스택 + 웹훅, Entra 환경 변수, 호스트 포트) + deploy/nginx-trmm-exec-mcp.conf.
검증
python -m py_compile trmm_exec_mcp/*.py — 오류 없음. 읽기 전용 가드에는 테스트 케이스 모음이 있습니다(읽기 스크립트 허용, 변경/난독화/네이티브 파괴적 스크립트 거부). 배포 후: /healthz 정상, 인증 없는 /mcp → 401, 검색 문서가 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