HooksとMCPを安全に設計する
自動実行イベントと外部連携の範囲・権限・データフローを明示してリスクを抑えます。
自動実行と外部接続は別々に評価する
Hookは、セッションやツール呼び出しなどのイベントに応じて、シェルコマンド、HTTPエンドポイント、MCPツール、プロンプト、サブエージェントなどを実行する仕組みです。MCPはClaude Codeから外部ツールやデータソースへ接続するプロトコルです。HookからMCPツールを使う構成も可能ですが、その場合は自動実行と外部アクセスの双方を評価します。
この教材では、運用中のHookやMCPサーバーをそのまま追加しません。まずデータフローと許可範囲を図にし、必要性が確認できた後に隔離された検証環境で試します。
1. Hookの設計項目
導入前に、以下をイベントごとに記録します。
- どのイベントが、どの条件で起動するか
- 入力されるデータと、読み取り・変更する対象
- 実行するコマンド、接続先、実行ユーザー
- 成功・失敗・タイムアウト時の動作
- ログとデバッグ方法
- 無効化・ロールバック方法
Hookは明示的なイベントで処理するため、決定的で短い処理に向きます。例えばローカルの検証を起動する場合も、コマンド、対象ファイル、時間、失敗時の結果が予測できるようにします。ネットワーク、秘密情報、ファイル削除、広範囲の書き込みが関わる処理は、理由と承認・統制を別途検討します。
2. MCPサーバーを評価する
MCPサーバーを追加する前に、提供者と配布元、ソースと更新方針、要求する認証、公開されるツール、読み書き可能なデータ、外部送信先、ログ、無効化方法を確認します。信頼できないMCPサーバーは、悪意あるコンテンツやプロンプトインジェクションの入口になり得ます。
「公式である」「広く使われている」だけで安全と判断しません。最初はテスト用のデータとアカウントを使い、読み取り専用で必要な範囲だけ接続します。書き込み、メール送信、Issue作成、データベース変更などは、対象と結果を確認できる承認手順を設けます。
3. 連携の脅威モデルを作る
例:課題管理システムからIssue本文を読み、変更計画を作る。
| 項目 | 確認内容 |
|---|---|
| 情報源 | 誰がIssueを書けるか。信頼できない指示が混ざり得るか |
| 権限 | 読み取りのみか。作成・編集・コメント権限が必要か |
| 秘密 | トークンや機密情報をどこに置き、どこへ送るか |
| 影響 | HookやMCPが誤動作した時に何が変更されるか |
| 承認 | 外部への書き込み・公開操作を誰がどう確認するか |
| 復旧 | 接続を止める方法、監査・復旧手順は何か |
外部のIssue本文はデータとして扱い、そこに書かれた指示を自動的に信頼して実行しないように設計します。
演習:読み取り専用の接続計画を作る
架空の課題管理サーバーを例に、必要なツールを列挙し、読み取りだけで達成できる範囲と書き込みが必要な場面を分けます。サーバー提供者、認証、データ経路、権限、承認点、停止方法、テストデータを記録します。Hookを使うなら起動イベントと副作用も同じ計画に含めます。
完了条件
- Hookのイベント、入力、出力、副作用を説明できる
- MCPがアクセスするデータ、ツール、ネットワーク先を列挙した
- 読み取り専用から始める理由を説明できる
- 機密情報の管理、ユーザー承認、ログ、停止方法が決まっている
- 実サービスへ接続する前の隔離テスト手順がある
参考資料
公式ドキュメントの参照先を2026年10月18日に確認しました。自動処理や接続ツールの仕様は変更される場合があります。導入時には対象バージョンの公式資料と運用ポリシーを確認してください。
次に読む
ワークフローの品質・コストを評価するで、小さなPoCを継続するか判断する指標を設計します。