mcpField
Z
Zscaler Zero Trust Exchange

Zscaler Zero Trust Exchange

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

Zscaler Zero Trust Exchange について

Zscaler Zero Trust Exchange MCP サーバーは、AI エージェントが ZPA、ZIA、ZDX、ZCC などの Zscaler サービスを扱えるようにするツールです。既定では読み取り専用で動作し、書き込み操作には明示的なフラグと許可リストが必要です。現在はパブリックプレビュー段階で、本番環境での利用は推奨されていません。

主な機能

  1. 01ZPA、ZIA、ZDX、ZCC などのサービスにまたがるツール
  2. 02既定で読み取り専用モード
  3. 03フラグと許可リストで制御される書き込みツール
  4. 04結果を絞り込む JMESPath クエリオプション
  5. 05選択したサービスだけを読み込むツールセット

活用シーン

  1. 01エージェントを通じて ZPA のアプリケーションセグメントとセグメントグループを一覧表示する
  2. 02読み取り専用で ZIA のファイアウォールルールを確認する
  3. 03条件で ZCC のデバイス一覧を絞り込む

MCP 対応

本プロジェクトは MCP サーバーであり、Zscaler 各サービスのツールを MCP クライアントに公開します。利用可能なツールは権限設定によって制御されます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"zscaler-zscaler": {
"command": "uvx",
"args": [
"zscaler-mcp"
],
"env": {
"ZSCALER_CLIENT_ID": "<ZSCALER_CLIENT_ID>",
"ZSCALER_CLIENT_SECRET": "<ZSCALER_CLIENT_SECRET>",
"ZSCALER_CUSTOMER_ID": "<ZSCALER_CUSTOMER_ID>",
"ZSCALER_VANITY_DOMAIN": "<ZSCALER_VANITY_DOMAIN>"
}
}
}
}
起動コマンドuvx zscaler-mcp
設定が必要な環境変数
ZSCALER_CLIENT_IDシークレットZscaler OneAPI Client ID from ZIdentity console.
ZSCALER_CLIENT_SECRETシークレットZscaler OneAPI Client Secret from ZIdentity console.
ZSCALER_CUSTOMER_IDZscaler Customer ID from ZIdentity console.
ZSCALER_VANITY_DOMAINZscaler vanity domain (e.g. mycompany.zscloud.net).

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypizscaler-mcp0.15.4
ocidocker.io/zscaler/zscaler-mcp-server:latest

ツール

254

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
queryanyいいえAPI 呼び出し後に結果へ適用し、クライアント側でフィルタリングと射影を行うための任意の JMESPath 式です。例:"[?enabled==`true`]"、"[*].{name: name, id: id}"、"length(@)"。省略すると完全なレコードを取得します。重要:フィールド名は返されたレコードのキーであり、Zscaler API のドキュメントで camelCase(`customCategory`)が使われていても、通常は snake_case(`custom_category`)です。綴りを推測すると、実際の回答のように見える空のリストが返されます。このツールのレコードをまだ確認していない場合は、まず `query` を指定せずに一度呼び出し、応答からキーを確認してください。
org_idstringはい

詳細

Zscaler MCP

PyPI version PyPI - Python Version Documentation codecov GitHub commit activity License Automation Hub Zscaler Community

zscaler-mcp-server は、AI エージェントを Zscaler Zero Trust Exchange プラットフォームに接続する Model Context Protocol(MCP)サーバーです。セキュリティのため、サーバーはデフォルトで読み取り専用モードで動作し、書き込み操作を有効にするには明示的なオプトインが必要です。

サポートに関する免責事項

-> 免責事項: このプロバイダーを使用する前に、一般的なサポートに関する声明をご確認ください。また、一般的な問題への対処方法については、トラブルシューティングガイドもご参照ください。

重要

🚧 パブリックプレビュー:このプロジェクトは現在パブリックプレビュー中で、活発に開発が進められています。安定版 1.0 のリリース前に、機能や仕様が変更される場合があります。ぜひお試しください。ただし、本番環境への導入はお控えください。最終リリースの検討に役立てるため、GitHub Issuesからフィードバックをお寄せください。

📄 目次

📺 概要

Zscaler Integrations MCP Server は、エージェントにコンテキストを提供します。次のようなプロンプトを試してみてください。

  • 「ZPA アプリケーションセグメントを一覧表示して」
  • 「ZPA セグメントグループを一覧表示して」
  • 「ZIA ルールラベルを一覧表示して」

警告

🔒 デフォルトでは読み取り専用:セキュリティ上、この MCP サーバーはデフォルトで読み取り専用モードで動作します。利用できる操作は list_* と get_* のみです。Zscaler リソースを作成、更新、削除できるツールを有効にするには、--enable-write-tools フラグを使用するか、ZSCALER_MCP_WRITE_ENABLED=true を設定して、書き込みモードを明示的に有効にする必要があります。詳しくは、セキュリティと権限のセクションを参照してください。

ヒント

効果的なプロンプトの書き方:このサーバーは、複数の Zscaler サービスにわたって402 個のツールを提供します。ほとんどの MCP クライアント(Claude Desktop、Cursor など)はツールの遅延読み込みを使用し、プロンプトに基づいて関連するツールを検索します。最良の結果を得るには、プロンプトでサービスと操作を具体的に指定してください。

  • 適切:「ZPA アプリケーションセグメントを一覧表示して」 — 適切なサービスとツールを直接対象にしています
  • 適切:「ZIA ファイアウォールルールを表示して」 — サービス(zia)と操作(list)が明確です
  • 効果が低い:「デバイスを表示して」 — 複数のサービスがデバイス関連のツールを提供しているため、曖昧です

サービスを無効にすると、そのツールはサーバーから完全に削除されます。ただし、AI エージェントは他のサービスで関連ツールを検索しようとする場合があります。予期しない結果が返された場合は、サービス名(例:zpa、zia、zdx、zcc、zcell、zms)を指定してプロンプトを調整してください。

🔒 セキュリティと権限

Zscaler MCP Server は、きめ細かな権限管理と安全なデフォルト設定を備えた、セキュリティを最優先する設計を採用しています。

読み取り専用モード(デフォルト — 常に利用可能)

デフォルトでは、サーバーは読み取り専用モードで動作し、情報を一覧表示または取得するツールのみを公開します。

  • ✅ 常に利用可能 — 読み取り専用ツールはサーバーによって登録されます
  • ✅ AI エージェントが自律的に安全に使用できます
  • ✅ リソースを誤って変更または削除するリスクはありません
  • ✅ すべての list_* および get_* 操作を利用できます(読み取り専用ツールは 110 個以上)
  • ❌ すべての create_*、update_*、delete_* 操作はデフォルトで無効です
  • 💡 注:AI エージェントの UI 設定で、読み取り専用ツールを有効にする必要がある場合があります
# Read-only mode (default - safe)
zscaler-mcp

サーバーが読み取り専用モードで起動すると、次のように表示されます。

🔒 Server running in READ-ONLY mode (safe default)
   Only list and get operations are available
   To enable write operations, use --enable-write-tools AND --write-tools flags

💡 読み取り専用ツールは、フラグの設定にかかわらずサーバーによって常に登録されます。 サーバー側で有効にする必要はありません。注:Claude Desktop などの AI エージェントの UI では、使用前に個々のツールを有効にする必要がある場合があります。

書き込みモード(明示的なオプトイン — 許可リストが必須)

Zscaler リソースを作成、変更、または削除できるツールを有効にするには、両方のフラグを指定する必要があります。

  1. ✅ --enable-write-tools — 書き込み操作を全体的に有効化します
  2. ✅ --write-tools "pattern" — 必須の明示的な許可リストです

🔐 セキュリティ:許可リストは必須です — --write-tools を指定せずに --enable-write-tools を設定した場合、登録される書き込みツールは0 個です。これにより、有効にする書き込み操作を意識して選択できます。

# ❌ WRONG: This will NOT enable any write tools (allowlist missing)
zscaler-mcp --enable-write-tools

# ✅ CORRECT: Explicit allowlist required
zscaler-mcp --enable-write-tools --write-tools "zpa_create_*,zpa_delete_*"

許可リストを指定せずに書き込みモードを有効にしようとすると、次のように表示されます。

⚠️  WRITE TOOLS MODE ENABLED
⚠️  NO allowlist provided - 0 write tools will be registered
⚠️  Read-only tools will still be available
⚠️  To enable write operations, add: --write-tools 'pattern'
書き込みツールの許可リスト(必須)

許可リストでは、2 段階のセキュリティを適用します。

  1. ✅ 第 1 のゲート:--enable-write-tools を設定する必要があります(全体的な有効化)
  2. ✅ 第 2 のゲート:明示的な許可リストによって、登録する書き込みツールを決定します(必須)

許可リストの例:

# Enable ONLY specific write tools with wildcards
zscaler-mcp --enable-write-tools --write-tools "zpa_create_*,zpa_delete_*"

# Enable specific tools without wildcards
zscaler-mcp --enable-write-tools --write-tools "zpa_create_application_segment,zia_create_rule_label"

# Enable all ZPA write operations (but no ZIA/ZDX/ZTW)
zscaler-mcp --enable-write-tools --write-tools "zpa_*"

または、環境変数で指定します。

export ZSCALER_MCP_WRITE_ENABLED=true
export ZSCALER_MCP_WRITE_TOOLS="zpa_create_*,zpa_delete_*"
zscaler-mcp

ワイルドカードパターンをサポートしています:

  • zpa_create_* — すべての ZPA 作成ツールを許可します
  • zpa_delete_* — すべての ZPA 削除ツールを許可します
  • zpa_* — すべての ZPA 書き込みツールを許可します
  • *_application_segment — アプリケーションセグメントに対するすべての操作を許可します
  • zpa_create_application_segment — 完全一致(ワイルドカードなし)

有効な許可リストを使用すると、次のように表示されます。

⚠️  WRITE TOOLS MODE ENABLED
⚠️  Explicit allowlist provided - only listed write tools will be registered
⚠️  Allowed patterns: zpa_create_*, zpa_delete_*
⚠️  Server can CREATE, MODIFY, and DELETE Zscaler resources
🔒 Security: 85 write tools blocked by allowlist, 8 allowed
ツール設計の理念

各操作は、意図が明確に分かる名前を付けた、個別の単一目的のツールです。

