【悲報】ワイのLLM、個人情報を教えるまで喋り続けてしまう...ので、最強の番犬「mcp-detect-only-pii」を放ってみた
はじめに:AIとの蜜月、そして忍び寄る「個人情報」の影
皆さん、今日もAIと楽しくおしゃべりしていますか? 私は毎日ClaudeやChatGPTに人生の悩みからコードのバグまで、すべてをさらけ出しています。
しかし、ある日ふと気づいたのです。
「あれ?今ワイがコピペしたログ、顧客の電話番号入ってなかった……?」
冷や汗が止まりません。AIは賢いですが、空気を読むことはできません。「あ、これ個人情報だから送っちゃダメだよ!」なんて、送る前には言ってくれないのです。
「ないなら、作るしかない。」
そうして生まれたのが、この mcp-detect-only-pii です。
MCP(Model Context Protocol)とは?
「そもそもMCPって何やねん」という方に、3行で説明します。
共通規格: AI(Claude等)とローカルツールを繋ぐための共通プロトコル。
能力拡張: これまで「ただの物知り」だったAIに、「ファイル操作」「DB検索」「ツール実行」という**「手足」**を与える。
革命: 開発者はMCPサーバーを1つ作れば、あらゆるAIクライアントでその機能が使い回せる。
今回は、このMCPを使って**「AIに送信する前に、個人情報(PII)が含まれていないかチェックする機能」**を実装しました。
爆誕:mcp-detect-only-pii
今回作成したMCPサーバーの概要がこちらです。
何ができるのか?
このサーバーを導入すると、AI(現在は主にClaude Desktopなど)が**「テキスト内に個人情報(PII)が含まれているかどうか」**を判定できるようになります。
「PII」とは Personally Identifiable Information(個人を特定できる情報)のこと。 具体的には、以下のような情報を検知します。
氏名
住所
電話番号
メールアドレス
クレジットカード番号
マイナンバー(これは日本固有ですが、モデルの学習次第!)
IPアドレス
なぜ「Detect Only(検知だけ)」なのか?
「自動で伏せ字(マスク)してくれればいいじゃん」と思うかもしれません。 しかし、開発現場では**「何が漏れそうになったのか」を知ること**が重要です。
あえて「検知」に特化させることで、AIに「これ、個人情報っぽいけど送って大丈夫?」と聞き返させる、あるいはログとして記録する、といった柔軟な連携を目指しました。
技術スタックと仕組み
中身は至ってシンプル(Simple is Best)です。
Language: Python
Protocol: Model Context Protocol (MCP)
PII Detection Library: presidio-analyzer (Microsoft製) or regular expression patterns
仕組みの図解
ユーザーがAIにテキストを入力しようとする。
AIが「お、これ送信前にチェックしたほうがよくね?」と判断(あるいはシステムプロンプトで指示)。
mcp-detect-only-pii にテキストを投げる。
サーバーが「住所があるで!」「電話番号があるで!」と回答。
AIが「おい、個人情報入ってるぞ。落ち着け。」とユーザーを嗜める。
導入方法(あなたも今日から安全なAIライフ)
「自分も番犬を飼いたい!」という方のために、導入手順をまとめました。
- リポジトリのクローン
まずは、私のGitHubから獲物をゲットしてください。
Bash
git clone https://github.com/sanottti/mcp-detect-only-pii
cd mcp-detect-only-pii
- 環境構築
Python環境を整えます。
Bash
pip install -r requirements.txt
3. Claude Desktopへの登録
claude_desktop_config.json を開きます(場所はOSによりますが、Macなら ~/Library/Application Support/Claude/claude_desktop_config.json です)。
そこに、以下の設定をぶち込みます。
JSON
{
"mcpServers": {
"detect-pii": {
"command": "python",
"args": ["/path/to/your/mcp-detect-only-pii/main.py"]
}
}
}
※ /path/to/your/ は、実際にクローンしたパスに書き換えてくださいね!
実際に動かしてみた(狂気編)
さあ、いよいよ実践です。Claudeに、あえて危ないメッセージを投げてみましょう。
ユーザー: 「今日の打ち合わせ相手の連絡先メモっておくね。 名前:山田太郎 電話:090-1234-5678 住所:東京都千代田区1-1-1 これを要約して。」
すると、裏側でMCPが火を吹きます。
Claude(MCP経由): 「ちょっと待ってください。そのメッセージには以下の個人情報が含まれています:
PERSON: 山田太郎
PHONE_NUMBER: 090-1234-5678
LOCATION: 東京都千代田区1-1-1
これをそのまま処理してもよろしいですか?(キリッ)」
これですよ。これが欲しかったんです。 AIが賢い秘書から、頼れるコンプライアンス担当者に進化した瞬間です。
開発中の苦労話:PII検知の難しさ
実は、PIIの検知は一筋縄ではいきません。
「田中」さんは個人情報か?: 文脈によります。「田中」という名字だけならセーフかもしれませんが、「田中が15時に行く」ならアウトかもしれません。
日本語の壁: 英語のライブラリは優秀ですが、日本語特有の表現(「〇〇様」や「〜方」など)にどう対応するかが課題です。
今回のツールでは、拡張性を重視しています。正規表現を足すもよし、最新の機械学習モデルを繋ぐもよし。
今後の展望(夢は大きく)
現状はまだ「検知して報告する」というシンプルな機能ですが、今後は以下のようなアップデートを妄想しています。
自動モザイク機能: 検知した瞬間に [個人情報により削除] に置換する。
偽名生成機能: 「山田太郎」を「テストユーザーA」に、文脈を壊さずに変換する(AIの得意分野!)。
社内規定チェック: 「これは社外秘プロジェクト名だから送信NG」といった、カスタムルールの追加。
まとめ:AIと正しく付き合うために
AIは私たちの能力を10倍、100倍にしてくれる魔法の杖です。 しかし、その杖を振り回して自分の足(個人情報)を傷つけてしまっては元も子もありません。
「便利さ」と「安全性」はトレードオフではありません。 MCPのような新しい技術を使えば、両立できるはずです。
もし「お、ええやん」と思ってくれたら、ぜひGitHubにスターをください!励みになります。
GitHubリポジトリはこちら:mcp-detect-only-pii
それでは、安全なAIライフを!
おまけ:この記事を読んだあなたへ
ここまで読んでいただきありがとうございます。 もしあなたが「自分の住所をAIに教えそうになったことがある」なら、迷わずこのMCPを入れてください。
ワイのような失敗(顧客の電話番号をClaudeに教えて「いい番号ですね」と褒められる)を繰り返してはいけません。
著者: [sanottti] リポジトリ: sanottti/mcp-detect-only-pii
Discussion