Claude Media
ClaudeにPalo Alto MCPをつなぐ — ファイアウォールの読み取りと変更を分ける

ClaudeにPalo Alto MCPをつなぐ — ファイアウォールの読み取りと変更を分ける

PAN-OSファイアウォールとPanoramaにClaudeをつなぐPanOS MCP Serverの登録手順です。117ツールのうち変更系を見分け、permissionsで承認を挟む設定まで扱います。

PanOS MCP Serverは、Palo Alto NetworksのファイアウォールとPanoramaをPAN-OSのXML API経由でClaudeに操作させるMCPサーバーです。「DMZに通すルールを一覧して」「HAの同期状態を見て」といった問いに会話で答えさせられます。ただし変更系のツールも同じサーバーに入っており、本番機にそのままつなぐと設定の書き換えまで届きます。

この記事では、Claude Codeへの登録手順と、読むだけの使い方から変更を伴う使い方へ段階を分ける設定を扱います。READMEのコマンド例をそのまま貼ると環境変数が渡らない可能性がある点も、あわせて説明します。

PanOS MCP Serverとは何で、何に接続するか

PanOS MCP Serverは、Apius Technologies SAが保守するサードパーティ製のMCPサーバーです。Palo Alto Networksの製品ではありません。ライセンスはMITで、GitHubのリポジトリ名はapius-tech/Palo-MCPです。

接続先はPAN-OSが動く機器で、READMEはPA-Series(PA-220からPA-7500まで)、VM-Series、CN-Series、Panoramaを挙げています。条件は「APIアクセスが有効なPAN-OS機器」です。機能は16モジュール・117ツールにまとまっています。

通信の経路は単純です。READMEによると、APIの呼び出しはユーザーのマシンから直接ファイアウォールかPanoramaへ向かい、中継サーバーは挟みません。テレメトリーや分析のための送信もなく、APIキーが送られる先は自分の機器だけです。

Claudeの側から見ると、このサーバーはローカルのプロセスとして動きます。READMEには、ローカルのMCPサーバーはClaude CodeとCoworkのセッションでは動くが、通常のチャットでは動かないと書かれています。ブラウザ上のclaude.aiチャットからは使えません。

117ツールのどこが変更系か

READMEのツール一覧は、モジュールごとにツール数と説明を載せています。説明文に「追加・削除・CRUD・commit」といった語があるかどうかで、読み取り中心のモジュールと、変更を含むモジュールに分けられます。

モジュールツール数説明文にある操作
Systemツール数4説明文にある操作機器情報、HA状態、セッション、リソース
Logsツール数5説明文にある操作トラフィック、脅威、システム、URL、設定のログ
Threatツール数4説明文にある操作WildFire、アンチウイルス、コンテンツ版、URLカテゴリ
User-ID / Admin / VPN / Licensesツール数3 / 3 / 3 / 2説明文にある操作マッピング、管理者、IPSecトンネル、ライセンス
Networkツール数10説明文にある操作インターフェースやルーティング。静的ルートは追加・削除あり
Securityツール数18説明文にある操作セキュリティルールのCRUD、プロファイル、PBF、QoS
Objects / NATツール数16 / 5説明文にある操作オブジェクトとタグの追加・削除、NATルールの追加・移動・削除
Panoramaツール数29説明文にある操作デバイスグループ、テンプレート、pre/postルールのCRUD
Configツール数5説明文にある操作設定のset/delete、commit、Panoramaのcommitとpush
Utilityツール数2説明文にある操作任意のopコマンド、XPathによる設定の読み取り

この表は説明文からの分類で、ツールごとの正式な区分ではありません。正式な区分は、READMEが説明する「安全ラベル」です。サーバーは全ツールに次の3種類のラベルを付けています。

ラベル

ツールに付く3つの安全ラベル

  • [READ-ONLY]

    データを読むだけで、ファイアウォールには何も変更しません。

  • [MODIFIES CONFIG]

    設定の変更を候補設定に積むか、commitします。稼働中のトラフィックに影響します。

  • [ADVANCED]

    任意のコマンドを受け付けます。影響は入力しだいで変わります。

注意したいのは[ADVANCED]です。READMEの説明では、これは「読み取り」でも「設定変更」でもなく、渡されたコマンドによって影響が決まるツールです。Utilityモジュールの「任意のopコマンド」がこれに当たると考えられます。ラベルが読み取り専用でないツールは、変更系と同じ扱いで承認を挟むのが無難です。

Claude Codeに登録する

事前に用意するもの

READMEが挙げる前提は3つです。

  • Node.js 22.19以降
  • APIアクセスが有効なPAN-OSファイアウォールまたはPanorama
  • PAN-OSのAPIキー