✅ 適切な例(動詞ベース — 現在の設計)
zpa_list_application_segments    ← Read-only, safe to allow-list
zpa_get_application_segment      ← Read-only, safe to allow-list
zpa_create_application_segment   ← Write operation, requires --enable-write-tools
zpa_update_application_segment   ← Write operation, requires --enable-write-tools
zpa_delete_application_segment   ← Destructive, requires --enable-write-tools

この設計により、AI アシスタント(Claude、Cursor、GitHub Copilot)は次のことができます。

  • 自律的な調査に使う読み取り専用ツールを許可リストに登録する
  • 書き込み操作にはユーザーの明示的な確認を必須にする
  • ツール名から、それぞれの意図を明確に把握する
レスポンス:API レコードをそのまま返します

読み取りツールは、Zscaler API レコードを変更せずに返します。サーバーがリソースの属性を削除、改名、または再定義することはありません。属性のセットは API に属するため、Zscaler が将来追加するフィールドも、サーバーのアップグレードなしで利用できます。

レスポンスを小さく保つには、サーバーが推測するのではなく、返される内容をユーザーが制御します。方法は 2 つあります。

  • --toolsets — 必要なツールの範囲だけを読み込み、ツールカタログを小さく保ちます(ツールセットを参照)。

  • query — すべての一覧表示ツールで、結果に適用する任意の JMESPath 式を指定できます。これにより、エージェントが必要な情報だけを正確に抽出できます。

    zcc_list_devices(query="[*].{user: user, policy: policyName}")   # just those two fields
    zcc_list_devices(query="[?registrationState=='Quarantined']")    # just quarantined devices
    zcc_list_devices(query="length(@)")                              # just the count
    

    フィールド名は、Zscaler API が返す名前と完全に同じです。レコード全体を取得するには、query を省略してください。

セキュリティレイヤー

サーバーには、多層防御として複数のセキュリティレイヤーが実装されています。最初の 9 つは stdio を含むすべてのトランスポートに適用されます。これらは、公開するツールと危険な呼び出しの確認方法を管理します。残りの HTTP 専用レイヤー(TLS、Host ヘッダーの検証、送信元 IP ACL、MCP クライアント認証)については、後述のネットワークレベルの制御(HTTP 専用)セクションで説明します。

  1. 読み取り専用ツールは常に有効:安全な list_* および get_* 操作は常に利用できます(254 個のツール)。
  2. デフォルトでは書き込みモードを無効化:--enable-write-tools で明示的に有効にしない限り、書き込みツールは無効です。
  3. 許可リストの必須化:書き込み操作には、明示的な --write-tools 許可リストが必要です(ワイルドカードに対応)。
  4. OneAPI 権限フィルター:起動時に、OneAPI 認証情報で呼び出せない製品のツールセットは自動的に除外されます(詳しくは、後述のOneAPI 権限フィルターを参照してください)。
  5. ツールセットの選択:必要に応じて、登録するツールの範囲を特定の区分に絞り込めます(例:--toolsets zia_url_filtering,zpa_app_segments)。詳しくは、後述のツールセットセクションを参照してください。
  6. 動詞ベースのツール名:各ツールの目的が明確に示されます(list、get、create、update、delete)。
  7. ツールのメタデータ注釈:すべてのツールには、AI エージェントのフレームワーク向けに readOnlyHint または destructiveHint の注釈が付けられています。
  8. AI エージェントによる確認:destructiveHint=True とマークされたすべての書き込みツールは、AI アシスタントに権限確認ダイアログを表示させます。
  9. DELETE 操作時の人間による確認:削除操作には、サーバーが開始する確認プロセスが必要です。MCP のエリシテーションに対応するクライアント(Claude Desktop、Cursor)では、サーバーがクライアントに人間への確認を求め、回答はプロトコルのフィールドとして返されます。そのため、乗っ取られたエージェントが承認を作成することはできず、やり取りに失敗した場合は安全側に倒して処理が拒否されます。この機能に対応していないクライアントでは、代わりに暗号化された確認トークン(HMAC-SHA256、1 回限り、TTL 5 分、ツールとパラメーターに厳密に紐付け)を使用します。これにより、別のリソースへの承認の流用、再生、再利用を防ぎます。ただし、乗っ取られたエージェントはトークンを受け取り、引き換えられるため、これだけではプロンプトインジェクション対策にはなりません。この代替方式は単一プロセス内に限られます。エリシテーション対応クライアントには影響しません。詳細な分析については、MCP プロトコルの対応方針 — 破壊的操作の脅威モデルを参照してください。
  10. 環境変数による制御:ZSCALER_MCP_WRITE_ENABLED、ZSCALER_MCP_WRITE_TOOLS、ZSCALER_MCP_TOOLSETS、ZSCALER_MCP_DISABLE_ENTITLEMENT_FILTER および無効化リストは、コードを変更せずにすべて一元管理できます。
  11. 出力のサニタイズ:ツールのすべての結果に含まれる文字列は、エージェントに届く前に 3 段階のサニタイザーで処理されます。不可視文字および制御文字(BiDi オーバーライド、ゼロ幅文字、BOM、ソフトハイフン)を除去し、未加工の HTML と HTML コメントを(bleach を使用して)削除し、Markdown のリンク/画像構文を無効化して埋め込み URL のエージェントへの紛れ込みを防ぎます。また、ロール偽装トークン(system、assistant、tool、ignore など)を含む Markdown コードフェンスの情報文字列は、中立的な text タグに置き換えられます。これにより、攻撃者や不注意な管理者が、編集可能な Zscaler リソース(ルールの説明、場所の名前、ラベルの説明など)に埋め込む可能性のあるプロンプトインジェクションのペイロードから保護します。デフォルトで有効です。無効にするには ZSCALER_MCP_DISABLE_OUTPUT_SANITIZATION=true を設定してください(診断目的に限って使用してください)。
  12. 監査ログ:--log-tool-calls または ZSCALER_MCP_LOG_TOOL_CALLS=true を設定すると、すべてのツール呼び出しが、引数(機密値は伏せ字)、所要時間、結果の概要とともに記録されます。

この多層的なアプローチにより、いずれか 1 つのセキュリティ制御が回避された場合でも、ほかの制御が機能し続け、不正な操作を防止できます。上記のレイヤー 1〜12 は、stdio、sse、streamable-http に等しく適用されます。

ツールセット

ツールは、名前付きの ツールセット 63 個にグループ化されています。これにより、エージェントが実際に必要とする範囲だけを読み込めます(たとえば、すべてのサービスの全ツール(402 個)ではなく、zia_url_filtering(5 個のツール)だけを読み込めます)。ツールセットはエージェントのコンテキストコストを抑え、ツール選択の精度を高めます。

# Load just two slices
zscaler-mcp --toolsets zia_url_filtering,zpa_app_segments

# Or use the curated default-on subset
zscaler-mcp --toolsets default

# Or load every registered toolset explicitly
zscaler-mcp --toolsets all

# Equivalent via environment variable
export ZSCALER_MCP_TOOLSETS="zia_url_filtering,zpa_app_segments"

--toolsets が指定されていない場合、有効になっているサービスのすべてのツールセットが読み込まれます(従来のデフォルト動作が維持されます)。

エージェントは、常時有効な zscaler_list_toolsets、zscaler_get_toolset_tools、zscaler_enable_toolset ツールを使って、実行時に追加のツールセットを有効にすることもできます。

全サービスにわたるツールセットの完全なカタログ(29 個)、フィルターの優先順位ルール、ツールセットごとのエージェント向けガイダンス、完全なリファレンスについては、docs/guides/toolsets.md を参照してください。

OneAPI エンタイトルメントフィルター

ツールセットの選択が確定すると、サーバーは ZSCALER_CLIENT_ID 用に発行された OneAPI ベアラートークンから製品エンタイトルメントを読み取り、認証情報では呼び出せない製品のツールセットを通知せずに除外します。OneAPI クライアントが ZIA と ZPA のみを利用できる場合、--toolsets all を指定していても、すべての zdx_* / zcc_* / ztw_* / zid_* / zeasm_* / zins_* / zms_* ツールセットが起動時に除外されます。

これにより、最初の呼び出しが必ず 401 Unauthorized を返すツールをエージェントが検出するのを防ぎます。このフィルターは stdio を含むすべてのトランスポートで適用されます。

フィルターが実行されると、起動時に次のようなログが 1 行表示されます。

entitlement filter applied: entitled services=['zia', 'zpa'], kept 12 toolset(s), removed 17 toolset(s)

このフィルターは 致命的ではありません。認証情報がない、トークンエンドポイントに到達できない、トークンをデコードできない、またはトークンに判別可能な製品エンタイトルメントがない場合、サーバーは WARN ログを 1 行出力し、ユーザーが選択したツールセットを変更せずに通常どおり起動します。

フィルターを無効にするには(たとえば、特殊な形式のトークンを調査する場合):

zscaler-mcp --no-entitlement-filter
# or
export ZSCALER_MCP_DISABLE_ENTITLEMENT_FILTER=true

考慮されるのは 製品エンタイトルメント のみで、ロール名は対象外です。個々のアクションに対する権限の適用は実際の API に委ねられます。エンタイトルメントフィルターは、クライアントがまったくアクセスできない製品のツールを「公開」しないようにするだけです。

破壊的操作に対する暗号学的確認

削除操作は、最初の呼び出しでは実行されません。その後の動作はクライアントによって異なります。

  • MCP エリシテーションに対応するクライアント では、リソース名を示す対話型プロンプトが表示され、人間が回答します。AI エージェントが承認を扱うことはありません。
  • それ以外のすべてのクライアント には 暗号学的確認トークン(HMAC-SHA256)が渡され、実行を続けるにはそれを返す必要があります。トークンは特定の操作とそのパラメーターに紐付けられ、1 回のみ使用でき、有効期限は 5 分です。そのため、偽造、再送、別のリソースへの再利用はできません。

これを無効にする方法はありません。 稼働中のテナントに対する削除は取り消せないため、サーバーにはこの制限を回避するフラグや環境変数はありません。エージェントに削除を一切させたくない場合は、削除ツールを許可リストに追加しないでください。書き込みツールはデフォルトで無効であり、--write-tools には明示的なパターン指定が必要です(書き込みモードを参照)。

ネットワークレベルの制御(HTTP のみ)

