mcpField
I
Inforcer

Inforcer

ローカル
github.comセキュリティ1今日更新

Inforcer について

Inforcer の Microsoft 365 ベースラインガバナンスデータに、主に読み取り専用でアクセスする MCP サーバーです。評価の実行とレポートのキュー登録もでき、数値 ID、DNS 名、GUID、表示名からテナントを特定します。

主な機能

  1. 01テナント、ベースライン、整合性のずれの照会
  2. 02ポリシー、セキュアスコア、ID、監査データの確認
  3. 03複数の識別子からテナントを解決
  4. 04評価の実行とレポートのキュー登録
  5. 05領域別のツールナビゲーション

活用シーン

  1. 01テナントのベースラインと構成のずれを確認
  2. 02セキュアスコア、ID、監査記録を調査
  3. 03名前や GUID でテナントを特定
  4. 04評価を実行またはガバナンスレポートを作成

MCP 対応

テナント、ベースラインガバナンス、ID、監査、レポートに関する Inforcer のツールを MCP クライアントに公開します。大半は読み取り専用で、評価の実行とレポートのキュー登録には確認が必要です。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"wyre-ai-inforcer": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"INFORCER_REGION",
"-e",
"INFORCER_API_KEY",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/inforcer-mcp:v1.1.3"
],
"env": {
"INFORCER_REGION": "<INFORCER_REGION>",
"INFORCER_API_KEY": "<INFORCER_API_KEY>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンドdocker run -i --rm -e INFORCER_REGION -e INFORCER_API_KEY -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/inforcer-mcp:v1.1.3
設定が必要な環境変数
INFORCER_REGIONInforcer API region. One of: anz, eu, uk, us. Required.
INFORCER_API_KEYシークレットInforcer API key (sent as the Inf-Api-Key header). Required.
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-ai/inforcer-mcp:v1.1.3

ツール

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

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

詳細

Inforcer MCP サーバー

Build Status License Node.js

Model Context Protocol(MCP) サーバーです。AI アシスタントに、Inforcer の Microsoft 365 ベースラインガバナンスデータ(テナント、ベースライン、整合性/ドリフト、ポリシー、セキュアスコア、ID、監査ログ、レポート生成)への構造化されたほぼ読み取り専用のアクセスを提供します。また、評価の実行を開始するアクションと、レポートをキューに登録するアクションの2つの書き込み操作も備えています。

注記: このプロジェクトは Wyre Technology がメンテナンスしています。

⚠ コミュニティ提供の API

執筆時点では、Inforcer は公式の REST API 仕様を公開していません。このサーバーは @wyre-technology/node-inforcer SDK をラップしています。この SDK の API サーフェスは、royklo/InforcerCommunity からコミュニティによって提供されたものです。エンドポイント、フィールドの形式、動作は予告なく変更される可能性があります。結果はその点を踏まえて扱い、重要な情報は Inforcer ポータルで確認してください。

読み取り専用の範囲

このサーバーのすべてのツールは、次の2つを除き、読み取り専用です。

  • inforcer_assessments_run — テナントの評価実行を開始します。
  • inforcer_reports_run — 1つ以上のテナントで、1つ以上のレポート実行をキューに登録します。

どちらも影響度の高い操作(破壊的操作ではありません)です。Inforcer で実際の処理を開始し、オペレーターにも表示されます。どちらもその旨が注記されており、実行前に確認を求めます。呼び出す前にユーザーの確認を得てください。

ポリシー、テナント、ベースラインを作成・更新・削除するツールはありません。これらの操作はコミュニティ API では公開されていないため、意図的に含めていません。

クイックスタート

Claude Code(CLI):

claude mcp add inforcer-mcp \
  -e INFORCER_REGION=us \
  -e INFORCER_API_KEY=your-api-key \
  -- npx -y github:WYRE-AI/inforcer-mcp

Docker およびソースからのインストール方法については、インストールを参照してください。

機能

  • 🔌 MCP プロトコルへの準拠:MCP ツールとプロンプトを完全にサポート
  • 🛡️ ガバナンス範囲(読み取り専用):テナント、ベースライン、整合性/ドリフト、ポリシー、Microsoft Secure Score、Entra ID の ID、監査ログ
  • 🔍 決定木ナビゲーション:まず inforcer_navigate でドメインを確認し、その後、ドメイン固有のツールを呼び出します
  • 🧭 柔軟なテナント解決:ほとんどのツールでは、数値の Client Tenant ID、テナントの DNS 名、Azure AD GUID、またはわかりやすい名前を tenant として指定できます。自動的に解決されます
  • 🔒 セキュアな認証:Inf-Api-Key ヘッダー認証(リージョン単位)
  • 🌐 2種類のトランスポート:stdio(ローカル)と HTTP Streamable(ゲートウェイ/Docker)
  • 🐳 Docker 対応:HTTP トランスポートとヘルスチェックを備えたコンテナ化デプロイ
  • 📊 構造化ログ:ログレベルを設定可能。認証情報は記録されません

目次

インストール

オプション 1:Claude Code(CLI)
claude mcp add inforcer-mcp \
  -e INFORCER_REGION=us \
  -e INFORCER_API_KEY=your-api-key \
  -- npx -y github:WYRE-AI/inforcer-mcp
オプション 2:Docker

コンテナ内では 0.0.0.0 でリッスンし、デフォルトで AUTH_MODE=gateway を使用します。ポートをループバックで公開し、実際の S2S シークレットを渡してください。ゲートウェイモードでは、Inforcer のリージョンと API キーは各リクエストのヘッダーで渡され、環境変数からは読み込まれません。

docker build -t inforcer-mcp .
docker run \
  -e CONDUIT_S2S_SECRET \
  -p 127.0.0.1:8080:8080 \
  inforcer-mcp

または、ビルド済みのイメージを取得します。

docker run -d \
  -e CONDUIT_S2S_SECRET \
  -p 127.0.0.1:8080:8080 \
  ghcr.io/wyre-ai/inforcer-mcp:latest

Compose はプロジェクトの .env から CONDUIT_S2S_SECRET を読み込み、この値が未設定の場合は起動を拒否します。コマンドラインでこの変数を割り当てないでください。空のシェル値が .env の値を上書きします。

docker compose up
オプション 3:ソースから
git clone https://github.com/WYRE-AI/inforcer-mcp.git
cd inforcer-mcp
export NODE_AUTH_TOKEN=$(gh auth token)   # to install @wyre-ai/* from GitHub Packages
npm ci
npm run build

設定

変数必須説明
INFORCER_REGIONstdio および AUTH_MODE=env の場合Inforcer API のリージョンです。anz、eu、uk、us のいずれかを指定します。デフォルト値はありません。Compose ゲートウェイサービスでは、この変数は読み込まれません。
INFORCER_API_KEYstdio および AUTH_MODE=env の場合Inforcer API キーです。Inf-Api-Key ヘッダーとして送信されます。Compose ゲートウェイサービスでは、この変数は読み込まれません。
MCP_TRANSPORTいいえstdio(デフォルト)または http
AUTH_MODEいいえgateway(Docker イメージと Compose のデフォルト)または env。ゲートウェイモードでは、各 /mcp リクエストに X-Inforcer-Region と X-Inforcer-API-Key が必要です。INFORCER_* へのフォールバックは行われません。env では、S2S 認証の成功後にのみこれらの変数が使用されます。
CONDUIT_S2S_SECRETHTTP では必須サービス間シークレットです。openssl rand -hex 32 で生成してください。空の場合、または既知のプレースホルダー(changeme、your-s2s-secret、secret、placeholder などの公開サンプル)の場合、HTTP サーバーはエラーをログに記録して、ゼロ以外のステータスで終了します。Compose はこの値がないと起動しません。実際の値をコミットしないでください。この値がログに記録されることはありません。
MCP_ALLOW_INSECURE_DEVいいえCONDUIT_S2S_SECRET がなくても HTTP を起動できるよう、ローカル開発時に限り、値を正確に 1 に設定します。プロセスは警告をログに記録し、X-Gateway-S2S を検証せず、MCP_HTTP_HOST がより広いアドレスに設定されていても、リスナーを 127.0.0.1 に強制します。既知のプレースホルダーシークレットは引き続き拒否されます。
MCP_HTTP_HOSTいいえMCP_TRANSPORT=http の場合のバインドアドレスです。未設定の場合は 127.0.0.1 がデフォルトです。CONDUIT_S2S_SECRET が設定されている場合は、この値が適用されます。コンテナーイメージでは 0.0.0.0 が設定されます。
MCP_HTTP_PORTいいえHTTP ポートです。デフォルトは 8080 です。
LOG_LEVELいいえログレベル(debug、info、warn、error)です。デフォルトは info です。

/health は認証なしで利用でき、認証情報を読み取りません。stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。

stdio および AUTH_MODE=env では、API 呼び出しに INFORCER_REGION と INFORCER_API_KEY の両方が必要です。ツールの検出(tools/list)はこれらがなくても機能しますが、最初の実際の呼び出しでは、どちらかが未設定の場合にエラーになります。

HTTP 認証

MCP_TRANSPORT=http で CONDUIT_S2S_SECRET が設定されている場合、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。検証処理は src/s2s-verify.ts の verifyS2sHeader にあります。ヘッダーの値は t=<unix seconds>,v1=<hex> です。hex は、CONDUIT_S2S_SECRET をキーとして、リテラル文字列 t=<unix seconds> に対して計算した HMAC-SHA256(小文字の 16 進数 64 文字)です。タイムスタンプはサーバーの時計との誤差が 300 秒以内でなければなりません。ヘッダーがない場合や無効な場合は、ベンダーの認証情報を読み取る前に HTTP 401 が返されます。

CONDUIT_S2S_SECRET は、あらかじめ環境に設定しておく必要があります。サンプルではプロセス内でこの変数を読み取ります。コマンド引数としてシークレットを渡すことはありません。

TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | node -e 'const {createHmac}=require("node:crypto"); const chunks=[]; process.stdin.on("data",(c)=>chunks.push(c)); process.stdin.on("end",()=>{ const secret=process.env.CONDUIT_S2S_SECRET; if(!secret){ console.error("CONDUIT_S2S_SECRET is not set"); process.exit(1); } process.stdout.write(createHmac("sha256", secret).update(Buffer.concat(chunks)).digest("hex")); });')
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 'X-Inforcer-Region: us' \
  -H "X-Inforcer-API-Key: $INFORCER_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

