🐕

【悲報】ワイの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ライフ)
「自分も番犬を飼いたい!」という方のために、導入手順をまとめました。

  1. リポジトリのクローン
    まずは、私のGitHubから獲物をゲットしてください。

Bash

git clone https://github.com/sanottti/mcp-detect-only-pii
cd mcp-detect-only-pii

  1. 環境構築
    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

GitHubで編集を提案

Discussion