次の 4 つの節、つまり TLS、送信元 IP 許可リスト、ホストヘッダーの検証、.env の平文シークレットスキャナーは、HTTP トランスポート(sse、streamable-http)にのみ適用されます。これらは、ネットワーク経由でサーバーに接続できるユーザーを制御します。前述のセキュリティレイヤーに記載したツールレベルの制御(読み取り専用モード、書き込み許可リスト、ツールセット、エンタイトルメントフィルター、HMAC 確認)とは独立しており、stdio を含むすべてのトランスポートに適用されます。

これに対応する 5 つ目のネットワークレベルのレイヤーである MCP クライアント認証(Bearer / Basic / OAuth 2.1)については、後述の MCP クライアント認証の節で詳しく説明します。

HTTPS/TLS のサポート

localhost 以外でのデプロイでは、デフォルトで HTTPS が必須です。TLS 証明書を設定せずに localhost 以外のインターフェースでサーバーを起動しようとすると、ZSCALER_MCP_ALLOW_HTTP=true を明示的に設定していない限り、起動は拒否されます。

HTTP トランスポート(sse または streamable-http)を使用する場合は、TLS 証明書を指定してください。

ZSCALER_MCP_TLS_CERTFILE=/path/to/cert.pem
ZSCALER_MCP_TLS_KEYFILE=/path/to/key.pem

# Optional: private key password and CA bundle
ZSCALER_MCP_TLS_KEYFILE_PASSWORD=your-key-password
ZSCALER_MCP_TLS_CA_CERTS=/path/to/ca-bundle.pem

TLS が設定されている場合、サーバーは自動的に HTTPS で起動します。これは、パブリック証明書(CA 署名)とプライベート証明書(自己署名)の両方で動作します。テスト用の自己署名証明書を生成するには、次のようにします。

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=localhost"
送信元 IP アクセス制御

ZSCALER_MCP_ALLOWED_SOURCE_IPS を使用すると、接続を許可するクライアント IP を制限できます。設定されていない場合(デフォルト)は、送信元 IP のフィルタリングは無効になり、上流の制御(ファイアウォールルール、AWS Security Groups など)に委ねられます。

# Allow only specific IPs/subnets
ZSCALER_MCP_ALLOWED_SOURCE_IPS=10.0.0.0/8,172.16.0.5

# Allow all (effectively disable — same as not setting the variable)
ZSCALER_MCP_ALLOWED_SOURCE_IPS=0.0.0.0/0

個別の IPv4/IPv6 アドレス、CIDR 表記、およびワイルドカード 0.0.0.0/0 に対応しています。ヘルスチェックエンドポイント(/health、/healthz、/ready)は対象外のため、ロードバランサーのプローブは引き続き動作します。許可されていない IP からのリクエストには 403 Forbidden が返されます。

.env ファイルのセキュリティ警告

HTTP トランスポートで起動すると、サーバーは作業ディレクトリ内の .env ファイルを自動的にスキャンし、平文のシークレット(SECRET、PASSWORD、KEY、または TOKEN を含む値)を検出します。検出された場合は、代わりにシークレットマネージャーまたは環境変数を使用するよう促すセキュリティ警告がログに記録されます。

セキュリティ態勢バナー

起動時に、サーバーは有効なセキュリティ設定(トランスポートモード、ホスト検証の状態、認証モード、TLS の状態、有効な警告)をまとめた セキュリティ態勢バナー をログに出力します。これにより、セキュリティの状態を一目で簡単に確認できます。

主なセキュリティ原則:

  • 「すべての書き込みツールを有効にする」バックドアは存在しません。許可リストは必須です
  • AI エージェントは、書き込み操作を実行する前に許可を求める必要があります(destructiveHint)
  • 破壊的な操作を実行するには、すべて AI エージェントの権限フレームワークを通じた明示的なユーザー承認が必要です
  • 破壊的な操作の確認は、プロンプトインジェクションによる回避を防ぐため、暗号学的にバインドされています
ベストプラクティス
  • デフォルトで読み取り専用:安全な操作に設定は不要です。読み取り専用ツールは常に利用できます
  • 必須の許可リスト:書き込みモードを有効にする場合は、必ず明示的な --write-tools 許可リストを指定してください
  • 開発/テスト:狭い範囲の許可リストを使用してください(例:--write-tools "zpa_create_application_segment")
  • 本番環境/エージェント:自律的に操作する AI エージェントには、サーバーを読み取り専用モード(デフォルト)のまま使用してください
  • CI/CD:対応する ZSCALER_MCP_WRITE_TOOLS 許可リストを設定せずに、ZSCALER_MCP_WRITE_ENABLED=true を設定しないでください
  • 最小権限:ユースケースに応じて、できるだけ範囲の狭い許可リストパターンを使用してください
  • ワイルドカードの使用:サービス単位の制御(例:zpa_create_*)または操作単位の制御(例:*_create_*)にワイルドカードを使用してください
  • 監査レビュー:許可リストに含まれている書き込みツールを定期的に確認し、不要なものを削除してください
  • 具体的なプロンプト:402 個のツールと遅延読み込みにより、AI エージェントは関連性に基づいてプロンプトとツールを照合します。ツールを正確に選択できるよう、サービス固有のプロンプト(例:「ZPA セグメントを一覧表示」。*「自分のセグメントを表示」*ではなく)を使用してください

🔐 MCP クライアント認証

📖 詳細なドキュメント:認証とデプロイのガイド

MCP サーバーを HTTP(sse または streamable-http トランスポート)で実行する場合、サーバーへの接続を誰に許可するかを制御するため、認証を有効にできます。これは、サーバーが Zscaler API に対してどのように認証するかを制御するZscaler API 認証情報とは独立しています。

HTTP トランスポートでは、認証関連の環境変数が設定されている場合、サーバーは認証を自動検出して有効にします。stdio トランスポートには認証は適用されません(オペレーティングシステムのプロセス分離によってセキュリティが確保されます)。

認証モード

サーバーは、環境変数で設定する4つの認証モードをサポートしています。

モード説明適した用途
api-keyシンプルな共有シークレットです。クライアントは Authorization: Bearer <key> を送信しますすばやいセットアップ、内部環境、開発
jwtJWKS を介した外部 ID プロバイダーです。公開鍵を使ってトークンをローカルで検証しますエンタープライズ SSO、マルチテナントのデプロイ(Auth0、Okta、Azure AD、Keycloak、AWS Cognito、PingOne、Google)
zscalerZscaler OneAPI の認証情報を検証します。クライアントは client_id:client_secret を Basic Auth で送信しますすでに Zscaler API の認証情報を使用している環境
oidc独自の IdP に対する OAuth 2.1 です。サーバーは OAuth 2.0 で保護されたリソース(RFC 9728)として動作し、クライアントは IdP で直接認証します人間のオペレーター向けのブラウザーでのログイン、任意の OIDC プロバイダー
クイックスタート

.env ファイルで次の環境変数を設定して、認証を有効にします。

# Enable authentication
ZSCALER_MCP_AUTH_ENABLED=true
ZSCALER_MCP_AUTH_MODE=api-key

# For api-key mode: set a shared secret
ZSCALER_MCP_AUTH_API_KEY=sk-your-secret-key-here

次に、HTTP トランスポートでサーバーを起動します。

zscaler-mcp --transport streamable-http

クライアントは Authorization ヘッダーにキーを含める必要があります。

Authorization: Bearer sk-your-secret-key-here
仕組み

認証は、HTTP トランスポート層をラップする ASGI ミドルウェアとして実装されています。

MCP Client Request
      │
      ▼
┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  Auth         │────▶│  MCP          │────▶│  Zscaler     │
│  Middleware   │     │  Server       │     │  APIs        │
└──────────────┘     └──────────────┘     └──────────────┘
 Layer 1: WHO          MCP Protocol        Layer 2: HOW
 can connect?          Processing          server talks
                                           to Zscaler
  • レイヤー1(MCP クライアント認証):ZSCALER_MCP_AUTH_* 変数で制御され、受信リクエストを検証します
  • レイヤー2(Zscaler API 認証):ZSCALER_CLIENT_ID、ZSCALER_CLIENT_SECRET などで制御され、Zscaler API に対してサーバーを認証します

この2つのレイヤーは完全に独立しています。片方だけ、両方、またはいずれも有効にできます。

モード別の設定
API キー
ZSCALER_MCP_AUTH_ENABLED=true
ZSCALER_MCP_AUTH_MODE=api-key
ZSCALER_MCP_AUTH_API_KEY=sk-your-secret-key-here
JWT(JWKS を介した外部 IdP)
ZSCALER_MCP_AUTH_ENABLED=true
ZSCALER_MCP_AUTH_MODE=jwt
ZSCALER_MCP_AUTH_JWKS_URI=https://your-idp.com/.well-known/jwks.json
ZSCALER_MCP_AUTH_ISSUER=https://your-idp.com
ZSCALER_MCP_AUTH_AUDIENCE=zscaler-mcp-server
ZSCALER_MCP_AUTH_ALGORITHMS=RS256,ES256   # Optional (default: RS256,ES256)
Zscaler OneAPI 認証情報
ZSCALER_MCP_AUTH_ENABLED=true
ZSCALER_MCP_AUTH_MODE=zscaler
# Uses ZSCALER_VANITY_DOMAIN and ZSCALER_CLOUD from your existing config

クライアントは、Basic Auth(client_id:client_secret)またはカスタムヘッダー(X-Zscaler-Client-ID / X-Zscaler-Client-Secret)で認証します。

認証のデフォルト設定

HTTP トランスポート(sse、streamable-http)では、認証関連の環境変数(例:ZSCALER_MCP_AUTH_JWKS_URI、ZSCALER_MCP_AUTH_API_KEY、ZSCALER_VANITY_DOMAIN)が設定されていると、サーバーは認証を自動検出して有効にします。認証設定が検出されず、ZSCALER_MCP_AUTH_ENABLED も明示的に設定されていない場合、サーバーはセキュリティ警告をログに記録しますが、認証なしで処理を続行します。

認証を明示的に無効にするには、次のように設定します。

ZSCALER_MCP_AUTH_ENABLED=false

認証は stdio トランスポートには適用されません(プロセス分離によってセキュリティが確保されます)。

OAuth 2.1(oidc mode)

