マガジン

MCPの権限は読み取り専用から始める:AIに渡す操作を最小にする設計の考え方

AIを使いこなす

Claudeで執筆し、GPTで自動校閲・修正しています。

机上の四つのトレーのうち、最初の一つにだけ鍵を置く手
記事の内容をもとに制作したAI生成イメージです。実際の製品画面や検証結果の写真ではありません。

結論から言うと、MCPサーバーをつなぐときは、読み取りだけができる状態で始めるのが安全です。そのうえで「読み取り→作成→変更→削除」の順に、段階ごとに条件を確認しながら広げます。広げるかどうかは、AIの賢さではなく、「失敗したときに元へ戻せるか」に加え、作業に必要な権限か、情報漏えいや外部への影響を抑えられるかで判断します。 この記事では、その判断を一枚の権限拡張表にしました。表の使い方、AIに頼める確認作業の依頼文、設定時のチェックポイントもあわせて示します。

この記事の目次
  1. なぜ最初から書き込みを渡さないのか
  2. 権限は「AIへの指示」ではなく「接続側」で絞る
  3. 権限拡張表:読み取り→作成→変更→削除
  4. AIに頼む確認作業の依頼文(説明用の例)
  5. 導入手順:最初の1週間の進め方
  6. 段階を上げる前の最終チェック

なぜ最初から書き込みを渡さないのか

MCPのツールは、言語モデルが文脈に応じて自動で見つけて呼び出せるように設計されています。仕様では、信頼性と安全性のために、ツール呼び出しを拒否できる「人間の関与(human in the loop)」を常に置くべきだとされています(MCP仕様 Tools)。また、クライアントは機微な操作で利用者に確認を求め、ツールの利用をログに残すことが推奨されています。

AIエージェントの危険性を整理したOWASPは、過剰な裁量(Excessive Agency)の原因を、機能が多すぎる、権限が広すぎる、自律度が高すぎる、の3つに分けています。対策として挙げられているのは、機能の範囲を絞ること、最小権限にすること、重要な操作の前に人が確認することです(OWASP LLM06:2025 Excessive Agency)。

読み取り専用から始める設計は、書き込みによる被害を抑えるのに役立ちます。ただし、読み取り専用にするだけでツール数や自律度まで下がるわけではありません。読める範囲や読み取った情報の送信先も絞る必要があります。

権限は「AIへの指示」ではなく「接続側」で絞る

「書き込みはしないでね」とプロンプトに書くだけでは、権限を絞ったことになりません。絞る場所は次の順に強いと考えてください(これは編集上の整理です)。

  1. 接続先の資格情報:読み取り専用のAPIトークン、データベースの読み取り専用ロールなど。そもそも書けない。
  2. MCPサーバーが公開するツール:書き込み系のツールを最初から有効にしない。
  3. クライアント側の許可ルール:Claude Codeでは、MCPツールを mcp__<サーバー名>__<ツール名> の形式で指定して許可や制限をかけられます(Claude Code 権限設定)。
  4. プロンプトでの指示:補助にはなりますが、防御の主役にはしません。

注意したいのは、ツールの説明文や注釈(annotations)を鵜呑みにしないことです。MCP仕様は、信頼できるサーバーから来たものでない限り、クライアントはツール注釈を信頼できないものとして扱う必要があるとしています(MCP仕様 Tools)。「読み取り専用」と書いてあっても、実際の権限は人が接続設定で確認します。

また、Claude Codeの文書は、接続するサーバーを信頼できるか事前に確認するよう警告しています。外部のコンテンツを取得するサーバーは、プロンプトインジェクション(読み込んだ文章に紛れた命令でAIが動かされること)のリスクがあるためです。読み取り専用でも、読んだ内容がAIの次の行動に影響する点は残ります。

権限拡張表:読み取り→作成→変更→削除

次の表と判断の順序は、人が権限拡張を検討するための編集上の提案で、MCP仕様が定める段階や安全基準ではありません。条件をすべて満たしても、安全や権限拡張の可否を保証するものではありません。復元、対象制限、件数上限、操作別の権限分離が可能か、通知などの副作用がないかは、各サービスの仕様・設定で人が確認し、作業上の必要性と組織のルールに照らして判断します。数値(件数など)は説明用の例なので、自分の環境に合わせて変えてください。

  • 0. 読み取り、AIに渡す操作:検索、一覧、参照、広げる条件(すべて満たす):対象を特定のプロジェクト・フォルダ・テーブルに限定済み。資格情報が読み取り専用。個人情報や認証情報が範囲に含まれない、止める・戻す条件:範囲外のデータを読もうとした。読んだ外部テキストの命令に従おうとした、人が確認すること:読んだ対象の一覧、要約の根拠が元データと合っているか
  • 1. 作成、AIに渡す操作:新規の下書き、新規ファイル、新規チケット、広げる条件(すべて満たす):既存データに触れない。「下書き」状態か、識別できる接頭辞が付く。作ったものを一覧で見つけて消せる。外部への通知や送信を伴わない、止める・戻す条件:既存の項目と同名で上書きしそう。作成数が想定を超える、人が確認すること:作成物の一覧と中身。公開・送信されていないこと
  • 2. 変更、AIに渡す操作:既存項目の更新、編集、広げる条件(すべて満たす):変更前の値を残せる(履歴、バージョン管理、バックアップ)。対象をIDなどで限定できる。1回の件数に上限がある(例:10件)、止める・戻す条件:差分を説明できない。一括変更の対象が想定より多い、人が確認すること:変更前後の差分を、実行前に見る。元に戻す手順を一度試す
  • 3. 削除、AIに渡す操作:削除、破棄、広げる条件(すべて満たす):原則はAIに渡さない。渡すなら、ゴミ箱や論理削除で復元でき、復元を実際に試した。最終実行は人が承認する、止める・戻す条件:復元できない。対象が検索条件で決まる(「古いもの全部」など)、人が確認すること:削除対象の全件リスト。実行は人の操作

