Abnormal Security について
Abnormal Securityは、メール脅威の検出、調査ケース、修復操作を扱うMCPサーバーです。ツールはドメイン別の決定木ナビゲーションで整理され、脅威の詳細はMCP Apps対応ホストで読み取り専用のインタラクティブカードとして表示できます。
主な機能
- 01脅威、メッセージ、修復、悪用、ケースの各領域を移動
- 02検出された脅威ケースの一覧と詳細確認
- 03メールヘッダー、リンク、添付ファイル、分析の確認
- 04メール修復の実行または状態確認
- 05読み取り専用カードで脅威の詳細を表示
活用シーン
- 01検出されたメール脅威の詳細確認
- 02不審なメール内容と分析の調査
- 03メール修復操作の管理
- 04進行中のセキュリティ調査ケースの追跡
MCP 対応
Abnormal Securityの脅威、メッセージ、修復、悪用、ケース操作をMCPツールとして提供します。脅威の詳細はインタラクティブな読み取り専用MCP Appsカードに表示でき、修復は別途、明示的にツールを呼び出します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e ABNORMAL_API_TOKEN -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/abnormal-mcp:v1.2.5ABNORMAL_API_TOKENシークレットAbnormal Security API token (Bearer credential)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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/wyre-technology/abnormal-mcp:v1.2.5stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
abnormal-mcp
Abnormal Security 用 MCP サーバー — AI を活用した脅威検出、ケース管理、メール修復。
ツール
このサーバーでは、決定木アーキテクチャを採用しています。まず abnormal_navigate を呼び出してドメインを選択し、その後、ドメイン固有のツールを使用してください。
ナビゲーション
| ツール | 説明 |
|---|---|
abnormal_navigate | ドメイン(threats、messages、remediation、abuse、cases)に移動します |
abnormal_back | ドメイン選択に戻ります |
Threats ドメイン
| ツール | 説明 |
|---|---|
abnormal_threats_list | 検出された脅威ケースの一覧を取得します(ページネーション対応) |
abnormal_threats_get | ID を指定して、特定の脅威の詳細を取得します |
Messages ドメイン
| ツール | 説明 |
|---|---|
abnormal_messages_list | 脅威ケース内のメッセージ一覧を取得します |
abnormal_messages_get | メッセージの詳細な分析結果(ヘッダー、URL、添付ファイル、AI 分析)を取得します |
Remediation ドメイン
| ツール | 説明 |
|---|---|
abnormal_remediation_manage | メッセージの修復アクションを実行、または状態を確認します |
Abuse ドメイン
| ツール | 説明 |
|---|---|
abnormal_abuse_list | Abuse Mailbox を通じて報告されたフィッシングメールの一覧を取得します |
Cases ドメイン
| ツール | 説明 |
|---|---|
abnormal_cases_list | アクティブなセキュリティ調査ケースの一覧を取得します |
abnormal_cases_get | 特定のケースの詳細を取得します |
インタラクティブな脅威カード(MCP Apps)
abnormal_threats_getは MCP Apps 対応ホスト(Claude Desktop/web)でインタラクティブな脅威カードとして表示されます。件名、送信者、攻撃の分類、修復状況、脅威に含まれるメッセージが表示されます。カードは読み取り専用です。修復は、意図的にモデルを介して実行するアクションのままです。他のホストでは、従来どおりプレーンな JSON が返されます。デフォルトではニュートラルなデザインで、window.__BRAND__のインジェクションまたはMCP_BRAND_*環境変数(MCP_BRAND_NAME、MCP_BRAND_LOGO_URL、MCP_BRAND_PRIMARY_COLOR、MCP_BRAND_ACCENT_COLOR、MCP_BRAND_BG、MCP_BRAND_TEXT)でブランド設定できます。再ビルドは不要です。
認証
Abnormal Security は Bearer トークン認証を使用します。.env.example をコピーし、以下の変数を設定してください。
| 変数 | 必須 | 説明 |
|---|---|---|
ABNORMAL_API_TOKEN | stdio および AUTH_MODE=env の場合 | Abnormal Security API トークンです。Abnormal ポータルの Settings > Integrations > API で生成してください。 |
MCP_TRANSPORT | いいえ | stdio(デフォルト)または http |
AUTH_MODE | いいえ | env(Docker 外でのデフォルト)または gateway。イメージと Compose サービスでは gateway が設定されます。Gateway モードでは、各 /mcp リクエストに Authorization: Bearer が必要で、ABNORMAL_API_TOKEN へのフォールバックは行われません。 |
CONDUIT_S2S_SECRET | HTTP では必須 | サービス間シークレットです。openssl rand -hex 32 で生成してください。空の場合、または既知のプレースホルダー(changeme、placeholder、your-s2s-secret、replace-with-a-real-secret などの例示値)の場合、HTTP サーバーはエラーをログに記録してゼロ以外の終了コードで終了します。これが設定されていない場合、Compose は起動しません。実際の値をコミットしないでください。この値がログに記録されることはありません。 |
MCP_ALLOW_INSECURE_DEV | いいえ | CONDUIT_S2S_SECRET なしで HTTP を起動する場合に限り、ローカル開発用として正確に 1 を設定してください。プロセスは警告をログに記録し、X-Gateway-S2S の検証を行わず、127.0.0.1 のみで待ち受けます。ループバック以外の MCP_HTTP_HOST(0.0.0.0 を含む)は無視され、その上書きがログに記録されます。既知のプレースホルダーシークレットは引き続き拒否されます。 |
MCP_HTTP_HOST | いいえ | MCP_TRANSPORT=http の場合のバインドアドレスです。未設定の場合は 127.0.0.1 がデフォルトです。シークレットが設定されている場合、この値が使用されます。コンテナイメージでは 0.0.0.0 が設定されています。シークレットがない場合、insecure-dev バイパスによって 127.0.0.1 が強制されます。 |
MCP_HTTP_PORT | いいえ | HTTP ポートです。デフォルトは 8080 です。 |
/health は認証不要のままで、認証情報を読み取りません。stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。
X-Gateway-S2S 署名
MCP_TRANSPORT=http で実際の CONDUIT_S2S_SECRET を設定している場合、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。ヘッダーの値は t=<unix seconds>,v1=<hex> です。ここで、hex は CONDUIT_S2S_SECRET をキーとして、文字列 t=<unix seconds> をそのまま HMAC-SHA256 で署名した値(小文字の 16 進数 64 文字)です。タイムスタンプはサーバーの時刻から 300 秒以内でなければなりません。ヘッダーがない場合、または無効な場合は、Abnormal トークンが読み取られる前に 401 を返します。
TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}')
curl -sS http://127.0.0.1:8080/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H "X-Gateway-S2S: t=${TS},v1=${SIG}" \
-H "Authorization: Bearer $ABNORMAL_API_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
AUTH_MODE=gateway では Authorization ヘッダーが必須であり、認証情報の唯一の取得元です。AUTH_MODE=env でも有効な X-Gateway-S2S ヘッダーが必要です。そのうえで、リクエストに Authorization が含まれていない場合は、環境変数の ABNORMAL_API_TOKEN を使用します。
スタンドアロン(env モード)
export ABNORMAL_API_TOKEN=your-api-token
node dist/index.js
ゲートウェイモード
MCP ゲートウェイの背後にデプロイする場合は、AUTH_MODE=gateway を設定します。ゲートウェイは各 /mcp リクエストに X-Gateway-S2S で署名し、Authorization: Bearer {token} を挿入します。この認証情報ヘッダーがないリクエストは 401 で拒否されます。
実行
stdio(Claude Desktop 用)
npm install
npm run build
node dist/index.js
HTTP Streamable(ホスト型/ゲートウェイへのデプロイ用)
CONDUIT_S2S_SECRET に実際のシークレットが設定されていない場合、HTTP は起動しません。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" MCP_TRANSPORT=http AUTH_MODE=gateway node dist/index.js
シークレットを設定しないローカル HTTP は開発専用です。127.0.0.1 のみでバインドし、警告をログに記録します。
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm run start:http
Docker
コンテナ内でイメージは 0.0.0.0(MCP_HTTP_HOST)でリッスンし、デフォルトで AUTH_MODE=gateway を使用します。ポートをループバックで公開し、S2S シークレットを渡してください。ゲートウェイモードでは、API トークンは各リクエストの Authorization として渡されます。イメージは ABNORMAL_API_TOKEN を読み取りません。
docker build -t abnormal-mcp .
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-p 127.0.0.1:8080:8080 \
abnormal-mcp
Compose は CONDUIT_S2S_SECRET が設定されていない場合、起動を拒否します。また、AUTH_MODE=gateway を設定し、ABNORMAL_API_TOKEN を挿入せず、127.0.0.1:8080:8080 を公開します。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
シングルテナント HTTP(AUTH_MODE=env)でも S2S シークレットが必要です。そのうえで ABNORMAL_API_TOKEN を使用します。
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=env \
-e ABNORMAL_API_TOKEN=your-api-token \
-p 127.0.0.1:8080:8080 \
abnormal-mcp
開発
npm install
npm run dev # watch mode
npm test # run tests
npm run typecheck # TypeScript type check
npm run build:ui # rebuild the MCP Apps card bundle (only needed when ui/ changes)
ライセンス
Apache-2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。