oidc mode を使用すると、サーバーはOAuth 2.0 保護リソース(RFC 9728)になります。サーバーは Identity Provider を指定した /.well-known/oauth-protected-resource を公開します。クライアントはその情報を読み取り、IdP に直接 OAuth フローを実行して、取得したトークンを提示します。サーバーの役割は、IdP が公開している公開鍵を使用してトークンの署名を検証することだけです。

環境変数だけで設定でき、コードや追加パッケージは不要です。

ZSCALER_MCP_AUTH_ENABLED=true
ZSCALER_MCP_AUTH_MODE=oidc

OIDCPROXY_CONFIG_URL=https://your-tenant.auth0.com/.well-known/openid-configuration
OIDCPROXY_CLIENT_ID=<your app registration's client id>
OIDCPROXY_BASE_URL=http://localhost:8000
OIDCPROXY_AUDIENCE=zscaler-mcp-server
# Optional: scopes a token must carry, comma-separated
# OIDCPROXY_REQUIRED_SCOPES=zscaler.read

注意事項:

  • クライアントシークレットは不要です。 署名の検証に必要なのは IdP の公開鍵であり、こちらの認証情報ではありません。設定されていても OIDCPROXY_CLIENT_SECRET は無視されます。
  • OIDCPROXY_BASE_URL はこのサーバーの公開 URL であり、クライアントがリソース識別子として使用します。IdP の URL ではありません。
  • OIDCPROXY_AUDIENCE のデフォルト値は OIDCPROXY_CLIENT_ID です。Entra ID ではクライアント ID が aud に設定され、Auth0 では API 識別子が使用されます。
  • Issuer と JWKS URI は起動時に IdP のディスカバリードキュメントから読み込まれるため、常に IdP が実際に署名に使用する値と一致します。
  • サーバーは /authorize、/token、/register を提供しません。クライアントには IdP が発行したクライアント ID が必要で、自己登録はできません。
  • OIDC 準拠のプロバイダー(Auth0、Okta、Microsoft Entra ID、Keycloak、Google、AWS Cognito、PingOne)であれば、どれでも動作します。
  • その他すべてのセキュリティレイヤー(TLS、送信元 IP ACL、ホスト検証)は引き続き有効です。