APIキーはWeb UIの「Device → Administrators → 対象の管理者ユーザー → Generate API Key」で作れます。XML APIのkeygenエンドポイントを叩く方法もあります。

curl -k 'https://<FIREWALL_HOST>/api/?type=keygen&user=<USER>&password=<PASSWORD>'

この方法は、ユーザー名とパスワードをURLに含めて送り、TLS証明書の検証も省きます。READMEは管理用の信頼できるネットワークからだけ使うよう注意しています。同じ注意書きで、可能ならスコープを絞ったキーか読み取り専用のキーを使うよう勧めています。読み取り専用のキーを得る方法の詳細はREADMEには載っていないため、PAN-OS側の管理者ユーザーの権限設計は別途決めておく必要があります。

登録コマンドは引数の順序に注意

READMEのClaude Code向けの例は、次の形です。

claude mcp add panos -- npx -y github:apius-tech/Palo-MCP \
  --env PANOS_HOST=your-firewall-or-panorama \
  --env PANOS_API_KEY=your-api-key

Claude Codeのドキュメントでは、stdioサーバーの登録で--は「Claude自身のオプション」と「サーバーを起動するコマンド」を区切ります。--より後ろはサーバーへそのまま渡されます。上の例は--envが--の後ろに来るため、環境変数として設定されず、npxへの引数になる可能性があります。ドキュメントの形に合わせて、オプションを--の前に置くと確実です。

落とし穴

--envの位置が逆だとPANOS_HOSTが渡らない

--の後ろに置いた--envは、Claude Codeのオプションとして解釈されません。サーバーの起動直後に接続先が分からず失敗する形になりやすいので、--envは--の前に書きます。ドキュメントには、--envの直後にサーバー名を書くと名前まで環境変数の組として読まれる、という注意もあります。間に--transport stdioを挟むと避けられます。

ドキュメントの形に直すと、登録コマンドは次のとおりです。

claude mcp add --env PANOS_HOST=fw-lab.example.com \
  --env PANOS_API_KEY=<API_KEY> \
  --transport stdio panos \
  -- npx -y github:apius-tech/Palo-MCP

登録後はClaude Code内で/mcpを開き、panosが接続済みになっているかを確かめます。サーバー名をpanosにしているため、以降のツール名はmcp__panos__<ツール名>の形になります。

スコープと鍵の置き場所

claude mcp addのスコープは既定でlocalです。localスコープのサーバーは登録したプロジェクトだけで読み込まれ、チームには共有されません。APIキーを含む設定を置くなら、バージョン管理に入るprojectスコープの.mcp.jsonは避けるのが基本です。

チームで同じ登録を共有したいときは、.mcp.jsonで${PANOS_API_KEY}のように環境変数を展開できます。設定ファイルにはキーを書かず、各自の環境に持たせる形です。

変更系を承認に回す設定

READMEは「AIが提案した変更はコミット前に必ず確認する」ことを勧めています。これをClaude Code側の仕組みとして固定するのが、permissionsのask/allowです。Claude Codeの権限ルールは、deny、ask、allowの順で評価されます。askに一致した呼び出しは、allowにも一致していても確認が出ます。

README中の例からは、変更に使うツール名としてset_configとcommit、読み取りに使うツール名としてget_firewall_infoとget_security_rulesが分かります。たとえば次のような設定になります。

{
  "permissions": {
    "allow": [
      "mcp__panos__get_firewall_info",
      "mcp__panos__get_security_rules"
    ],
    "ask": [
      "mcp__panos__set_config",
      "mcp__panos__commit"
    ]
  }
}

MCPツールの権限ルールには、括弧で引数を絞る書き方が使えません。mcp__で始まるルールに括弧があると、設定の読み込み時にスキップされます。ツール名の指定は、サーバー名までのmcp__panos、ワイルドカードのmcp__panos__*、個別のmcp__panos__<ツール名>の3通りです。

READMEに載っているツール名は一部だけです。Panoramaのcommitやpush、各モジュールの追加・削除ツールの名前は、/mcpのツール一覧で確かめてからaskに足します。get_で始まる名前を一括で許可するmcp__panos__get_*も書けますが、get_が全部読み取りとは限りません。ラベルを見てから許可に回します。

CLAUDE.mdに作業の順序を書く

権限ルールは「止める」役割で、「どう進めるか」はCLAUDE.mdで指示します。次の断片は、READMEの「候補設定にsetしてからcommitする」という流れを、確認の手順として書き直した例です。

