「MCPサーバーって便利そうだけど、セキュリティは大丈夫なの?」
そんな疑問を持ったことはありませんか?実は最近、670個のMCPサーバーをスキャンしたところ、78%に重大なセキュリティ問題が見つかったというレポートが話題になっています。これ、他人事じゃないんですよね。🔍
そもそもMCPって何?
MCP(Model Context Protocol)とは、AIアシスタント(ClaudeやChatGPTなど)が外部のツールやサービスと連携するための「橋渡し役」となるプロトコルです。
イメージとしては「AIへの命令を受け取って、実際のAPIや操作に変換してくれる翻訳機」みたいなものです。メール送信・ファイル操作・データベースアクセスなど、AIができることを爆発的に広げてくれる仕組みですね。だからこそ、セキュリティが甘いと被害も大きくなるというわけです。
スキャン結果が衝撃的だった
670個のMCPサーバーを調査した結果、こんな数字が出てきました。😱
- 📊 平均スコア:53点(100点満点)
- 🔓 85個:認証なしで動いている
- ✅ 本番環境で安全と言えるのは、たったの9個
9個ですよ、9個。670個スキャンして9個。これはかなり厳しい現実です。
きっかけになった「Postmark事件」
このスキャンを始めるきっかけになったのが、週間1,500ダウンロードを誇る人気のPostmark向けMCPサーバーに見つかった脆弱性です。
なんと、このサーバーは送信するすべてのメールを攻撃者のアドレスにBCC(隠しコピー)していたというんです。ユーザーは気づかないまま、メールの内容が丸ごと漏れていたわけです。怖いですよね…。
これが「プロンプトインジェクション」と呼ばれる攻撃の一種で、AIへの指示に悪意ある命令を紛れ込ませてしまう手法です。
スキャナーが確認する4つのポイント
このレポートで使われたスキャナーは、以下の4点をチェックしています。
- 認証の有無:誰でもアクセスできる状態になっていないか
- 入力バリデーション:外部からの不正な入力を受け付けてしまわないか
- プロンプトインジェクション耐性:悪意ある命令を無視できるか
- 過剰な権限付与:必要以上の操作権限を持っていないか
特に「認証なし」は論外なんですが、85個ものサーバーが認証ゼロで動いているという現実は見逃せません。
自分でMCPサーバーを作るときに気をつけること
MCPサーバーを自作したり、既存のものを使う場合は、最低限これだけは確認しておきましょう。✅
# 例:FastAPIベースのMCPサーバーに認証を追加する最低限の実装例
from fastapi import FastAPI, Header, HTTPException
app = FastAPI()
# 環境変数からAPIキーを読み込む(ハードコードは絶対NG)
import os
VALID_API_KEY = os.getenv(