IdP の要件: クライアントが使用するコールバック URL(mcp-remote の場合はポートを固定した http://localhost:3334/oauth/callback)を登録したアプリケーションと、OIDCPROXY_AUDIENCE に一致する API/リソース識別子が必要です。

📖 Microsoft Entra ID のステップ別ガイド、IdP 固有の JWKS 設定、Docker のデプロイ例、Claude/Cursor/VS Code のクライアント設定、トラブルシューティングなど、詳細な設定手順については、認証とデプロイガイドをご覧ください。

対応ツール

Zscaler Integrations MCP Server は、主要なすべての Zscaler サービスに対応する402 個のツールを提供します。

サービス説明ツール
ZIAZscaler Internet Access — セキュリティポリシー166 読み取り/書き込み
ZPAZscaler Private Access — アプリケーションアクセス109 読み取り/書き込み
ZDXZscaler Digital Experience — モニタリングと分析31 読み取り/書き込み
ZCellZscaler Cellular — SIM インベントリー、使用状況分析、異常ポリシー20 読み取り専用
ZMSZscaler Microsegmentation — エージェント、リソース、ポリシー20 読み取り専用
ZTWZscaler Workload Segmentation19 読み取り/書き込み
Z-InsightsZ-Insights 分析 — Web トラフィック、サイバーインシデント、シャドー IT16 読み取り専用
ZIdentityZIdentity — アイデンティティとアクセス管理10 読み取り専用
EASM外部攻撃対象領域管理7 読み取り専用
ZCCZscaler Client Connector — デバイス管理4 読み取り専用

📖 ツール一覧を見る →

注: すべての書き込み操作には、--enable-write-tools フラグと明示的な --write-tools 許可リストが必要です。詳細はセキュリティと権限セクションをご覧ください。

インストールとセットアップ

前提条件
  • Python 3.11 以降
  • uv または pip
  • Zscaler API 認証情報(下記参照)
環境設定

環境ファイルのサンプルをコピーし、認証情報を設定します。

cp .env.example .env

次に、.env を編集して Zscaler API の認証情報を設定します。

必須の設定(OneAPI):

  • ZSCALER_CLIENT_ID:Zscaler OAuth クライアント ID
  • ZSCALER_CLIENT_SECRET:Zscaler OAuth クライアントシークレット
  • ZSCALER_CUSTOMER_ID:Zscaler 顧客 ID
  • ZSCALER_VANITY_DOMAIN:Zscaler のバニティドメイン

任意の設定:

  • ZSCALER_CLOUD:(任意)Zscaler クラウド環境(例:beta)— Beta テナントとのやり取りでのみ必要です。
  • ZSCALER_PRIVATE_KEY:(任意)JWT ベースの OneAPI 認証に使用する PEM エンコード済み秘密鍵。ZSCALER_CLIENT_SECRET の代わりに使用します。
  • ZSCALER_MCP_SERVICES:有効にするサービスのカンマ区切りリスト(デフォルト:すべてのサービス)
  • ZSCALER_MCP_TRANSPORT:トランスポート方式 — stdio、sse、または streamable-http(デフォルト:stdio)
  • ZSCALER_MCP_DEBUG:デバッグログを有効にします — true または false(デフォルト:false)
  • ZSCALER_MCP_HOST:HTTP トランスポート用のホスト(デフォルト:127.0.0.1)
  • ZSCALER_MCP_PORT:HTTP トランスポート用のポート(デフォルト:8000)

.env ファイルを使わず、これらを環境変数として設定することもできます。

重要:API クライアントに、使用する予定のサービスに必要な権限があることを確認してください。権限は後から Zscaler コンソールでいつでも更新できます。

インストール
VS Code でインストール(簡単セットアップ)

VS Code インストール

注:VS Code が開き、MCP サーバーの設定を求められます。プレースホルダーの値(<YOUR_CLIENT_ID> など)を実際の Zscaler 認証情報に置き換えてください。

uv を使用してインストール(推奨)
uv tool install zscaler-mcp
uv を使用してソースからインストール(開発用)
uv pip install -e .

リモートデプロイ:EC2/VM で実行する場合は、起動前にプロジェクトの venv を有効にしてください:source .venv/bin/activate。リモート MCP デプロイ(EC2、VM など)を参照してください。

pip を使用してソースからインストール
pip install -e .
make を使用してインストール(簡便な方法)
make install-dev

ヒント

zscaler-mcp-server が見つからない場合は、シェルの PATH を更新してください。

コードエディター/アシスタントを使用したインストールについては、以下のエージェントで MCP サーバーを使用するセクションを参照してください。

使用方法

メモ

デフォルトのセキュリティモード:以下の例はすべて、デフォルトで読み取り専用モード(list_* と get_* 操作のみ)で実行されます。書き込み操作(create_*、update_*、delete_*)を有効にするには、任意のコマンドに --enable-write-tools フラグを追加するか、環境で ZSCALER_MCP_WRITE_ENABLED=true を設定してください。

コマンドライン

デフォルト設定(stdio トランスポート、読み取り専用モード)でサーバーを実行します。

zscaler-mcp

書き込み操作を有効にしてサーバーを実行します。

zscaler-mcp --enable-write-tools

SSE トランスポートで実行します。

zscaler-mcp --transport sse

streamable-http トランスポートで実行します。

zscaler-mcp --transport streamable-http

カスタムポートを指定して streamable-http トランスポートで実行します。

zscaler-mcp --transport streamable-http --host 0.0.0.0 --port 8080
サービスの設定

Zscaler Integrations MCP Server では、有効にするサービスを複数の方法で指定できます。

1. コマンドライン引数(最優先)

サービスをカンマ区切りのリストで指定します。

# Enable specific services
zscaler-mcp --services zia,zpa,zdx

# Enable only one service
zscaler-mcp --services zia
2. 環境変数(フォールバック)

ZSCALER_MCP_SERVICES 環境変数を設定します。

# Export environment variable
export ZSCALER_MCP_SERVICES=zia,zpa,zdx
zscaler-mcp

# Or set inline
ZSCALER_MCP_SERVICES=zia,zpa,zdx zscaler-mcp
3. デフォルトの動作(すべてのサービス)

コマンドラインまたは環境変数でサービスが指定されていない場合、デフォルトですべての利用可能なサービスが有効になります。

サービスの優先順位:

  1. コマンドラインの --services 引数(最優先)
  2. ZSCALER_MCP_SERVICES 環境変数(フォールバック)
  3. すべてのサービス(何も指定されていない場合のデフォルト)
サービスとツールの除外

大部分のツールを利用可能な状態に保ちながら一部を除外する場合は、利用するツールをすべて列挙する代わりに、--disabled-tools または --disabled-services を使用してください。

どちらのフラグも、fnmatch パターンによるワイルドカードに対応しています。

# Exclude a single tool
zscaler-mcp --disabled-tools zia_list_devices

# Exclude all tools from a service prefix
zscaler-mcp --disabled-tools "zcc_*"

# Exclude multiple patterns
zscaler-mcp --disabled-tools "zcc_*,zdx_list_devices"

# Exclude entire services
zscaler-mcp --disabled-services zcc,zdx

# Combine: keep all services but exclude specific tools
zscaler-mcp --disabled-tools "zia_list_devices,zdx_*_analysis"

環境変数:

export ZSCALER_MCP_DISABLED_TOOLS="zia_list_devices,zdx_*"
export ZSCALER_MCP_DISABLED_SERVICES="zcc"

優先順位: --disabled-tools は --tools(許可リスト)より優先されます。許可リストと除外リストの両方に一致するツールは除外されます。

その他のコマンドラインオプション
# Enable write operations (create, update, delete)
zscaler-mcp --enable-write-tools

# Enable debug logging
zscaler-mcp --debug

# Combine multiple options
zscaler-mcp --services zia,zpa --enable-write-tools --debug

利用可能なすべてのオプションについては、次を実行してください:

zscaler-mcp --help

利用可能なコマンドラインフラグ:

  • --transport:トランスポートプロトコル(stdio、sse、streamable-http)
  • --services:有効にするサービスのカンマ区切りリスト
  • --disabled-services:除外するサービスのカンマ区切りリスト(例:zcc,zdx)
  • --tools:有効にする特定のツールのカンマ区切りリスト
  • --disabled-tools:除外するツールのカンマ区切りリスト。ワイルドカードに対応しています(例:zcc_*,zdx_list_devices)
  • --toolsets:有効にするツールセット ID のカンマ区切りリスト(例:zia_url_filtering,zpa_app_segments)。特別な値:default(厳選されたデフォルト有効のサブセット)、all(すべてのツールセット)。指定しない場合、有効なサービスに属するすべてのツールセットが読み込まれます。docs/guides/toolsets.md を参照してください。
  • --no-entitlement-filter:設定された ZSCALER_CLIENT_ID が利用権限を持つ製品に合わせてツールセットを絞り込む OneAPI の利用権限フィルターをスキップします。緊急時のオーバーライド専用です。デフォルトではフィルターによって処理が失敗することはありません。
  • --enable-write-tools:書き込み操作を有効にします(安全のため、デフォルトでは無効です)
  • --write-tools:書き込みツールパターンの必須許可リスト(例:"zpa_create_*,zpa_delete_*")
  • --log-tool-calls:ツール呼び出しごとの監査ログ記録を有効にします(ツール名、編集済み引数、所要時間、結果の概要)
  • --debug:デバッグログを有効にします
  • --host:HTTP トランスポートのホスト(デフォルト:127.0.0.1)
  • --port:HTTP トランスポートのポート(デフォルト:8000)
  • --user-agent-comment:User-Agent ヘッダーに追加するテキスト
  • --generate-auth-token:クライアント認証トークンのスニペットを生成して終了します
  • --list-tools:利用可能なすべてのツールを一覧表示して終了します
  • --version:サーバーのバージョンを表示して終了します
対応エージェント

Zscaler API の認証情報と認証

Zscaler Integrations MCP Server は、OneAPI 認証のみを使用します。1 組の認証情報で、すべての Zscaler 製品(ZIA、ZPA、ZCC、ZDX、Zscaler Cellular、ZTW、ZIdentity、ZMS、Z-Insights、EASM)に対してサーバーを認証します。

Zscaler Cellular(ZCell) では追加の認証情報が 1 つ必要です。ZCELL_CUSTOMER_ID を使用した Zscaler Cellular の顧客 ID です。これは、ZPA で使用する ZSCALER_CUSTOMER_ID とは別のものです。以下の環境変数の表を参照してください。

OneAPI 認証
前提条件
  1. ZIdentity プラットフォームで API クライアントを作成します。
  2. clientId、clientSecret(または JWT 用の privateKey)、customerId、vanityDomain を取得します。
  3. 詳細:OneAPI について。
クイックセットアップ

プロジェクトのルート(または MCP サーバーを起動する場所)に .env ファイルを作成します。

# OneAPI credentials (required)
ZSCALER_CLIENT_ID=your_client_id
ZSCALER_CLIENT_SECRET=your_client_secret
ZSCALER_CUSTOMER_ID=your_customer_id
ZSCALER_VANITY_DOMAIN=your_vanity_domain

# Required only for Zscaler Cellular (ZCell) tools
ZCELL_CUSTOMER_ID=your_zscaler_cellular_customer_id

# Optional: only required when targeting the Beta tenant
ZSCALER_CLOUD=beta

⚠️ セキュリティ:.env をソース管理にコミットしないでください。.gitignore に追加してください。

OneAPI 環境変数
環境変数必須説明
ZSCALER_CLIENT_IDはいZIdentity コンソールから取得した OneAPI クライアント ID
ZSCALER_CLIENT_SECRETはい(または ZSCALER_PRIVATE_KEY)OneAPI クライアントシークレット
ZSCALER_CUSTOMER_IDはい(ZPA ツールの場合)Zscaler の顧客/テナント ID
ZCELL_CUSTOMER_IDはい(Zscaler Cellular ツールの場合)Zscaler Cellular の顧客 ID(ZSCALER_CUSTOMER_ID とは別の IDです。また、設定キー zcellCustomerId としても使用できます)
ZSCALER_VANITY_DOMAINはい組織のバニティドメイン(例:acme)
ZSCALER_CLOUDいいえクラウドのオーバーライド(例:beta、zscalertwo)。本番環境では省略してください
ZSCALER_PRIVATE_KEYいいえJWT 認証用の PEM エンコードされた秘密鍵(ZSCALER_CLIENT_SECRET の代わりに使用)
検証

.env に値を設定したら、サーバーを起動します。

zscaler-mcp

認証情報が有効であれば、サーバーは正常に起動します。Zscaler SDK クライアントは最初のツール呼び出し時に遅延作成されるため、認証情報の不足やローテーションはサーバーの起動を妨げず、呼び出し時に明確なエラーメッセージとして表示されます。


認証のトラブルシューティング
症状考えられる原因対処方法
Zscaler SDK failed to initialize due to missing OneAPI credentials: [...]ZSCALER_CLIENT_ID、ZSCALER_VANITY_DOMAIN、または(ZPA の場合)ZSCALER_CUSTOMER_ID のいずれかが未設定、または空です。.env またはシェルで、記載された環境変数を設定してください。
You must provide either ZSCALER_CLIENT_SECRET or ZSCALER_PRIVATE_KEY for the OneAPI client.認証情報が両方ともありません。ZSCALER_CLIENT_SECRET または ZSCALER_PRIVATE_KEY のいずれかを設定してください。
ツール呼び出し時に Zscaler API から 401/403 が返されるAPI クライアントに該当製品のスコープがないか、認証情報が失効しています。ZIdentity コンソールで OneAPI クライアントの権限を確認し、必要に応じて認証情報をローテーションしてください。
MCP サーバーの設定

以下の環境変数で、MCP サーバーの動作を制御します(認証を除く)。

環境変数デフォルト説明
ZSCALER_MCP_TRANSPORTstdio使用するトランスポートプロトコル(stdio、sse、または streamable-http)
ZSCALER_MCP_SERVICES""有効にするサービスのカンマ区切りリスト(空欄の場合はすべてのサービス)。サポートされている値:zcc、zdx、zia、zid、zpa、ztw
ZSCALER_MCP_TOOLS""有効にする特定のツールのカンマ区切りリスト(空欄の場合はすべてのツール)
ZSCALER_MCP_DISABLED_SERVICES""除外するサービスのカンマ区切りリスト(例:zcc,zdx)。ZSCALER_MCP_SERVICES より優先されます。
ZSCALER_MCP_DISABLED_TOOLS""除外するツールのカンマ区切りリスト。ワイルドカードをサポートします(例:zcc_*,zia_list_devices)。ZSCALER_MCP_TOOLS より優先されます。
ZSCALER_MCP_WRITE_ENABLEDfalse書き込み操作を有効にします(true/false)。false の場合、読み取り専用ツールのみ使用できます。true に設定するか、--enable-write-tools フラグを使用すると、書き込みモードが有効になります。
ZSCALER_MCP_WRITE_TOOLS""書き込みツールの許可リスト(必須)。カンマ区切りで指定します(zpa_* のようなワイルドカードをサポート)。ZSCALER_MCP_WRITE_ENABLED=true が必要です。書き込みモードが有効なときに空欄の場合、書き込みツールは登録されません。
ZSCALER_MCP_DEBUGfalseデバッグログを有効にします(true/false)
ZSCALER_MCP_HOST127.0.0.1HTTP トランスポートでバインドするホスト
ZSCALER_MCP_PORT8000HTTP トランスポートでリッスンするポート
ZSCALER_MCP_DISABLE_HOST_VALIDATIONfalseEC2/パブリック IP で公開する際に、Host ヘッダーの検証を無効にします(true/false)。代わりに --host 0.0.0.0 を使用すると、自動的に無効になります。
ZSCALER_MCP_ALLOWED_HOSTS""リモート環境へのデプロイで許可する Host 値のカンマ区切りリスト(例:34.201.19.115:*,localhost:*)。本番環境では無効化よりこちらを推奨します。
ZSCALER_MCP_TLS_CERTFILE""HTTPS 用 TLS 証明書ファイルのパス(PEM 形式)。
ZSCALER_MCP_TLS_KEYFILE""HTTPS 用 TLS 秘密鍵ファイルのパス(PEM 形式)。
ZSCALER_MCP_TLS_KEYFILE_PASSWORD""暗号化された TLS 秘密鍵のパスワード(該当する場合)。
ZSCALER_MCP_TLS_CA_CERTS""相互 TLS またはカスタム CA チェーン用の CA 証明書バンドルのパス。
ZSCALER_MCP_ALLOW_HTTPfalselocalhost 以外のインターフェースで、暗号化されていない HTTP を許可します。リモート環境へのデプロイでは、デフォルトで HTTPS が必要です。上流で TLS が終端される場合(リバースプロキシ、ZPA、VPN)に限り、true に設定してください。
ZSCALER_MCP_ALLOWED_SOURCE_IPS""許可するクライアント IP/CIDR のカンマ区切りリスト(例:10.0.0.0/8,172.16.0.5)。未設定の場合、送信元 IP のフィルタリングは無効になり、ファイアウォール/セキュリティグループに委ねられます。すべてを許可するには 0.0.0.0/0 を設定します。
ZSCALER_MCP_CONFIRMATION_TTL300HMAC フォールバックトークンの有効期間(秒)。引き出し機能に対応するクライアントが使用するシール済みの requestState には適用されません(SDK エンベロープの TTL、デフォルトは 600 秒)。確認自体を省略する変数はありません。
ZSCALER_MCP_REQUEST_STATE_KEYS(未設定)SEP-2322 の requestState 用共有キーリング。JSON 配列またはカンマ区切りで指定します。各キーは 32 バイト以上です(python -c "import secrets; print(secrets.token_hex(32))")。書き込みツールを有効にした複数レプリカの HTTP デプロイでは必須です。未設定の場合はプロセスごとのキーが使われるため、あるレプリカが発行した確認を別のレプリカで検証できません。先頭のキーでシールし、すべてのキーでシールを解除します(ローテーション例:[old,new] → [new,old] → [new])。
ZSCALER_MCP_DISABLE_OUTPUT_SANITIZATIONfalse多層防御の出力サニタイズ(双方向テキスト/ゼロ幅文字/HTML/Markdown/コードフェンスの除去)を無効にします。サニタイズはデフォルトで有効です。診断目的の場合に限り設定してください。無効にすると、プロンプトインジェクションに対する防御レイヤーが取り除かれます。
ZSCALER_MCP_USER_AGENT_COMMENT""User-Agent のコメント欄に含める追加情報
User-Agent ヘッダー

MCP サーバーは、Zscaler サービスへのすべての API リクエストに、カスタムの User-Agent ヘッダーを自動的に含めます。形式は次のとおりです。

User-Agent: zscaler-mcp-server/<version> python/<python_version> <os>/<architecture>

例:

User-Agent: zscaler-mcp-server/0.3.1 python/3.11.8 darwin/arm64

カスタムコメントを追加する場合:

ZSCALER_MCP_USER_AGENT_COMMENT 環境変数または --user-agent-comment CLI フラグを使用して、追加情報(AI エージェントの詳細など)を付加できます。

# Via environment variable
export ZSCALER_MCP_USER_AGENT_COMMENT="Claude Desktop 1.2024.10.23"

# Via CLI flag
zscaler-mcp --user-agent-comment "Claude Desktop 1.2024.10.23"

この場合、次のようになります。

User-Agent: zscaler-mcp-server/0.3.1 python/3.11.8 darwin/arm64 Claude Desktop 1.2024.10.23

User-Agent により、Zscaler は MCP サーバーからの API トラフィックを識別できます。また、サポート、分析、デバッグにも役立ちます。

ライブラリとしての使用

Zscaler Integrations MCP Server は、独自のアプリケーションで Python ライブラリとして使用できます。

from zscaler_mcp.server import ZscalerMCPServer

# Create server with read-only mode (default - safe)
server = ZscalerMCPServer(
    debug=True,  # Optional, enable debug logging
    enabled_services={"zia", "zpa", "zdx"},  # Optional, defaults to all services
    enabled_tools={"zia_list_rule_labels", "zpa_list_application_segments"},  # Optional, defaults to all tools
    disabled_services={"zcc"},  # Optional, exclude entire services
    disabled_tools={"zcc_*", "zdx_list_devices"},  # Optional, exclude tools by name or wildcard
    user_agent_comment="My Custom App",  # Optional, additional User-Agent info
    enable_write_tools=False  # Optional, defaults to False (read-only mode)
)

# Run with stdio transport (default)
server.run()

# Or run with SSE transport
server.run("sse")

# Or run with streamable-http transport
server.run("streamable-http")

# Or run with streamable-http transport on custom host/port
server.run("streamable-http", host="0.0.0.0", port=8080)

書き込み操作を有効にした場合の例:

from zscaler_mcp.server import ZscalerMCPServer

# Create server with write operations enabled
server = ZscalerMCPServer(
    debug=True,
    enabled_services={"zia", "zpa"},
    enable_write_tools=True  # Enable create/update/delete operations
)

# Run the server
server.run("stdio")

利用可能なサービス:zcc、zdx、zcell、zia、zid、zeasm、zins、zms、zpa、ztw

環境変数を使用した場合の例:

from zscaler_mcp.server import ZscalerMCPServer
import os

# Load from environment variables
server = ZscalerMCPServer(
    debug=True,
    enabled_services={"zia", "zpa"}
)

# Run the server
server.run("stdio")
サンプルの実行
# Run with stdio transport
python examples/basic_usage.py

# Run with SSE transport
python examples/sse_usage.py

# Run with streamable-http transport
python examples/streamable_http_usage.py

コンテナーの使用

Zscaler Integrations MCP Server は、簡単にデプロイできるよう、ビルド済みのコンテナーイメージとして提供されています。

ビルド済みイメージの使用(推奨)
# Pull the latest pre-built image
docker pull zscaler/zscaler-mcp-server:latest

# Run with .env file (recommended)
docker run --rm --env-file /path/to/.env zscaler/zscaler-mcp-server:latest

# Run with .env file and SSE transport
docker run --rm -p 8000:8000 --env-file /path/to/.env \
  zscaler/zscaler-mcp-server:latest --transport sse --host 0.0.0.0

# Run with .env file and streamable-http transport
docker run --rm -p 8000:8000 --env-file /path/to/.env \
  zscaler/zscaler-mcp-server:latest --transport streamable-http --host 0.0.0.0

# Run with .env file and custom port
docker run --rm -p 8080:8080 --env-file /path/to/.env \
  zscaler/zscaler-mcp-server:latest --transport streamable-http --host 0.0.0.0 --port 8080

# Run with .env file and specific services
docker run --rm --env-file /path/to/.env \
  zscaler/zscaler-mcp-server:latest --services zia,zpa,zdx

# Use a specific version instead of latest
docker run --rm --env-file /path/to/.env \
  zscaler/zscaler-mcp-server:1.2.3

# Alternative: Individual environment variables
docker run --rm -e ZSCALER_CLIENT_ID=your_client_id -e ZSCALER_CLIENT_SECRET=your_secret \
  -e ZSCALER_CUSTOMER_ID=your_customer_id -e ZSCALER_VANITY_DOMAIN=your_vanity_domain \
  zscaler/zscaler-mcp-server:latest
ローカルでのビルド(開発)

開発やカスタマイズを目的とする場合は、イメージをローカルでビルドできます。

# Build the Docker image
docker build -t zscaler-mcp-server .

# Run the locally built image
docker run --rm -e ZSCALER_CLIENT_ID=your_client_id -e ZSCALER_CLIENT_SECRET=your_secret \
  -e ZSCALER_CUSTOMER_ID=your_customer_id -e ZSCALER_VANITY_DOMAIN=your_vanity_domain zscaler-mcp-server

注:Docker で HTTP トランスポートを使用する場合は、コンテナーへの外部接続を許可するため、必ず --host 0.0.0.0 を設定してください。

エディター/アシスタントとの統合

Zscaler Integrations MCP サーバーをエディターまたは AI アシスタントと統合できます。一般的な MCP クライアント向けの設定例を以下に示します。

uvx を使用する場合(推奨)
{
  "mcpServers": {
    "zscaler-mcp-server": {
      "command": "uvx",
      "args": ["--env-file", "/absolute/path/to/.env", "zscaler-mcp"]
    }
  }
}

注: 公開されている PyPI パッケージは zscaler-mcp です(zscaler-mcp-server ではありません)。Claude Code プラグインとして統合する場合は、絶対パスの代わりに ${CLAUDE_PLUGIN_ROOT}/.env を使用してください。Gemini 拡張機能では、${extensionPath}${pathSeparator}.env を使用してください。

その他のデプロイオプション

リモート MCP のデプロイ(EC2、VM など)

クライアントが別のマシンから HTTP 経由で接続できるよう、リモートホスト(EC2、VM、内部サーバー)に MCP サーバーをデプロイする場合:

サーバーのセットアップ:

  1. 認証情報をインストールして設定します(インストールおよび環境設定を参照)。

  2. 編集可能なインストール(uv pip install -e .)を使用する場合、実行前に必ずプロジェクトの venv を有効化してください。有効化しないと、古いインストールや別のインストールが実行される可能性があります。

    cd /path/to/zscaler-mcp-server
    source .venv/bin/activate
    zscaler-mcp --transport streamable-http --host 0.0.0.0 --port 8000
    
  3. すべてのインターフェイスでバインドするには、--host 0.0.0.0 を使用します。これにより、Host ヘッダーの検証が自動的に無効になります(クライアントが Host ヘッダーにサーバーのパブリック IP を送信する場合に必要です)。本番環境では、既知のホスト名に制限するため、.env の ZSCALER_MCP_ALLOWED_HOSTS を設定することを検討してください。

  4. ファイアウォールで、選択したポート(例:8000)への受信トラフィックを許可してください。

クライアント設定(Claude Desktop):

Claude Desktop では、プロセスを起動する command が必要です。リモート HTTP 接続には、カスタム認証ヘッダーをサポートする mcp-remote を使用してください。

macOS / Linux:

{
  "mcpServers": {
    "zscaler-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://YOUR_SERVER_IP:8000/mcp",
        "--allow-http",
        "--header",
        "Authorization: Bearer sk-your-api-key"
      ]
    }
  }
}