AUTH_MODE=gateway の場合、/mcp には X-Inforcer-Region と X-Inforcer-API-Key も必要です。リクエストの認証情報は、これらのヘッダーのみを参照します。AUTH_MODE=env の場合、署名付きリクエストでは環境変数の INFORCER_REGION と INFORCER_API_KEY が使用されます。

テナント識別子

Inforcer のテナントスコープのルートでは、整数の Client Tenant ID を使用します。これは Azure AD テナント GUID(msTenantId)とは異なります。ツールを使いやすくするため、tenant 引数では次のいずれかを指定できます。

  • 数値の Client Tenant ID(例:42)、
  • テナントの DNS 名(例:contoso.onmicrosoft.com)、
  • Azure AD テナント GUID(msTenantId)、または
  • わかりやすい名前(例:Contoso)。

名前、DNS 名、GUID は、テナントスコープの各呼び出しの前に、SDK の resolveTenantId によって数値の Client Tenant ID に解決されます。名前が複数のテナントに一致する場合、呼び出しは明確な「ambiguous」エラーで失敗します。その場合は、数値の Client Tenant ID を指定してください。入力がどの Client Tenant ID に対応するかを正確に確認するには、inforcer_tenants_resolve を使用してください。

ドメインとツール

サーバーは決定木によるナビゲーションを使用します。inforcer_navigateでドメインを選択するか、任意のツールを直接呼び出してください。inforcer_assessments_runとinforcer_reports_runを除くすべてのツールは読み取り専用です。

