MCP連携を安全に使う最小権限チェックリスト


AIエージェントとツールを繋ぐMCP(Model Context Protocol)が急速に普及している。Claude DesktopやCursorなど、MCPに対応したツールを使っている人も増えてきたはずだ。

ただ、便利さの裏にはリスクがある。MCPサーバはクライアントと同じ権限で動くことが多く、設定を間違えると「AIがファイルを全削除」「APIトークンが漏洩」といった事故が起きかねない。

今回は、MCP連携を安全に使うための最小権限チェックリストをまとめた。個人開発でも業務利用でも、一度このリストで自分の環境を点検してみてほしい。


そもそも「最小権限」がなぜ重要なのか

MCPサーバを動かすと、AIエージェントが外部ツールやファイルシステムにアクセスできるようになる。問題は、サーバに与えた権限がそのままAIの行動範囲になること。

たとえばファイル操作のMCPサーバに「全ディレクトリへの読み書き権限」を渡すと、プロンプトインジェクション攻撃でAIが誤動作したとき、被害がシステム全体に及ぶ。トークンが漏洩したときも同様だ。

最小権限の考え方は「必要な権限だけを、必要なときだけ与える」というもの。これでトラブル時の影響範囲を小さく抑えられる。


チェックリスト:設定前の基本方針

□ 初期権限は「読み取り専用」から始める

MCPサーバを設定するとき、最初からwrite権限を与えるのは避けたい。まずはread-onlyで動作確認し、本当に書き込みが必要になったときに追加する。

この「最初は最小、必要に応じて昇格」という方針は、OWASP(Webセキュリティのガイドライン)でも推奨されている原則だ。

□ ワイルドカード権限は使わない

files:*admin:*、単なる*のような包括的なスコープは便利だが危険。ツール別・操作別に分割して指定する。

# 悪い例
scopes: ["*"]

# 良い例  
scopes: ["files:read", "github:issues:read"]

スコープを細かく分けておくと、万が一トークンが漏れても被害範囲(blast radius)を限定できる。

□ deny-by-defaultを徹底する

「明示的に許可したもの以外は拒否」がセキュリティの基本。MCPサーバ側でも、スコープがあるからといって自動的に許可にせず、追加の認可チェックを入れる設計が推奨されている。


チェックリスト:通信とアクセス制御

□ ローカル限定ならstdioを使う

MCPサーバの通信方式にはstdio(標準入出力)とHTTPがある。ローカルで完結するならstdio一択。HTTPのようにポートを開かないため、外部からのアクセスリスクがない。

Claude Desktopの多くの設定例がstdioを使っているのもこの理由だ。

□ HTTPで公開するなら認可トークン必須

どうしてもHTTPで公開する場合は、アクセス制限が必須になる。認可トークンなしで公開するのは論外。可能ならUnix domain socketなどのIPC(プロセス間通信)でアクセス元を限定する方法もある。

□ 本番環境はHTTPS強制

開発環境のlocalhost以外では、平文HTTP禁止。HTTPS強制は当たり前のように聞こえるかもしれないが、MCPの設定でうっかり忘れがちなポイントでもある。


チェックリスト:トークンとログの管理

□ トークンの保管場所を見直す

MCPサーバで使うAPIトークンやシークレットを、設定ファイルにベタ書きしていないか確認する。環境変数や専用のシークレット管理ツールを使うのが基本。

□ ログにトークンを出力しない

意外と見落とされがちなのがログ出力。Authorizationヘッダやトークンがログに残ると、そこから漏洩する。

デバッグ用にリクエスト全体をダンプしている場合は要注意。本番では秘匿情報をマスクするか、そもそも出力しない設定にする。


チェックリスト:高リスク操作のガードレール

□ 破壊的な操作は別フロー+人間承認

ファイル削除、データベースの更新、外部APIへの書き込みなど、取り消しが難しい操作は「人間が承認してから実行」の仕組みを入れる。

AIエージェントの自動化では、2026-03-01の記事「見える自動化で暴走を防ぐエージェント監督術」でも触れたように、完全自動と人間確認のバランスが重要になる。

□ サンドボックスでファイルシステムとネットワークを制限

MCPサーバをサンドボックス内で動かすと、万が一サーバが乗っ取られてもアクセス範囲を限定できる。ファイルシステムは特定ディレクトリだけ、ネットワークは特定ホストだけ、といった制限をかける。

Dockerやfirejailなどのツールで比較的簡単に実現できる。ただし、サンドボックスの脆弱性には注意が必要で、定期的なアップデートも忘れずに。


自分のMCP設定、チェックしてみて

ここまでの内容をまとめたチェックリストがこちら。

  • □ 初期権限は読み取り専用
  • □ ワイルドカードスコープを使っていない
  • □ deny-by-defaultになっている
  • □ ローカル限定ならstdioを使用
  • □ HTTP公開時は認可トークン必須
  • □ 本番はHTTPS強制
  • □ トークンを安全に保管している
  • □ ログに秘匿情報を出力していない
  • □ 高リスク操作に人間承認を挟んでいる
  • □ サンドボックスで実行環境を制限している

全部チェックが入っている必要はない。ローカルで個人利用なら、前半の項目を押さえておけばとりあえず大丈夫だ。チームで使う場合や本番環境に近づくほど、後半の項目が重要になってくる。


注意点と向いていない使い方

このチェックリストは「事故を防ぐ」ための最低限の指針であって、「絶対安全」を保証するものではない。MCPはまだ発展途上のプロトコルで、ベストプラクティスも変わっていく可能性がある。

また、厳密なセキュリティ要件がある業務(金融、医療など)では、この記事だけで判断せず、専門家やセキュリティチームに相談してほしい。

MCPを便利に使いつつ、リスクも理解して付き合っていくのがこれからのAIツール活用の基本になる。まずは自分の設定ファイルを開いて、一つずつ確認してみてほしい。


参考リンク