メール送信や外部サービスへの投稿は、取り消し機能があっても、相手が読んだ内容や複製まで回収できるとは限りません。編集上の判断として、削除と同じく原則はAIに渡さず、必要なら送信先・内容・件数を人が実行前に確認し、最終実行は人が行います。削除の復元条件とは分けて判断してください。

判断の順序

迷ったら、次の順に自問します。

  1. 失敗したら元に戻せるか(戻せないなら段階3扱い)。
  2. 影響範囲を、ID・フォルダ・件数で区切れるか。
  3. 自分以外の人や外部に届かずに済むか(届くなら上記の外部送信の扱いで判断する)。
  4. AIが何をしたか、後から記録で追えるか。

どれかが「いいえ」なら、その段階には上げません。

AIに頼む確認作業の依頼文(説明用の例)

次の依頼文は説明用の例で、筆者は実行して検証していません。MCPサーバーの導入前に、ツール一覧を段階別に仕分けさせる使い方です。

次はMCPサーバーのツール一覧(名前・説明・入力項目)です。
各ツールを「読み取り/作成/変更/削除/外部送信」のどれに当たるか分類し、
迷うものは「要確認」としてください。
表の列:ツール名、分類、根拠(説明文のどこか)、
必要そうな権限、最初の導入で有効にしてよいか(読み取りのみ可)。
説明文が実際の動作と違う可能性があるので、断定せず、
私が接続設定で確認すべき点も最後に挙げてください。

[ここにtools/listの結果、またはツール名と説明を貼る]

AIの分類は下書きとして使い、実際の権限は管理画面やトークンの設定で人が確かめます。説明文だけで判断すると、先ほどの注釈の注意点にぶつかります。

読み取りの段階で使える業務の依頼文も一つ挙げます。

共有フォルダ「案件A」だけを対象に、先月更新されたファイルを一覧にしてください。
ファイルの変更、移動、削除はしないでください。
読み取った範囲(フォルダ名と件数)を最後に報告してください。

導入手順:最初の1週間の進め方

以下は編集上の提案です。

  1. 資格情報を作る:読み取り専用の権限だけを持つトークンやロールを用意する。既存の管理者トークンを流用しない。
  2. 対象を絞って接続する:Claude Codeでは接続の範囲(スコープ)を選べます。ローカル(現在のプロジェクトのみ・共有されない)、プロジェクト(.mcp.json でチームに共有)、ユーザー(全プロジェクト)の3種類です(Claude Code MCP)。最初は、設定を共有せず現在のプロジェクトで試せるローカルから始める方が無難です。ただし、このスコープはサーバー設定の読み込み・共有範囲であり、接続先で読めるデータや操作権限を制限するものではありません。
  3. ツール一覧を仕分ける:上の依頼文で下書きを作り、人が接続設定と照合する。
  4. 読み取りで数回使う:実際の作業で、読んだ範囲と回答の根拠を毎回確認する。
  5. 必要性と表の条件を人が確認し、上げる場合も1段階にとどめる:作成まで上げたら、しばらくその状態で運用する。変更と削除を同時に解禁しない。

なお、Claude CodeのManualモードの権限設計も参考になります。基本の動作では、作業ディレクトリ内のファイル読み取りは承認不要で、ファイル編集やシェル実行は(一部の読み取り専用コマンドを除き)承認を求めます。ただし、許可ルールや権限モードなどで動作は変わります(Claude Code 権限設定)。MCPツールの承認要否も、実際の設定で別途確認してください。

段階を上げる前の最終チェック

  • 戻す手順を、実際に一度やってみたか。
  • 承認の確認画面を、読まずに押す運用になっていないか。承認が形式化すると、人の関与は意味を失います。
  • 一度許可した操作が、設定上どの範囲まで「次回から確認しない」になっているか把握しているか。
  • 作業が終わったら、広げた権限を元に戻す運用にできるか。

権限は、必要になった時点で必要な分だけ、期限を決めて広げます。読み取り専用で済む仕事を、書き込みを渡して楽にしようとしないことが、最小権限の実際的な意味です。

出典・参考資料