ドメインツール読み取り専用
navigationinforcer_navigate、inforcer_status(ライブのbaselines.list()接続チェック)✅
tenantsinforcer_tenants_list、inforcer_tenants_get、inforcer_tenants_resolve✅
baselinesinforcer_baselines_list✅
alignmentinforcer_alignment_scores、inforcer_alignment_details(テナントごとのドリフト)✅
policiesinforcer_policies_list(テナント別)✅
secure-scoresinforcer_secure_scores_get(テナント別)✅
identityinforcer_users_list、inforcer_users_get、inforcer_groups_list、inforcer_groups_get、inforcer_roles_list✅
auditinforcer_audit_event_types、inforcer_audit_search✅
assessmentsinforcer_assessments_list(✅)、inforcer_assessments_run(⚠ 高い影響、読み取り専用ではありません)混在
reportsinforcer_reports_types_list、inforcer_reports_runs_list、inforcer_reports_run_status、inforcer_reports_download_output(✅)、inforcer_reports_run(⚠ 高い影響、読み取り専用ではありません)混在

inforcer_reports_runは非同期でキューに登録されます。isTerminal: trueになるまでinforcer_reports_run_statusで実行状況をポーリングし、その後、各出力をinforcer_reports_download_outputで取得してください(ファイル内容はBase64エンコードで返されます)。

