mcpField
C
CyberQP

CyberQP

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

CyberQP について

CyberQP は、CyberQP の特権アクセス管理データを扱う AI アシスタント向けの読み取り専用 MCP サーバーです。顧客とアカウントのメタデータ、テナントイベント、JIT アカウントの状態とポリシーを参照でき、認証情報の取得や特権アクセスの変更は対象外です。

主な機能

  1. 01顧客とアカウントメタデータの一覧
  2. 02テナントイベントログとイベント種別の検索
  3. 03テナント企業プロフィールの表示
  4. 04JIT ポリシーと顧客ステータスの確認
  5. 05JIT アカウントの有無とテナント状態の確認

活用シーン

  1. 01顧客のアカウント状態の確認
  2. 02顧客や日付によるテナントイベントの絞り込み
  3. 03JIT ポリシーの要件と期間の確認

MCP 対応

選定された CyberQP PAM メタデータと、JIT の状態・ポリシー操作を MCP ツールとして公開します。OAuth2 Bearer トークンは環境変数またはゲートウェイモードのリクエストごとに受け取り、パスワード、OTP、アカウント作成・変更の操作は含みません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"wyre-ai-cyberqp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CYBERQP_ACCESS_TOKEN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/cyberqp-mcp:v1.0.2"
],
"env": {
"CYBERQP_ACCESS_TOKEN": "<CYBERQP_ACCESS_TOKEN>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンドdocker run -i --rm -e CYBERQP_ACCESS_TOKEN -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/cyberqp-mcp:v1.0.2
設定が必要な環境変数
CYBERQP_ACCESS_TOKENシークレットCyberQP OAuth2 access token (authorization_code flow, offline_access scope). Exchanged and refreshed upstream of this server - it only ever holds a live bearer token.
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/cyberqp-mcp:v1.0.2

ツール

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

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

詳細

CyberQP MCP サーバー

CyberQP(旧 QuickPass Cybersecurity)の特権アクセス管理(PAM)API 用 MCP サーバーです。AI アシスタントおよび WYRE Conduit ゲートウェイ向けに、顧客/アカウントのメタデータ、テナントのイベントログ、JIT(Just-In-Time)アカウントのステータス/ポリシーを可視化します。

認証

CyberQP は OAuth2 authorization_code フロー(offline_access スコープ、refresh_token による更新)で認証します。client_credentials ではありません。このコネクター自体が OAuth のやり取りを行うことはありません。認証/交換/更新の各処理は WYRE Conduit ゲートウェイが担当し、このサーバーが受け取るのは、CyberQP の API に Authorization: Bearer <token> として送信される有効なベアラーアクセストークンのみです。ゲートウェイモードでは、トークンはリクエストごとに X-CyberQP-Access-Token ヘッダー経由で届きます。ローカル/stdio モードでは、CYBERQP_ACCESS_TOKEN から一度だけ読み込まれます。

設定

.env.example をコピーし、以下の変数を設定してください。stdio トランスポートは CYBERQP_ACCESS_TOKEN を読み込み、CONDUIT_S2S_SECRET は使用しません。

Env varDescription
CYBERQP_ACCESS_TOKENCyberQP が発行した OAuth2 アクセストークンです。stdio および AUTH_MODE=env の HTTP で必須です。ゲートウェイモードでは読み込まれません。
MCP_TRANSPORTstdio(デフォルト)または http です。
AUTH_MODEenv(デフォルト。上記の変数を読み込みます)または gateway(Conduit ゲートウェイによって挿入される X-CyberQP-Access-Token ヘッダー経由で、認証情報がリクエストごとに届きます)です。コンテナーイメージと Compose のデフォルトは gateway です。
CONDUIT_S2S_SECRETHTTP で必須です。すべての /mcp リクエストで X-Gateway-S2S と照合される HMAC シークレットです。値が空、または既知のプレースホルダー(changeme、placeholder、secret、example などの公開サンプル値)の場合、プロセスはエラーをログに記録してゼロ以外の終了コードで終了します。未設定の場合、Compose は起動しません。実際の値をコミットしないでください。openssl rand -hex 32 で生成してください。この値がログに記録されることはありません。
MCP_ALLOW_INSECURE_DEVCONDUIT_S2S_SECRET なしで HTTP を起動する場合に限り、ローカル開発用として値を 1 に設定してください。プロセスは警告をログに記録し、X-Gateway-S2S の検証を行わず、127.0.0.1 のみでバインドします。より広い範囲の MCP_HTTP_HOST(0.0.0.0 を含む)は無視され、その上書きがログに記録されます。既知のプレースホルダーシークレットは引き続き拒否されます。
MCP_HTTP_HOSTMCP_TRANSPORT=http の場合のバインドアドレスです。未設定の場合は 127.0.0.1 にバインドします。CONDUIT_S2S_SECRET が設定されていればこの値が使われます(コンテナーイメージでは 0.0.0.0 に設定されています)。シークレットがない場合、非セキュアな開発用のバイパスによって 127.0.0.1 が強制されます。
MCP_HTTP_PORTHTTP ポートです。デフォルトは 8080 です。
LOG_LEVELdebug | info(デフォルト)| warn | error です。

/health は認証不要のままで、認証情報を読み込みません。

HTTP 認証

MCP_TRANSPORT=http かつ CONDUIT_S2S_SECRET が設定されている場合、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。

t=<unix seconds>,v1=<hex hmac-sha256>

v1 は、ASCII メッセージ t=<unix seconds> を CONDUIT_S2S_SECRET をキーとして計算した、小文字の 16 進数形式の HMAC-SHA256 です。タイムスタンプはサーバーの時計から 300 秒以内である必要があります。ヘッダーがない場合、または無効な場合は、ベンダーの認証情報を読み込む前に 401 を返します。シークレットがログやエラーボディに書き込まれることはありません。

AUTH_MODE=gateway の場合、/mcp には X-CyberQP-Access-Token も必要です。このヘッダーのみが、そのリクエストの認証情報ソースです。トークンがない場合は 401 を返します。サーバーがプロセス環境内の CYBERQP_ACCESS_TOKEN にフォールバックすることはありません。

X-Gateway-S2S: t=1710000000,v1=<hmac-sha256 of "t=1710000000">
X-CyberQP-Access-Token: <live bearer token>

シングルテナント HTTP(AUTH_MODE=env)でも、有効な X-Gateway-S2S ヘッダーが必要です。その場合、アクセストークンは CYBERQP_ACCESS_TOKEN から取得されます。

リクエスト制限
  • HTTP リクエストボディーの上限は 256 KiB(262144 バイト)です。X-Gateway-S2S のチェック(および AUTH_MODE=gateway の場合は X-CyberQP-Access-Token の存在チェック)を通過した後、Content-Length が上限を超えていると、JSON-RPC エラーを伴う 413 が返されます。Content-Length がないボディーは、MCP SDK のトランスポートによって制限されます。認証されていないリクエストには、引き続き最初に 401 が返されます。
  • tools/call の引数は 10,000 要素(あらゆる階層にあるすべての配列要素とオブジェクトキー)までに制限されています。上限を超える入力には、固定メッセージを含む isError ツール結果が返されます(ツール名は含まれません)。また、その入力がディスパッチされることはありません。

これらの制限は、CVE-2026-111768 / GHSA-46jr-4wx8-v453(検証中のメモリ枯渇)および GHSA-f897-62hf-6gxq(リクエストボディー/バッチ上限の欠如)に対処するものです。

ツール

顧客
  • cyberqp_list_customers - 認証済みの技術者が閲覧できる顧客を一覧表示します。ディレクトリタイプと名前で絞り込めます。
  • cyberqp_get_customer_accounts - 顧客のアカウントメタデータ(ID、ユーザー名、タイプ、ステータス)を一覧表示します。
  • cyberqp_get_customer_accounts_count - 顧客のアカウントタイプごとの件数を取得します。
イベント
  • cyberqp_get_events - テナントのイベントログを取得します。顧客、アカウント、イベントタイプ、ステータス、日付範囲で絞り込めます。
  • cyberqp_get_event_types - イベントタイプの値をすべて取得します。
テナント
  • cyberqp_get_tenant_company_data - 認証済みテナント自身の会社プロフィールを取得します。
JIT(Just-In-Time)- ステータスとポリシーのみ
  • cyberqp_get_jit_policies - 顧客とアカウントタイプに設定されている JIT ポリシー(承認要件、最大期間)を取得します。
  • cyberqp_get_customer_jit_status - 特定の顧客の JIT アカウントステータスを取得します。
  • cyberqp_check_jit_account_exists - 顧客とディレクトリタイプを指定して、JIT アカウントが存在するかどうかを確認します。
  • cyberqp_get_tenant_jit_status - テナント全体の JIT アカウントステータスを取得します。

対象範囲

これは意図的に範囲を絞った、読み取り専用で、認証情報を公開しない v1 の機能です。 CyberQP は PAM 製品です。実際のエンドポイントの中には、平文のパスワードや OTP コードをそのまま返すものや、特権アクセスを変更・プロビジョニングするものがあります。設計上、見落としではなく、そうした機能はここでは一切実装していません。

明確な除外対象(認証情報を公開するもの)—実装しません:

  • GET /api/v1/account/{accountId}/password (AccountController_getAccountPassword_v1)
  • GET /api/v1/jit/customer/{customerId}/account/{accountId}/password (JitController_getJitAccountPassword_v1)
  • GET /api/v1/jit/customer/{customerId}/account/{accountId}/otp (JitController_getJitAccountOTP_v1)
  • POST /api/v1/jit/customer/{customerId}/account/{accountId}/otp (JitController_saveJitAccountOtpSecret_v1)
  • DELETE /api/v1/jit/customer/{customerId}/account/{accountId}/otp (JitController_deleteJitAccountOtpSecret_v1)

明確な除外対象(プロビジョニング/変更)—実装しません:

  • PATCH /api/v1/jit/customer/{customerId}/account/{accountId}/enable (JitController_enableJitAccount_v1)
  • PATCH /api/v1/jit/customer/{customerId}/account/{accountId}/disable (JitController_disableJitAccount_v1)
  • DELETE /api/v1/jit/customer/{customerId}/account/{accountId} (JitController_deleteJitAccount_v1)
  • POST /api/v1/jit/customer/{customerId}/account (JitController_createJitAccount_v1)

v1 の対象範囲外(認証情報やプロビジョニングに関するものではなく、このコネクターのメタデータ可視化機能に含まれないだけです。意図的に追加を決定すれば、後から追加できます):

  • GET /api/v1/customers/installer (CustomerController_downloadAgent_v1) — 構造化データではなく、バイナリー形式のインストーラーを返します。
  • GET /api/v1/tenants/install-token (TenantController_getInstallToken_v1) — インストールトークンを返します。
  • GET /api/v1/auth/login、GET /api/v1/auth/status、POST /api/v1/auth/refresh-token、POST /api/v1/auth/revoke-token、POST /api/v1/auth/notification-engine-token — ゲートウェイがすでに管理している OAuth/セッション関連の処理であり、ツール向けの機能ではありません。
  • POST /api/v1/event (EventController_processGenericEvent_v1) — 書き込み操作です。
  • POST /api/v1/identity-verification/self-serve-notification (IdentityVerificationController_triggerSelfServePushIdentityVerification_v1) — 書き込み操作/通知トリガーです。

需要があれば、対象範囲を慎重に決定したうえで、追加機能として加えることができます。デフォルトでは追加しません。

開発

npm install
npm run build
npm test
npm run lint   # tsc --noEmit

Docker

イメージはコンテナー内の 0.0.0.0(MCP_HTTP_HOST)でリッスンし、デフォルトで AUTH_MODE=gateway を使用します。ポートをループバックで公開し、S2S シークレットを渡してください。ゲートウェイモードでは、アクセストークンは各リクエストの X-CyberQP-Access-Token として渡されます。環境変数からは読み込まれません。

docker build -t cyberqp-mcp .
docker run \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -p 127.0.0.1:8080:8080 \
  cyberqp-mcp

Compose は CONDUIT_S2S_SECRET が設定されていない場合、起動を拒否します。また、AUTH_MODE のデフォルトは gateway、公開ポートは 127.0.0.1:8080:8080 で、CYBERQP_ACCESS_TOKEN と env_file は設定しません。

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

シングルテナントの HTTP(AUTH_MODE=env)でも S2S シークレットは必須です。そのうえで CYBERQP_ACCESS_TOKEN を使用します。

docker run \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -e AUTH_MODE=env \
  -e CYBERQP_ACCESS_TOKEN="$CYBERQP_ACCESS_TOKEN" \
  -p 127.0.0.1:8080:8080 \
  cyberqp-mcp

シークレットなしのローカル HTTP は、開発用途に限られます。MCP_HTTP_HOST が 0.0.0.0 であっても 127.0.0.1 にバインドし、警告をログに出力します。

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm run start:http

コメント

MCP は初めてですか?

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

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