ThreatLocker について
ThreatLocker は、ThreatLocker Portal API に AI アシスタントからアクセスするチーム向けの MCP サーバーです。コンピューター、承認リクエスト、監査ログ、組織を扱い、ステートレスなリクエストとドメイン別ナビゲーションを備えます。
主な機能
- 01コンピューターの一覧と詳細取得
- 02コンピューターのチェックイン履歴取得
- 03承認リクエストの絞り込みと保留数確認
- 04監査ログとファイル履歴の検索
- 05子組織の一覧と組織情報の取得
- 06ドメイン別のツールナビゲーション
活用シーン
- 01デバイス情報とチェックイン記録の確認
- 02保留中のアプリケーション承認の確認
- 03監査操作とファイル履歴の調査
- 04子組織の確認とコンピューター移動の準備
MCP 対応
ThreatLocker Portal API のコンピューター、承認、監査、組織に関する操作を MCP クライアントに公開します。stdio と HTTP に対応し、リクエストヘッダーで認証情報を渡すゲートウェイモードも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e THREATLOCKER_API_KEY -e THREATLOCKER_ORGANIZATION_ID -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/threatlocker-mcp:v1.3.6THREATLOCKER_API_KEYシークレットThreatLocker API keyTHREATLOCKER_ORGANIZATION_IDThreatLocker organization IDMCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.AUTH_MODEシークレットCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.LOG_LEVELLog verbosity: debug, info, warn, errorローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/wyre-technology/threatlocker-mcp:v1.3.6stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ThreatLocker MCP サーバー
AI アシスタントが ThreatLocker Portal API にアクセスできるようにする Model Context Protocol(MCP)サーバーです。自然言語でのやり取りを通じて、コンピューター、承認リクエスト、監査ログ、組織を管理できます。
機能
- ステートレスアーキテクチャ:セッション状態は不要で、リクエストごとに新しい接続を使用します
- 決定木によるナビゲーション:
threatlocker_navigateでドメインをナビゲートします - ゲートウェイモード:HTTP ヘッダーを介したマルチテナント対応
- エリシテーション対応:パラメーターが不足している場合に対話型プロンプトを表示します
- 包括的なエラー処理:詳細なエラーメッセージとログ記録
- Docker 対応:本番環境向けのコンテナー化
ツール
ナビゲーション
threatlocker_navigate- ドメインに移動して利用可能なツールを確認しますthreatlocker_status- API 接続の状態と利用可能なドメインを確認します
コンピューター
threatlocker_computers_list- フィルター(検索、グループ、ページネーション)を指定してコンピューターを一覧表示しますthreatlocker_computers_get- コンピューターの詳細情報を取得しますthreatlocker_computers_get_checkins- コンピューターのチェックイン履歴を取得します
コンピューターグループ
threatlocker_computer_groups_list- フィルターを指定してコンピューターグループを一覧表示しますthreatlocker_computer_groups_dropdown- ドロップダウン選択用のコンピューターグループを取得します
承認リクエスト
threatlocker_approvals_list- ステータスフィルターを指定して承認リクエストを一覧表示しますthreatlocker_approvals_get- 承認リクエストの詳細情報を取得しますthreatlocker_approvals_pending_count- 保留中の承認数を取得しますthreatlocker_approvals_get_permit_application- アプリケーション許可の詳細を取得します
監査ログ
threatlocker_audit_search- フィルターを指定して監査ログのエントリーを検索しますthreatlocker_audit_get- 検索結果の行からeActionLogIdを指定して監査ログのエントリーを 1 件取得します(非推奨の別名:actionLogId)threatlocker_audit_file_history- ファイルの監査履歴を取得します。fullPathと、hostnameまたはcomputerIdのいずれかが必要です
組織
threatlocker_organizations_list_children- 子組織を一覧表示しますthreatlocker_organizations_get_auth_key- 組織の認証キーを取得しますthreatlocker_organizations_for_move_computers- コンピューターの移動先となる組織を取得します
設定
環境変数
Stdio モード(API に直接アクセス)
THREATLOCKER_API_KEY=your_api_key_here
THREATLOCKER_ORGANIZATION_ID=your_org_id_here
MCP_TRANSPORT=stdio
ゲートウェイモード(マルチテナント)
AUTH_MODE=gateway
MCP_TRANSPORT=http
MCP_HTTP_PORT=8080
# Required. The HTTP server exits non-zero if this is empty.
CONDUIT_S2S_SECRET=gateway-provisioned-secret
# Optional. Unset binds 127.0.0.1. The container image sets 0.0.0.0.
# MCP_HTTP_HOST=127.0.0.1
HTTP トランスポートには CONDUIT_S2S_SECRET が必要です。未設定の場合、プロセスはエラーをログに記録して、0 以外の終了コードで終了します。ローカル開発に限り、MCP_ALLOW_INSECURE_DEV=1 を設定するとサーバーが起動し、重大な警告がログに記録されます。本番環境ではこのフラグを設定しないでください。シークレットがログに記録されることはありません。
MCP_HTTP_HOST が未設定の場合、サーバーは 127.0.0.1 にバインドします。Dockerfile では MCP_HTTP_HOST=0.0.0.0 が設定されているため、プロセスはコンテナー内でリッスンします。このポートは localhost で公開してください。
ゲートウェイモードのヘッダー
ゲートウェイモードで実行する場合、各リクエストに次のヘッダーを含めてください。
X-Gateway-S2S:ゲートウェイからのサービス間認証情報(t=<unix>,v1=<hmac>)。有効なヘッダーがないリクエストは、CONDUIT_S2S_SECRETが設定されている場合、401 で拒否されます。X-Threatlocker-Api-Key:ThreatLocker API キー(必須)。このヘッダーがないリクエストは 401 で拒否され、THREATLOCKER_API_KEYへのフォールバックは行われません。X-Threatlocker-Organization-Id:組織 ID(任意。API はデフォルトでキーのプライマリ組織を使用します)
/health と /healthz は認証不要のままで、認証情報を読み取りません。stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。
ログ記録
LOG_LEVEL=debug|info|warn|error # Default: info
ローカル開発
- リポジトリをクローンします:
git clone https://github.com/WYRE-AI/threatlocker-mcp.git
cd threatlocker-mcp
- 依存関係をインストールします:
npm install
- 環境変数を設定します:
cp .env.example .env
# Edit .env with your ThreatLocker credentials
- ビルドして実行します:
npm run build
npm start
# Or for development with hot reload:
npm run dev
- サーバーをテストします:
# Stdio mode
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | npm start
# HTTP mode. CONDUIT_S2S_SECRET is required unless you set
# MCP_ALLOW_INSECURE_DEV=1 (local development only; logs a loud warning).
# The server binds 127.0.0.1 unless MCP_HTTP_HOST is set.
MCP_TRANSPORT=http AUTH_MODE=gateway CONDUIT_S2S_SECRET=dev-secret npm run start:http
curl http://127.0.0.1:8080/health
Docker
Docker Compose を使用する
# Required. Compose will not start if this is unset or empty.
export CONDUIT_S2S_SECRET=gateway-provisioned-secret
# Pull and run latest image. The published port is 127.0.0.1:8080.
docker compose up -d
# Or build locally
docker compose -f docker-compose.dev.yml up --build
Docker を直接使用する
# Gateway mode (recommended). The container listens on 0.0.0.0 inside
# the network namespace; publish it on localhost only. The process
# exits if CONDUIT_S2S_SECRET is empty.
docker run -d \
--name threatlocker-mcp \
-p 127.0.0.1:8080:8080 \
-e AUTH_MODE=gateway \
-e CONDUIT_S2S_SECRET=gateway-provisioned-secret \
ghcr.io/wyre-ai/threatlocker-mcp:latest
# Stdio mode
docker run -d \
--name threatlocker-mcp \
-e THREATLOCKER_API_KEY=your_key \
-e THREATLOCKER_ORGANIZATION_ID=your_org_id \
-e MCP_TRANSPORT=stdio \
ghcr.io/wyre-ai/threatlocker-mcp:latest
アーキテクチャ
ディレクトリー構成
src/
├── domains/ # Domain-specific handlers
│ ├── computers.ts
│ ├── computer_groups.ts
│ ├── approval_requests.ts
│ ├── audit_log.ts
│ ├── organizations.ts
│ ├── navigation.ts
│ └── index.ts
├── utils/ # Utilities
│ ├── client.ts # ThreatLocker API client
│ ├── logger.ts # Structured logging
│ ├── types.ts # TypeScript types
│ ├── server-ref.ts # Server reference for elicitation
│ └── elicitation.ts # Interactive prompts
├── server.ts # MCP server creation
├── index.ts # Stdio transport entry
└── http.ts # HTTP transport entry
設計パターン
- ドメインハンドラー:各 API 領域に、
getTools()とhandleCall()を備えた独自のハンドラーがあります - 遅延読み込み:ドメインハンドラーは必要に応じてインポートされます
- 新規接続:ステートレスな操作のため、HTTP リクエストごとに新しいサーバーインスタンスを作成します
- 認証情報の無効化:認証情報が変更されると、クライアントがリセットされます
- エリシテーションフレームワーク:不足しているパラメーターを補うための対話型プロンプト
ライセンス
Apache-2.0 — 詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。