ゲートウェイ接続

WYRE MCP Gatewayの背後でホストする場合は、AUTH_MODE=gatewayとMCP_TRANSPORT=httpを設定してください。このモードではサーバーはステートレスで(リクエストごとに新しいMCPサーバーとトランスポートを使用し)、ゲートウェイが挿入するリクエストごとのHTTPヘッダーから認証情報を読み取ります。いずれかのヘッダーがないリクエストにはHTTP 401を返し、INFORCER_REGIONやINFORCER_API_KEYへのフォールバックは行いません。

ヘッダー対応先
X-Gateway-S2SHTTP authenticationで説明されているHMAC証明。CONDUIT_S2S_SECRETが設定されている場合、すべての/mcpリクエストで必須です。
X-Inforcer-RegionINFORCER_REGION
X-Inforcer-API-KeyINFORCER_API_KEY

コンテナーイメージのデフォルトはMCP_TRANSPORT=httpとAUTH_MODE=gatewayです。/healthは常に200を返し、認証を必要とせず、ベンダーの認証情報も読み取りません。

Dockerのデプロイ

docker-compose.ymlを参照してください。リポジトリに含まれるComposeサービスはゲートウェイモードです。127.0.0.1:8080:8080を公開し、CONDUIT_S2S_SECRETを必須とし、INFORCER_REGION、INFORCER_API_KEY、env_fileは設定しません。

cp .env.example .env
# Set CONDUIT_S2S_SECRET in .env (openssl rand -hex 32). Leave INFORCER_* empty
# for the gateway service; those credentials arrive as request headers.
# Compose loads .env itself. Do not prefix the command with a shell assignment.
docker compose up -d

単一テナントのHTTP(AUTH_MODE=env)でもS2Sシークレットが必要で、その後INFORCER_REGIONとINFORCER_API_KEYを使用します。これはゲートウェイComposeサービスとは別です。

docker run \
  -e CONDUIT_S2S_SECRET \
  -e AUTH_MODE=env \
  -e INFORCER_REGION=us \
  -e INFORCER_API_KEY=your-key \
  -p 127.0.0.1:8080:8080 \
  inforcer-mcp

シークレットを使わないローカルHTTPは開発専用です。127.0.0.1のみにバインドし、警告をログに記録します。ループバック以外のMCP_HTTP_HOSTは無視され、その上書きはログに記録されます。

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm run start:http

開発

export NODE_AUTH_TOKEN=$(gh auth token)
npm ci
npm run build       # Build the project
npm run dev         # Watch mode
npm run test        # Run tests
npm run lint        # Type-check
npm run clean       # Remove dist/

# HTTP refuses to start until CONDUIT_S2S_SECRET is a real secret
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" npm run start:http

# Local HTTP only, without a service-to-service secret (always binds 127.0.0.1)
MCP_ALLOW_INSECURE_DEV=1 npm run start:http

テスト

npm test            # Run test suite
npm run test:watch  # Watch mode

貢献

ガイドラインについてはCONTRIBUTING.mdを参照してください。

ライセンス

Apache 2.0 — Copyright WYRE Technology

コメント

MCP は初めてですか?

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

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