mcpField
T
ThreatLocker

ThreatLocker

ローカル
github.comセキュリティ13 週間前に更新

ThreatLocker について

ThreatLocker は、ThreatLocker Portal API に AI アシスタントからアクセスするチーム向けの MCP サーバーです。コンピューター、承認リクエスト、監査ログ、組織を扱い、ステートレスなリクエストとドメイン別ナビゲーションを備えます。

主な機能

  1. 01コンピューターの一覧と詳細取得
  2. 02コンピューターのチェックイン履歴取得
  3. 03承認リクエストの絞り込みと保留数確認
  4. 04監査ログとファイル履歴の検索
  5. 05子組織の一覧と組織情報の取得
  6. 06ドメイン別のツールナビゲーション

活用シーン

  1. 01デバイス情報とチェックイン記録の確認
  2. 02保留中のアプリケーション承認の確認
  3. 03監査操作とファイル履歴の調査
  4. 04子組織の確認とコンピューター移動の準備

MCP 対応

ThreatLocker Portal API のコンピューター、承認、監査、組織に関する操作を MCP クライアントに公開します。stdio と HTTP に対応し、リクエストヘッダーで認証情報を渡すゲートウェイモードも利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"wyre-technology-threatlocker": {
"command": "docker",
"args": [
"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.6"
],
"env": {
"THREATLOCKER_API_KEY": "<THREATLOCKER_API_KEY>",
"THREATLOCKER_ORGANIZATION_ID": "<THREATLOCKER_ORGANIZATION_ID>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンド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.6
設定が必要な環境変数
THREATLOCKER_API_KEYシークレットThreatLocker API key
THREATLOCKER_ORGANIZATION_IDThreatLocker organization ID
MCP_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/wyre-technology/threatlocker-mcp:v1.3.6

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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

ローカル開発

  1. リポジトリをクローンします:
git clone https://github.com/WYRE-AI/threatlocker-mcp.git
cd threatlocker-mcp
  1. 依存関係をインストールします:
npm install
  1. 環境変数を設定します:
cp .env.example .env
# Edit .env with your ThreatLocker credentials
  1. ビルドして実行します:
npm run build
npm start

# Or for development with hot reload:
npm run dev
  1. サーバーをテストします:
# 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 を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。