AI・機械学習

AIエージェントにファイルシステムを好き勝手させるな!SafeMCPで安全なMCP環境を作る方法

「MCPサーバーを使ったら、AIが意図しないファイルを書き換えてしまった…」そんな経験、ありませんか?🚨

最近、Cursor・Claude Code・VS CodeといったAIコーディングツールにMCP(Model Context Protocol)サーバーを接続して開発する「バイブコーディング」が急速に広まっています。でも実は、ここに見落とされがちな大きなリスクが潜んでいるんですよね。

🤔 MCPの何が危ないの?

cybersecurity shield
cybersecurity shield / Photo by Markus Winkler via Pexels

MCPは、AIエージェントにツールや外部リソースへのアクセスを与えるプロトコルです。イメージとしては「AIに工具箱を渡す」感じです。

問題は、その工具箱にガードレールがないこと。デフォルト状態では、AIエージェントがあなたのファイルシステム上のどこでも読み書きできてしまうんです。つまり——

  • ⚠️ 意図しないディレクトリのファイルを削除
  • ⚠️ 機密情報を含む設定ファイルを上書き
  • ⚠️ プロジェクト外のパスへの不正アクセス

こういったことが、AIの「善意の判断」によって起きてしまう可能性があります。怖いですよね。

🛡️ SafeMCPという考え方

この問題への答えがSafeMCPという設計パターンです。ざっくり言うと「AIエージェントがアクセスできる範囲をコードで明示的に制限する」アプローチです。

Pythonで簡単なサンドボックス付きMCPツールを作るとこんな感じになります👇

import os
from pathlib import Path

# 許可するベースディレクトリを明示的に指定
ALLOWED_BASE = Path("/home/user/projects/my_project").resolve()

def safe_read_file(filepath: str) -> str:
    """サンドボックス内のファイルのみ読み取れる安全な関数"""
    target = Path(filepath).resolve()

    # ベースディレクトリの外へのアクセスをブロック
    if not str(target).startswith(str(ALLOWED_BASE)):
        raise PermissionError(
            f"アクセス拒否: {target} は許可ディレクトリ外です"
        )

    if not target.exists():
        raise FileNotFoundError(f"ファイルが見つかりません: {target}")

    return target.read_text(encoding="utf-8")

# 使用例
try:
    content = safe_read_file("/home/user/projects/my_project/main.py")
    print("読み取り成功!")
except PermissionError as e:
    print(f"ブロック: {e}")

ポイントをまとめるとこんな感じです👇

  • resolve() でシンボリックリンクや相対パスのトリックを無効化
  • startswith で許可ディレクトリ外への脱出を検知
  • ✅ PermissionError で明示的に拒否のメッセージを返す

🔧 実装時にチェックしておきたいこと


SafeMCPを自分のプロジェクトに導入する際は、以下の点を確認しておきましょう。

  • 📁 許可するディレクトリをできるだけ狭く設定する(最小権限の原則)
  • 🚫 書き込み・削除操作は読み取りとは別に明示的に許可する設計にする
  • 📝 AIエージェントが何をしようとしたかをログに記録しておく
  • 🔄 定期的に許可リストを見直す習慣をつける

まとめ

MCPは本当に便利なプロトコルですが、「便利」と「安全」は自動的にセットにはならないんですよね。AIエージェントにファイルシステムへの無制限アクセスを与えるのは、鍵をかけずに家を開放するようなものです。

SafeMCPの考え方でアクセス範囲を明示的に制限する、この一手間がトラブルを未然に防いでくれます。バイブコーディングを楽しみつつ、ぜひ安全な設計も意識してみてください!🛡️

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です