Windows:

Windows では、スペースを含むパス(例:C:\Program Files\...)を指定して npx を直接呼び出すと失敗します。cmd /c 経由で呼び出してください。

{
  "mcpServers": {
    "zscaler-mcp-server": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "mcp-remote",
        "http://YOUR_SERVER_IP:8000/mcp",
        "--allow-http",
        "--header",
        "Authorization: Bearer sk-your-api-key"
      ]
    }
  }
}

--allow-http:localhost 以外の HTTP エンドポイントに接続する場合に必要です。mcp-remote は、localhost 以外の URL ではデフォルトで HTTPS を強制します。HTTPS 経由で接続する場合、または localhost に接続する場合は、このフラグを省略してください。

Zscaler 認証モード(Basic Auth)の使用:

Authorization ヘッダーを Basic Auth の認証情報に置き換えます。この値は、client_id:client_secret を Base64 エンコードしたものです。

# Generate the Base64 value
echo -n "your-client-id:your-client-secret" | base64

その後、上記の Bearer ヘッダーの代わりに "Authorization: Basic <base64_value>" を使用してください。

クライアントの前提条件: Node.js(npx 用)がインストールされている必要があります。

📖 リモートデプロイの詳細(venv の使用、421 のトラブルシューティング、セキュリティ、TLS):リモートデプロイ · 421 Misdirected Request · トラブルシューティング

Azure Container Apps / Virtual Machine / AKS(プレビュー)

デプロイ先を選択して、Zscaler MCP Server を Azure にデプロイします。

デプロイ先説明ランタイムステータス
Container Appsマネージド、サーバーレスDocker Hub イメージGA
Virtual MachineUbuntu 22.04、セルフマネージドPython ライブラリ(PyPI)GA
Azure Kubernetes Service(AKS)Kubernetes Deployment + LoadBalancerDocker Hub イメージプレビュー
# Interactive guided deployment — no .env file required
cd integrations/azure
python azure_mcp_operations.py deploy

# MCP Server management
python azure_mcp_operations.py status     # check health
python azure_mcp_operations.py logs       # stream logs
python azure_mcp_operations.py ssh        # SSH into VM (VM only)
python azure_mcp_operations.py destroy    # tear down all resources

# Azure AI Foundry Agent (optional — wraps MCP server as an AI agent)
pip install azure-ai-projects azure-identity
python azure_mcp_operations.py agent_create    # create Foundry agent
python azure_mcp_operations.py agent_chat      # interactive CLI chat
python azure_mcp_operations.py agent_status    # show agent info
python azure_mcp_operations.py agent_destroy   # delete agent

