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ツール活用の基本になる。まずは自分の設定ファイルを開いて、一つずつ確認してみてほしい。