目次
はじめに
AI コーディングツールにファイルを渡す場面が増えてきましたが、そのファイルに機密情報が紛れ込んでいたら――意外と見落としがちなリスクです。
前回の記事では、Bob に送信するプロンプトや指示文に機密情報が含まれてしまうケースへの対策を紹介しました。
今回はその続編として、Bob に処理させるファイルそのものに機密情報が含まれている場合にどう対処するか、というテーマでシェアしたいと思います。
とはいえ、ファイルの形式は CSV、PDF、Excel などさまざまです。今回は、Excel ファイルを対象に、機密情報の混入を検知してブロックする仕組みを紹介します。
全体のアーキテクチャ ― ルール と MCP でどう守るか
今回の仕組みは、ルール と MCP という2つの機能を組み合わせて実現します。それぞれの役割を簡単に説明しておきましょう。
ルール とは
ルール は、Bob の動作に対して守るべきルールやワークフローを定義できる機能です。
プロジェクトのルートにある .bob/rules にルールファイルを配置することで、Bob がタスクを実行する際に必ずそのルールを参照するようになります。
たとえば、「ファイルを処理する前に必ず○○をチェックすること」といったワークフローを自然言語で記述できます。
MCP とは
MCP(Model Context Protocol)は、Bob を外部ツールやサービスと連携させるための仕組みです。MCP サーバーを通じて、Bob が通常はアクセスできない外部機能を呼び出したり、ユーザーが用意したカスタムツールを実行したりできるようになります。
今回のケースでは、Excel ファイルの中身を読み取って機密情報(会員番号)が含まれているかどうかを判定する MCP ツールを用意します。
ルールとMCPを組み合わせる
MCP ツール単体では、Bob が自動的にチェックを行ってくれるわけではありません。
そこで、ルール の中に「ファイルを処理する前に MCP ツールで機密チェックを行う」というワークフローを定義します。
こうすることで、Bob はタスク実行時に ルール を読み込み、その中で指定されたワークフローに従って動作します。
つまり、開発者が毎回手動でチェックしなくても、Bob が自動的に「Excelファイルを受け取る → 機密チェック → 問題なければ処理を続行」という流れを踏んでくれるようになります。
※ 余談ですが、全体的な仕組みは Skills とよく似ていますね!![]()
検証用の Excel ファイル
以下のような個人情報を含む Excel ファイルを用意しています。
今回注目するのは会員番号のカラムです。会員番号は14桁の数字で構成されていますが、そのうち 35 から始まるものは機密情報として扱われます。
たとえば、
35420123456789010 ❌35 で始まるため機密扱い
41112225333444455 ✅ 対象外
MCP ツールの構成と役割
ここでは、MCP ツールの中身を見てみましょう。
今回の検証では、35 から始まる会員番号を「本番環境の実データ(=機密情報)」として扱うルールを設定しています。この判定を行うのが、以下の MCP ツールです。

MCP ツールは Excel ファイルの中身をスキャンし、pattern1およびpattern2に一致するデータが見つかった場合、該当する情報を収集したうえで ok の値を Falseに設定して返します。
Bob はその結果を受け取り、ok: False を検知すると処理を中断し、検出された機密情報の内容をユーザーに通知します。
ルール ファイルの設定
ルールファイル側で MCP の設定に合わせて、以下の内容を設定しています。
Bob はユーザーから Excel ファイルに関する処理指示を受け取ると、まず excel_filtering MCP ツールを呼び出してファイルの中身をチェックします。返り値に含まれる ok が true の場合のみ後続のタスクを続行し、false の場合は処理を中断してユーザーに通知する、という流れをルールとして定義しています。
実際の動作を確認してみる
35から始まる会員番号が存在する場合:
35 から始まる会員番号を、11 から始まる架空の番号に修正した場合:
おわりに
今回は、Bob に処理させる Excel ファイルに対して、ルールと MCP を組み合わせた機密情報チェックの仕組みを紹介しました。
この方法のポイントは、開発者が毎回意識しなくても、Bob が自動的にファイルの中身を検査してくれるという点です。
ただし、今回は Excel ファイルのみを対象としています。CSV や PDF など他の形式にも対応するには、それぞれ専用の MCP ツールを用意する必要があります。
前回の記事と合わせて、プロンプト・ファイルの両面から機密情報を守る参考になれば幸いです。
もっと良いアプローチやアイデアがあれば、ぜひコメントで教えてください!











