trmm-mcp
trmm-mcp
読み取り専用のMCPサーバーで、Tactical RMMインスタンスをエージェントツールとして公開し、LLMがデバイス、クライアント、監査データを収集できるようにします。ただし、何も変更する能力はありません。
設計上読み取り専用。 run-script、run-command、reboot、install、edit、create、deleteツールは実装されていません。APIキーが書き込み可能であっても、影響範囲はゼロです。それでも読み取り専用のサービスユーザーと組み合わせてください(多層防御)。
Python + FastMCP。1つのコードベースから2つのトランスポートを提供:stdioはMCPクライアントでのローカル使用、Streamable HTTP(共有ベアラートークン認証付き)はチーム全体が接続する共有リモートサーバー用です。Remote deployment (team access)を参照してください。
設定は環境変数のみです。コードにシークレットはありません。必要な変数が不足している場合は、起動時に即座に失敗します。
ツール
すべてのツールはreadOnlyHint: true、destructiveHint: false、idempotentHint: true、openWorldHint: trueで、出力スキーマを持つ構造化コンテンツを返し、該当する場合はページネーションをサポートします。
Tool | What it does |
| すべてのクライアント/テナント(オプションで埋め込まれたサイト概要付き)。 |
| サイト。クライアントでフィルタリング可能。 |
| 要約フィールドを持つエージェント/デバイス。クライアント/サイト/タイプ/プラットフォーム/ステータス/ホスト名でフィルタリング可能。 |
| 1つのエージェントの完全な詳細(OS、ハードウェア、ステータス、チェック集計)。 |
| チェック結果(cpu/mem/disk/ping/service/script/event)と合格/不合格ステータス。 |
| エージェントのコマンド/スクリプト/タスク実行履歴(新しい順)。 |
| エージェント/クライアント/ユーザー/アクション/オブジェクトタイプ/時間範囲で監査ログを照会。 |
| 1つまたはすべてのエージェントに対するキューされた再起動/更新/スクリプト。 |
| エージェントのインストール済みソフトウェアインベントリ。 |
| エージェントに既知のWindows Updateエントリ。 |
| サーバーの健全性/バージョン/カウント( |
正確なエンドポイントと監査ログペイロードについては、docs/API_CONTRACT.mdを参照してください。
Related MCP server: KVMFleet MCP Server
設定
TRMMでAPIキーを取得:Settings → Global Settings → API Keys(読み取り専用のサービスユーザーを選択)。キーは2FAをバイパスし、そのユーザーのロール権限を継承します。
Variable | Required | Default | Description |
| ✅ | — | APIベースURL。 |
| ✅ | — |
|
| — | (unset) |
|
| — |
| リクエストごとのタイムアウト(秒)。 |
| — |
| 自己署名証明書の場合のみ |
| — |
| 一時的な5xx/ネットワークエラーでの再試行。 |
インストール
Python 3.10+が必要です。
cd tactical-rmm-mcp
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt(またはpip install -e .でtrmm-mcpコンソールスクリプトを取得。)
実行
サーバーはstdio上でMCPを話すため、通常はMCPクライアントによって起動されます。手動で実行する場合(stdinでMCPクライアントを待ちます):
# set env first, then:
python -m trmm_mcp
# or
python server.pyTRMM_API_URL/TRMM_API_KEYが欠落している場合、stderrに明確なエラーを出力して非ゼロで終了します。
MCPクライアント(stdio)に登録
Claude Code — プロジェクトの.mcp.json
プロジェクトに.mcp.jsonを作成します(server.pyへの絶対パスと、依存関係を解決するためのvenvのPythonを使用):
{
"mcpServers": {
"trmm": {
"command": "C:\\Users\\admin\\your-workspace\\tactical-rmm-mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\Users\\admin\\your-workspace\\tactical-rmm-mcp\\server.py"],
"env": {
"TRMM_API_URL": "https://api.yourdomain.com",
"TRMM_API_KEY": "your-readonly-key",
"TRMM_MON_TOKEN": "optional-mon-token"
}
}
}
}Claude Desktop — claude_desktop_config.json
同じ形で、トップレベルの"mcpServers"キーの下に配置:
{
"mcpServers": {
"trmm": {
"command": "/abs/path/tactical-rmm-mcp/.venv/bin/python",
"args": ["/abs/path/tactical-rmm-mcp/server.py"],
"env": {
"TRMM_API_URL": "https://api.yourdomain.com",
"TRMM_API_KEY": "your-readonly-key"
}
}
}
}macOSではこのファイルは~/Library/Application Support/Claude/claude_desktop_config.jsonにあり、Windowsでは%APPDATA%\Claude\claude_desktop_config.jsonにあります。編集後、アプリを再起動してください。
Remote deployment (team access)
trmm-mcpを共有HTTPSサーバーとして実行し、エンジニア/ヘルプデスクが各自ローカルにインストールする代わりにClaudeコネクタとして使用できるようにします。TRMM APIキーはサーバー側に保持され、クライアントは共有ベアラートークンで認証します。
1. ベアラートークンを生成して設定
python -c "import secrets; print(secrets.token_urlsafe(32))".env(またはPortainerスタック環境)で:
TRMM_API_URL=https://api.yourdomain.com
TRMM_API_KEY=<read-only service-user key>
TRMM_MCP_TRANSPORT=http
TRMM_MCP_AUTH_TOKEN=<the token you just generated>サーバーはTRMM_MCP_AUTH_TOKENなしではhttpモードで起動を拒否します。
2. Docker / Portainerでデプロイ
docker compose up -d --build
curl http://localhost:8080/healthz # -> {"status":"ok",...}Portainerで、このリポジトリからスタックをデプロイし、スタックに環境変数を設定します。既存のビルド→プッシュ→Portainer-webhook再デプロイフローに適合します。イメージは非rootユーザーとして実行され、/healthzに対するDocker HEALTHCHECKを同梱しています。
3. HTTPS + ネットワークゲートの背後に配置
TLSを終端し、コンテナの前でアクセスをゲートします。リバースプロキシ(Caddy/Nginx/Traefik)が例えばhttps://trmm-mcp.example.comを提供し、VPNまたはCloudflare Accessの背後に置きます。ベアラートークンは多層防御であり、唯一の層ではありません。ポート8080を認証なしでインターネットに公開しないでください。
4. Claude(Claude Code / Desktop)を接続
リモート.mcp.json — チームメイトのマシンにPython、リポジトリ、TRMMキーは不要:
{
"mcpServers": {
"trmm": {
"type": "http",
"url": "https://trmm-mcp.example.com/mcp",
"headers": { "Authorization": "Bearer <shared-token>" }
}
}
}claude.ai web & mobile
Web/モバイルのカスタムコネクタUIは、静的ヘッダーではなくOAuthで認証します。そのため、上記のベアラー設定はClaude Code + Desktopを対象としています。Web +モバイルの場合は、サーバーの前にCloudflare Tunnel + MCP Server Portalを配置します。これにより、ClaudeへのOAuth/SSO(Entra)フローが実行され、ベアラートークンが上流に注入されるため、追加のサーバーコードは不要です。完全なチュートリアル:docs/REMOTE_OAUTH_CLOUDFLARE.md。docker-compose.cloudflare.ymlを使用します(トンネルサイドカー、公開ポートなし)。
エンドポイント
Path | Auth | Purpose |
| Bearer | クライアントが接続するMCPエンドポイント |
| none | Docker/オーケストレーター用のヘルスプローブ |
MCP Inspectorでテスト
npx @modelcontextprotocol/inspector \
-e TRMM_API_URL=https://api.yourdomain.com \
-e TRMM_API_KEY=your-readonly-key \
-- python server.py次にInspector UIで:ツールを一覧表示し、trmm_list_clientsを呼び出し、within_days: 7でtrmm_search_audit_logを試して、ページネーションと監査ログフィルターがライブデータに対して機能することを確認します。
評価
evaluation.xmlには、検証済みの回答付きの10の読み取り専用MSP質問が含まれています。mcp-builderスキルに同梱されているハーネスで実行します:
python scripts/evaluation.py \
-t stdio -c python -a server.py \
-e TRMM_API_URL=https://api.yourdomain.com \
-e TRMM_API_KEY=your-readonly-key \
-o evaluation_report.md \
evaluation.xml
evaluation.xmlの回答は、検証されたインスタンスに固有です。異なるデータセットの場合は再生成してください。
セキュリティノート
シークレットは環境からのみ取得されます。stdoutには何もログ出力されません(stdioサーバーはstdoutをクリーンに保つ必要があります。診断情報はstderrに出力されます)。
エラーは、認証(401)と権限(403)と未検出(404)とネットワーク/タイムアウトを区別する実用的なメッセージに変換されますが、内部情報は漏洩しません。
このサーバーは変更を伴うエンドポイントを呼び出すことはありません。将来、明示的にゲートされたアクションサーバーは別のプロジェクトになるでしょう。
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
- AlicenseNot gradedqualityDmaintenanceEnables read-only access to SentinelOne's platform through MCP, allowing security investigations, threat hunting, and asset inventory queries via natural language.MIT

KVMFleet MCP Serverofficial
AlicenseAqualityCmaintenanceRead-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.5141MIT- AlicenseNot gradedqualityBmaintenanceEnables read-only interaction with App Store Connect via MCP tools, including listing apps, versions, builds, and review submissions, with compliance boundaries and no write operations by default.MIT
- 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 MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Read-only Dant3 MCP for public rooms, agents, jobs and provisional machine onboarding.
Read-only Remote MCP for externally grounded AI agent trust receipts.
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-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server