スクリプトでは、次の項目が尋ねられます。

  • デプロイ先:Container Apps、Virtual Machine、または Azure Kubernetes Service(プレビュー)
  • 認証情報の取得元:.env ファイルのパス、または手動入力
  • 認証モード:OIDC(OAuth 2.1)、JWT、API Key、Zscaler、または None(AKS では OIDC はまだサポートされていません)
  • Azure のオプション:リソースグループ、リージョン、Key Vault(新規または既存)。AKS の場合:クラスターのライフサイクル(新規作成または既存のものを使用)、ノード数/サイズ、名前空間

Container Apps と VM では、すべてのシークレットが Azure Key Vault に保存され(必須)、Claude Desktop / Cursor が自動的に設定されます。AKS プレビューでは、Deployment の Kubernetes 環境変数として認証情報が注入されます。Workload Identity Federation と Key Vault CSI ドライバーの統合は、今後対応予定です。

Foundry Agent:オプションで、MCP サーバーをラップする Azure ホスト型 AI エージェントを作成できます。このエージェントには、CLI チャット(スピナー、トークン追跡、時間計測機能付き)、Azure AI Foundry ポータルのプレイグラウンド、REST API、または Microsoft 365 Copilot の統合からアクセスできます。

📖 Azure デプロイガイドの全文:integrations/azure/README.md

Google Cloud(Cloud Run / GKE / VM / ADK エージェント)

Google Cloud のデプロイでは、スタンドアロンの MCP サーバーと Gemini を利用した ADK エージェントの両方に対応しています。完全な動画ガイドはこちらをご覧ください。

GCP の Zscaler Integration MCP Server — 動画デモ

2 つの対話型 Python スクリプトで、Google Cloud の 5 つすべてのデプロイ先を管理できます。

スクリプトデプロイ先
integrations/google/gcp/gcp_mcp_operations.pyCloud Run、GKE、Compute Engine VM(スタンドアロン MCP サーバー)
integrations/google/adk/adk_agent_operations.pyローカル、Cloud Run、Vertex AI Agent Engine、Agentspace(ADK エージェント)

スタンドアロン MCP サーバー — 自動デプロイ:

cd integrations/google/gcp
python gcp_mcp_operations.py deploy      # guided deployment (prompts for target)
python gcp_mcp_operations.py status      # check health
python gcp_mcp_operations.py logs        # stream logs
python gcp_mcp_operations.py ssh         # SSH into VM (VM target only)
python gcp_mcp_operations.py destroy     # tear down

スクリプトはデプロイ先、認証情報、認証モードを尋ねます。次の処理を行います。

  • GCP プロジェクト/リージョンを尋ねます(または .env から読み込みます)
  • 認証情報を GCP Secret Manager に保存するかどうかを選択できます
  • zscaler 認証モードでコンテナを Cloud Run にデプロイします
  • Zscaler OneAPI の認証情報から Authorization: Basic ヘッダーを生成します
  • Claude Desktop(claude_desktop_config.json)と Cursor(~/.cursor/mcp.json)を自動設定します
  • 以降の status/logs/destroy 操作用に、デプロイ状態ファイル(.gcp-deploy-state.json)を書き込みます

ADK エージェント — 対話型デプロイ:

cd integrations/google/adk
python adk_agent_operations.py deploy      # guided deployment (local, Cloud Run, Agent Engine, Agentspace)
python adk_agent_operations.py status
python adk_agent_operations.py logs
python adk_agent_operations.py destroy

手動デプロイ:

# Deploy with credentials as env vars
gcloud run deploy zscaler-mcp-server \
  --image=zscaler/zscaler-mcp-server:latest \
  --set-env-vars="ZSCALER_CLIENT_ID=...,ZSCALER_CLIENT_SECRET=...,ZSCALER_VANITY_DOMAIN=...,ZSCALER_CUSTOMER_ID=...,ZSCALER_CLOUD=production,ZSCALER_MCP_ALLOW_HTTP=true,ZSCALER_MCP_DISABLE_HOST_VALIDATION=true,ZSCALER_MCP_AUTH_ENABLED=true,ZSCALER_MCP_AUTH_MODE=zscaler" \
  --args="--transport,streamable-http,--host,0.0.0.0,--port,8000" \
  --port=8000 --region=us-central1 --allow-unauthenticated

GCP Secret Manager を使用する場合(本番環境に推奨):

Docker イメージには、GCP Secret Manager のローダーが組み込まれています。認証情報を個別のシークレット(例:zscaler-client-id、zscaler-client-secret)として保存し、環境変数を 1 つ設定するだけで有効にできます。

gcloud run deploy zscaler-mcp-server \
  --image=zscaler/zscaler-mcp-server:latest \
  --set-env-vars="ZSCALER_MCP_GCP_SECRET_MANAGER=true,GCP_PROJECT_ID=your-project,ZSCALER_MCP_ALLOW_HTTP=true,ZSCALER_MCP_DISABLE_HOST_VALIDATION=true,ZSCALER_MCP_AUTH_ENABLED=true,ZSCALER_MCP_AUTH_MODE=zscaler" \
  --args="--transport,streamable-http,--host,0.0.0.0,--port,8000" \
  --port=8000 --region=us-central1 --allow-unauthenticated

このローダーは GKE や Compute Engine など、GCP Application Default Credentials を利用できるあらゆる環境でも動作します。

📖 Google Cloud デプロイガイドの全文(5 つすべてのデプロイ先、IAM ロール、認証モード、エンタープライズ向けパターン):integrations/google/README.md

📖 Secret Manager の詳細ガイド(GKE マニフェスト、認証情報のローテーション、ローダーの内部動作):GCP Secret Manager Integration

Kubernetes(Helm Chart)

Helm を使って、EKS、GKE、AKS、OpenShift、Rancher、k3s、Talos、ローカル開発用の kind/minikube など、あらゆる Kubernetes クラスターに Zscaler MCP Server をデプロイできます。このチャートはクラスターのベンダーに依存せず、aws、az、gcloud を呼び出すことはありません。クラスターがすでに存在し、すべてのワークロードを Helm リリースとして扱う運用モデルを採用している場合に使用してください。一方、新しいクラウドインフラを立ち上げる必要がある場合は、上記の Azure/GCP/AWS デプロイのセクションを使用してください。

# Interactive guided install — same pattern as the Azure / GCP scripts
python integrations/helm-chart/helm_mcp_operations.py deploy

# Lifecycle subcommands
python integrations/helm-chart/helm_mcp_operations.py status      # release + pods + Service + port-forward
python integrations/helm-chart/helm_mcp_operations.py logs        # tail Deployment logs
python integrations/helm-chart/helm_mcp_operations.py configure   # re-write Cursor / Claude configs
python integrations/helm-chart/helm_mcp_operations.py test        # run `helm test` smoke probe
python integrations/helm-chart/helm_mcp_operations.py destroy     # uninstall + optional ns deletion

デプロイスクリプトは、既存の .env から Kubernetes Secret を作成し(values.yaml への変換は不要です)、helm upgrade --install を実行します。また、Pod ごとのライブフィードバックを表示しながらロールアウトを待機します(ImagePullBackOff/CreateContainerConfigError/CrashLoopBackOff を検出すると、状況に応じた復旧方法を提示して終了します)。Ingress が設定されていない場合は、バックグラウンドで kubectl port-forward を起動し、正しい Authorization: Basic ヘッダーを使って Claude Desktop と Cursor を自動設定します。

認証情報の設定方法は 5 つあります(対話型スクリプト、kubectl create secret --from-env-file、インラインの --set、GitOps 用の既存 Secret、External Secrets Operator)。いずれの方法でも同じチャート契約に準拠します。Deployment は envFrom: secretRef: を使用するため、シークレット内のすべての ZSCALER_MCP_*/ZSCALER_* キーが変更されずにコンテナへ渡されます。

チャートの完全なリファレンス(values.yaml のキー、Ingress/HTTPRoute/cert-manager/HPA/PDB の切り替え、ExternalSecret の例)については、integrations/helm-chart/README.md をご覧ください。

Amazon Bedrock AgentCore

重要

イメージは1つ。AWS フォークはありません。 Bedrock AgentCore では、以前は専用のビルドが使われていました。現在はその必要はありません。標準イメージは、環境変数だけで設定すれば、そのまま AgentCore で実行できます。AgentCore の containerConfiguration が受け付けるのは ECR URI のみ(Docker Hub は使用できません)で、linux/arm64 が必須です。そのため、公開済みのマルチアーキテクチャイメージは引き続き ECR にコピーする必要があります。または、AWS Marketplace の掲載ページから取得できます。こちらは、すでに ECR にあるものと同じイメージです。

🚀 AWS Marketplace を使ったクイックスタート:

Zscaler Integrations MCP Server を Amazon Bedrock AgentCore にデプロイする最も簡単な方法は、AWS Marketplace の掲載ページを利用することです。この方法では、次のものが利用できます。

  • ✅ AgentCore の検証要件を満たす、ECR にホストされた linux/arm64 イメージ
  • ✅ AWS Secrets Manager ローダーを内蔵。ZSCALER_SECRET_NAME を設定すれば、認証情報が環境変数に現れることはありません
  • ✅ ContainerConfiguration にはコマンドの上書き設定がないため、ZSCALER_MCP_TRANSPORT / _HOST / _PORT でトランスポートを指定
  • ✅ デフォルトで読み取り専用。許可リストに追加するまで書き込みツールは無効
  • ✅ 他のすべてのデプロイ方法と同一のツール一覧、ツールセット、認証モード

📚 デプロイガイド:

詳しいデプロイ手順、IAM の設定、トラブルシューティングについては、包括的なAmazon Bedrock AgentCore デプロイガイドを参照してください。

デプロイガイドでは、次の内容を説明しています。

  • 前提条件と AWS VPC の要件
  • IAM ロールと信頼ポリシーの設定
  • ステップごとのデプロイ手順
  • 環境変数の設定
  • 書き込みモードの設定(CREATE/UPDATE/DELETE 操作用)
  • トラブルシューティングと検証の手順

🔐 AWS Secrets Manager(組み込み):