## ファイアウォール操作のルール
- 調査はREAD-ONLYのツールだけで行う
- 設定を変えるときは、setする前に対象のXPathと変更内容を提示する
- commitは、変更内容の差分を見せて承認をもらってから実行する
- 対象機器は毎回firewall名で明示する(省略しない)

READMEの付属プラグインも同じ考え方です。プラグインには、変更を候補設定に積んでからcommit前に確認を求めるスキルが同梱されています。

手順

変更を伴う作業の進め方

  1. 1

    読み取りだけで現状を把握する

    セキュリティルールやオブジェクトの一覧を取り、変更前の状態を会話に残します。

  2. 2

    変更内容を文章で提案させる

    setの対象と内容を、実行前にClaudeへ書き出させます。

  3. 3

    setで候補設定に積む

    askルールにより、この呼び出しで確認が出ます。

  4. 4

    差分を見てcommitを承認する

    commitの呼び出しでも確認が出ます。稼働中の機器に反映されるのはこの時点です。

複数台とPanoramaをつなぐ

1台だけならPANOS_HOSTとPANOS_API_KEYで足ります。複数の機器やPanoramaを同時に扱うときは、READMEのpanos-keygenで機器ごとに登録します。

npx panos-keygen --host fw-hq.example.com --user admin --name hq-fw
npx panos-keygen --host panorama.example.com --user admin --name panorama

APIキーはOSのキーチェーン(macOSのKeychain、WindowsのCredential Manager、LinuxのSecret Service)に保存され、~/.config/panos-mcp/firewalls.jsonにはホスト名の定義だけが残ります。複数登録した状態では、すべてのツールがfirewallパラメーターを受け取り、必須になります。登録済みの対象は、ツールlist_firewallsで一覧できます。

複数台で運用するときは、前節のCLAUDE.mdの規則どおり、対象機器を毎回明示させます。firewallの指定を省略した曖昧な指示で、別の拠点の機器を変更してしまう事故を避けるためです。

Desktop Extension(.mcpb)で入れる場合は、設定できる機器が1台に限られます。複数台やPanoramaを扱うなら、npxかClaude CodeのCLIで登録します。

運用前に押さえる注意点

READMEが明記している制約のうち、運用の判断に関わるものを挙げます。

  • 証明書の検証が省かれる: プロキシ経由の説明に、サーバーは接続先のPAN-OSへのTLS証明書の検証を無効にしている、という記述があります。自己署名証明書の機器に繋ぎやすい反面、経路上のなりすましは検出されません。管理用ネットワークの内側で使う前提です
  • Linuxでキーチェーンが無い場合: libsecretのないヘッドレスサーバーでは、APIキーがfirewalls.jsonに平文で保存されます。READMEは警告が出ると説明し、chmod 600で権限を絞るよう勧めています
  • プロキシ: 管理ネットワークが踏み台やSOCKS5の向こうにあるなら、環境変数PANOS_PROXYで指定できます。ファイアウォールのホスト名が向こう側でしか引けない場合は、プロキシ側でDNSを解決するsocks5h://の形式を使います
  • 免責: READMEの注意書きは、AIが誤解や幻覚で意図しない変更を実行しうること、本番機では影響を理解せずに使わないことを述べています。推奨は、ラボで先に試す、検査には読み取り専用キーを使う、変更前に必ず確認する、ファイアウォール側の設定変更ログを監視する、の4点です

最後の「設定変更ログの監視」は、Claude側の承認設定と役割が違います。承認はClaudeが変更に進む前の関門で、ログ監視は実際に何が変わったかを後から突き合わせる手段です。両方置いておくと、承認画面を読み飛ばした場合でも変更が見えます。

読むだけの使い方から始める

導入の順序としては、最初は読み取り専用で始め、変更系は使い方が固まってから足す進め方が組みやすい構成です。READMEの例にある「HAのスタンバイが同期しているか」「各管理対象機器のソフトウェア版」のような問いは、[READ-ONLY]のツールだけで答えられます。

はじめは変更権限のないAPIキーで登録し、allowにも読み取りのツールだけを入れます。変更系のツールが必要になった時点で、別のキーと別の登録名(たとえばpanos-write)を用意すれば、権限ルールもサーバー単位で分けられます。ツール名がmcp__panos-write__…の形になり、askのルールをその名前に向けるだけで済みます。

読み取り専用のデータベース診断で同じ考え方を使った例は、Claude CodeにRavenDB MCPをつないでクラスターを読み取り専用で診断するにあります。管理設定でMCPの追加が止められている環境では、claude mcp addが失敗する原因も確認してください。Claude Code全体の設定はClaude Codeの全体像で見渡せます。

この記事を共有:XはてブLinkedIn
MCP をもっと見る →