暗い画面に表示されたミニファイされたJavaScriptコード
設計と運用

Geiger検証:CI/CDにMCPサーバーの棚卸しを組み込む方法

目次を見る

AIエージェントやMCPサーバー(Model Context Protocolの略で、AIが外部ツールやデータにアクセスするための標準プロトコル)を開発フローに組み込んでいるチームに向けた話です。Claude CodeやCursor、VS Codeの拡張機能など、AI関連のツールを増やしていくと、どこに何が設定されているか分からなくなる問題を扱います。

開発環境にAIエージェントを1つ2つ入れているうちは管理も簡単です。ところがMCPサーバーを複数導入し、Hooks(特定のイベント発生時に自動実行されるスクリプト)やプラグインまで積み重なると、棚卸しの手間が一気に増えます。この状況に対して、PC内のAI関連ツールを自動スキャンしてレポート化する「Geiger」というオープンソースツールが公開されました。CI/CD(継続的インテグレーション・継続的デリバリー)のパイプラインに品質ゲートを組み込む発想と重ねて読むと、活用の幅が見えてきます。

Geigerが解決する問題は何か

GeigerはGitHub上で公開されているNode.js製のCLIツール(コマンドラインから操作するツール)です。インストール不要で npx geiger-scan を実行するだけで、ローカルPC内のAIエージェント・ハーネス(AIの実行環境を仲介する仕組み)・MCPサーバー・プラグイン・AI拡張機能を洗い出してくれます。

スキャン対象はClaude CodeやCodexのようなAIコーディングエージェントだけではありません。CursorやVS Codeに登録されたMCPサーバーの設定、Hooksスクリプト、各種AI拡張機能まで一覧化される点が特徴です。実行は読み取り専用(read-only)で、何かを変更したり実行したりすることはありません。

検出した各項目には「EXECUTES(コード実行権限あり)」「HOLDS-SECRETS(認証情報を保持)」「BROAD-FILESYSTEM(広範なファイルアクセス)」「BROAD-WEB(広範なウェブアクセス)」「NETWORK(通信を行う)」「UNKNOWN-ORIGIN(出所不明)」というラベルが付与されます。これにより、一見便利なだけに見えていたツールが、実際にはどこまでの権限を持っているかが可視化されます。

段階的に見る仕組みとオプション

基本スキャンに加えて、Geigerにはレポート生成と差分比較の機能があります。段階を追って見ていきます。

1つ目はHTMLレポートです。npx geiger-scan --html report.html を実行すると、ブラウザで開ける自己完結型のレポートファイルが生成されます。各検出項目のアクセス範囲や設定ファイルの場所、対処方法までブラウザ上で確認できます。

2つ目はベースライン保存です。npx geiger-scan --json baseline.json で現在の状態をJSON形式で保存しておけます。これはCI/CDの文脈で言えば、ある時点のスナップショットを基準として固定する操作に近い発想です。

3つ目は差分比較です。npx geiger-scan --diff baseline.json を実行すると、保存済みのベースラインと現在の状態の差分が表示されます。新しく追加されたMCPサーバーや拡張機能があれば、そこで検知できます。

認証情報らしき値が設定ファイル内に見つかった場合でも、Geigerはキーの値そのものを表示しません。キー名・設定ファイルのパス・認証情報の種類だけをレポートする設計になっており、レポート自体が機密情報の漏洩経路にならないよう配慮されています。

既存の品質管理の仕組みとの関係

ソフトウェア開発のCI/CDパイプラインには、依存関係の脆弱性スキャン(npm audit やDependabotなど)、静的解析(ESLint、SonarQubeなど)、インフラ構成の差分検知(Terraformのplanコマンドなど)といった「意図しない変化を検知する仕組み」がすでに組み込まれています。

Geigerはこれらと同じ思想を、AIツールのローカル環境という新しい対象に当てはめたものと捉えられます。依存ライブラリの脆弱性スキャンが「コードが呼び出す外部パッケージ」を対象にするのに対し、Geigerは「開発者のPC上でAIが実行できる範囲」を対象にします。

Hacker Newsでの議論では、「組織内で野良のMCPサーバーやプラグインが増えている実態を把握する企業用途に使えそうだ」という評価がある一方、「このようなツールで機能を数え上げなければならない環境自体が、すでに安全とは言えない状態であり、バックアップやサンドボックス環境を用意すべきだ」という指摘も出ています。棚卸しツールは実態把握の入口であって、リスク対策そのものではないという視点は、QA(品質保証)の立場からも押さえておきたいところです。

今日から確認できること

実際に試すには Node.js 18以上が入った環境が必要です。グローバルインストールやアカウント登録は不要なので、まずは手元のマシンで動かして様子を見るのがよさそうです。

# バージョン確認
node -v

# スキャン実行(読み取り専用)
npx geiger-scan

# HTMLレポートの生成
npx geiger-scan --html report.html

# 現状をベースラインとして保存
npx geiger-scan --json baseline.json

# 後日、差分を確認
npx geiger-scan --diff baseline.json

CI/CDパイプラインへの組み込みを検討するなら、まず確認すべきは次の3点です。

  • 開発者ごとのローカル環境差:チームメンバー間でMCPサーバーの構成にどれだけばらつきがあるか
  • EXECUTES・BROAD-FILESYSTEMラベルの数:コード実行権限や広範なファイルアクセス権を持つツールがどれだけ存在するか
  • ベースラインとの乖離:定期スキャンの差分に、許可していないツールの追加が含まれていないか
GeigerはAIツールの脆弱性を直接修正する仕組みではなく、「何が存在し、どこまでアクセスできるか」を可視化する棚卸しツールです。

リリースサイクルの中にこうした定期棚卸しを組み込む場合、週次や月次でのスキャン結果をベースラインと突き合わせ、差分をプルリクエストのレビュー項目に加える運用が現実的です。GitHub Actionsのようなワークフローにスクリプトとして組み込み、差分が出た際にSlack通知を飛ばす形であれば、既存のCI基盤に馴染みやすい構成になります。

まとめ

AIエージェントやMCPサーバーの数が増えるほど、どこに何が設定されているかを追うコストも増えていきます。

Geigerは npx geiger-scan 一発で現状を可視化し、--diff オプションで変化を追跡できる点が実用的です。認証情報の値自体は表示しない設計も、レポートの共有をしやすくしています。

まずは手元の開発環境で一度スキャンを走らせ、EXECUTESやHOLDS-SECRETSのラベルが付いたツールがどれだけあるか確認してみるところから始められます。そのうえでベースラインを保存し、定期的な差分チェックをチームの運用フローに組み込めるかどうか検討してみてください。

参考

無料で自分のPCにインストールされているAIエージェント・ハーネス・MCPサーバー・プラグイン・AI拡張機能をすべてスキャンして列挙してレポートしてくれる「Geiger」

この記事について: 本記事は AI を活用して作成し、forva AI 編集部が内容を確認・監修しています。

AI 駆動開発のご相談は forva AI へ。まずはお気軽にどうぞ。