イメージには AWS Secrets Manager ローダーが含まれているため、実行環境の環境変数に認証情報を設定する必要はありません。認証情報を1つの JSON シークレットとして保存し、デプロイ時にそのシークレットを指定します。

aws secretsmanager create-secret \
  --name zscaler/mcp/credentials \
  --secret-string '{"ZSCALER_CLIENT_ID":"...","ZSCALER_CLIENT_SECRET":"...","ZSCALER_VANITY_DOMAIN":"acme","ZSCALER_CUSTOMER_ID":"123456"}'

次に、実行環境で ZSCALER_SECRET_NAME=zscaler/mcp/credentials を設定します。この変数があればオプトインは完了し、追加のフラグは不要です。実行ロールには secretsmanager:GetSecretValue(シークレットでカスタマーマネージドキーを使用する場合は kms:Decrypt も)を付与してください。シークレットの値はコンテナ環境変数を上書きするため、シークレットをローテーションすればタスク定義に残った古い値より優先されます。また、読み取りに失敗した場合は、後になって原因の分かりにくい Zscaler API エラーとして表面化するのではなく、サーバーの起動時に停止します。ECS Fargate、EKS、EC2 で同様に動作します。PyPI(コンテナ以外)からインストールする場合、boto3 はオプションのエクストラとして利用できます:pip install 'zscaler-mcp[aws]'。

ZSCALER_MCP_TRUST_PLATFORM_AUTH=true は AgentCore 固有の回避策です。これにより、api-key / zscaler 認証モードでは、認証情報を含まないリクエストを受け付け、コンテナ自体の認証情報にフォールバックできます。認証を行うイングレスの背後でのみ安全に使用できます(AgentCore の customJwtAuthorizer は独自のトークンのために Authorization ヘッダーを消費するため、こちらの認証情報を渡す方法がありません)。コンテナに直接アクセスできる環境では、絶対に設定しないでください。

メモ

以前のリリースでは、MCP セッションの初期化を迂回する FastAPI ラッパー(web_server.py)を使った専用の Bedrock イメージが提供されていました。このラッパーは廃止されました。現在、サーバーは標準の streamable-http を使用し、2026-07-28 リビジョンのクライアントはセッションハンドシェイクを必要としない、自己完結型の POST リクエストを使います。Marketplace イメージを推奨する理由は、AgentCore の ECR と arm64 の要件をそのまま満たしているためであり、異なるコードを実行するためではありません。

エージェントで MCP サーバーを使用する

このセクションでは、一般的な AI エージェントで Zscaler Integrations MCP Server を設定する手順を説明します。開始する前に、以下を完了していることを確認してください。

  1. ✅ インストールとセットアップを完了している
  2. ✅ 認証を設定している
  3. ✅ 認証情報を含む .env ファイルを作成している
Claude Desktop

Claude Desktop には、次のいずれかの方法で Zscaler MCP Server をインストールできます。

Windows ユーザーの方へ:ワンクリック拡張機能には macOS/Linux 用のバイナリが含まれているため、Windows では動作しません。代わりに オプション 2:手動設定を使用してください。この方法では、実行時に uvx を使ってプラットフォームに適したパッケージをインストールします。詳しくはトラブルシューティング:Windowsをご覧ください。

オプション 1:拡張機能としてインストール(macOS / Linux)

最も簡単に利用を始められる方法です。ワンクリックでインストールでき、Claude Desktop で使いやすい UI を利用できます。導入のハードルも低くなります。

前提条件: uv がインストールされている必要があります(uvx が提供されます)。この拡張機能は、実行時に uvx を使って PyPI からサーバーを実行するため、pip install zscaler-mcp を手動で実行する必要はありません。uv をインストールします:curl -LsSf https://astral.sh/uv/install.sh | sh

  1. Claude Desktop を開きます
  2. Settings → Extensions → Browse Extensions に移動します
  3. 検索ボックスに zscaler と入力します
  4. 検索結果から Zscaler MCP Server を選択します
  5. Install または Add をクリックします
  6. プロンプトが表示されたら .env ファイルのパスを設定します(または、インストール後に設定を編集します)
  7. Claude Desktop を完全に再起動します(終了してから再度開きます)
  8. Claude に「利用可能な Zscaler ツールは何ですか?」と尋ねて確認します
オプション 2:手動設定(すべてのプラットフォーム、Windows では推奨)
  1. Claude Desktop を開きます
  2. Settings → Developer → Edit Config に移動します
  3. 次の設定を追加します:
{
  "mcpServers": {
    "zscaler-mcp-server": {
      "command": "uvx",
      "args": ["--env-file", "/absolute/path/to/your/.env", "zscaler-mcp"]
    }
  }
}

重要:/absolute/path/to/your/.env を .env ファイルの絶対パスに置き換えてください。Windows では、C:\Users\You\.env のようなパスを使用します。相対パスは使用できません。

  1. 設定ファイルを保存します
  2. Claude Desktop を完全に再起動します(終了してから再度開きます)
  3. Claude に「利用可能な Zscaler ツールは何ですか?」と尋ねて確認します

トラブルシューティング:

  • 「MCP server not found」:.env ファイルのパスが絶対パスであり、正しいことを確認してください
  • 「Authentication failed」:.env ファイルに有効な認証情報が含まれていることを確認してください
  • ツールが表示されない:Claude Desktop のログ(Help > View Logs)でエラーを確認してください
  • 拡張機能が見つからない:「Web」ではなく「Desktop extensions」タブで検索していることを確認してください
  • Windows:ModuleNotFoundError(rpds、pydantic_core など):拡張機能には macOS/Linux 用のバイナリが含まれています。代わりにオプション 2(手動設定)を使用してください。トラブルシューティングガイドをご覧ください。
Cursor
  1. Cursor を開きます
  2. Settings → Cursor Settings → Tools & MCP → New MCP Server に移動します
  3. 設定は ~/.cursor/mcp.json に保存されます。次の設定を追加します:
{
  "mcpServers": {
    "zscaler-mcp-server": {
      "command": "uvx",
      "args": ["--env-file", "/absolute/path/to/your/.env", "zscaler-mcp"]
    }
  }
}

別の方法:uvx の代わりに Docker を使用することもできます。

{
  "mcpServers": {
    "zscaler-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env-file",
        "/absolute/path/to/your/.env",
        "zscaler/zscaler-mcp-server:latest"
      ]
    }
  }
}
  1. 設定ファイルを保存します
  2. Cursor を完全に再起動します(終了してから再度開きます)
  3. 「自分の ZIA ルールラベルを一覧表示して」と尋ねて確認します

トラブルシューティング:

  • Cursor の MCP ログ(View > Output > MCP)で接続エラーを確認してください
  • .env ファイルのパスが絶対パスであり、認証情報が正しいことを確認してください
  • 設定ファイルは ~/.cursor/mcp.json(Windows では %USERPROFILE%\.cursor\mcp.json)にあります

プラットフォーム連携

Zscaler MCP サーバーには、複数の AI 開発プラットフォーム向けのネイティブ連携機能が備わっています。各連携には、プラットフォーム固有の設定ファイル、19 個のガイド付きスキル、セットアップ手順が含まれます。

プラットフォーム種類クイックスタート詳細
Claude Codeプラグインclaude plugin install zscalerintegrations/claude-code-plugin/
Cursorプラグイン設定 → ツールと MCP → 新しい MCP サーバーintegrations/cursor-plugin/
Gemini CLI拡張機能gemini-extension.json を登録integrations/gemini-extension/
Kiro IDEパワーパワーパネル → カスタムパワーを追加integrations/kiro/
Azure(Container Apps / VM)デプロイ+エージェントpython azure_mcp_operations.py deployintegrations/azure/
Google Cloud(Cloud Run / GKE / VM)デプロイpython gcp_mcp_operations.py deployintegrations/google/
Google ADK Agentエージェントpython adk_agent_operations.py deployintegrations/google/adk/
Kubernetes(Helm Chart)デプロイpython helm_mcp_operations.py deployintegrations/helm-chart/
GitHub MCP Registryレジストリmcp-publisher publishintegrations/github/

すべての連携に関する詳細なドキュメントは、プラットフォーム連携ガイドをご覧ください。

すべてのエージェントに共通するトラブルシューティング

よくある問題:

  1. 「コマンドが見つかりません:uvx」

    • uv をインストールします:curl -LsSf https://astral.sh/uv/install.sh | sh
    • または Docker を使用します:uvx を docker run --rm --env-file /path/to/.env zscaler/zscaler-mcp-server:latest に置き換えます。
  2. 「.env ファイルが見つかりません」

    • 相対パスではなく、絶対パスを使用します。
    • 指定したパスにファイルが存在することを確認します。
    • ファイルのアクセス許可を確認します(読み取り可能である必要があります)。
  3. 「認証に失敗しました」

    • 必要な OneAPI 環境変数がすべて .env に含まれていることを確認します。
    • 認証情報が正しく、有効期限が切れていないことを確認します。
  4. 「ツールが表示されません」

    • エージェントによっては、UI でツールを有効にする必要があります。
    • 接続エラーがないか、エージェントのログを確認します。
    • MCP サーバーが実行中であることを確認します(エージェントの MCP ステータスを確認してください)。
  5. 「サーバー接続がタイムアウトしました」

    • MCP サーバーが正常に起動できることを確認します。
    • 手動でテストします:uvx --env-file /absolute/path/to/.env zscaler-mcp
    • HTTP トランスポートを使用している場合は、ポートの競合がないか確認します。
  6. Windows:ModuleNotFoundError: No module named 'rpds.rpds'(Claude Desktop 拡張機能)

    • この拡張機能には macOS/Linux 用のバイナリがバンドルされています。代わりに、uvx zscaler-mcp を使って手動で設定してください。
    • トラブルシューティング:Windowsを参照してください。
  7. Windows:'C:\Program' is not recognized(npx を使用するリモート MCP)

  8. Non-HTTPS URLs are only allowed for localhost(mcp-remote)

  9. self-signed certificate / DEPTH_ZERO_SELF_SIGNED_CERT(TLS を使用する mcp-remote)

ヘルプの利用:

  • エージェント固有のログを確認します(通常は「ヘルプ」または「表示」メニューにあります)。
  • サーバーを手動でテストして、問題がエージェント側かサーバー側かを切り分けます。
  • 詳細については、トラブルシューティングセクションを確認してください。

コメント

MCP は初めてですか?

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

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