mcp-secret-scrub について
mcp-secret-scrubは、テキストがエージェントに渡されたり、会話記録に保存されたりする前に、秘密情報を検出して除去する決定論的なMCPサーバーです。LLMやネットワークを使わず構造的に検出し、秘密の元の値は返しません。
主な機能
- 01プロバイダーキー、認証情報、接続文字列を検出
- 02検出した秘密情報を伏字、マスク、ハッシュ化
- 03テキストを変更せずにスキャン
- 04スキャン結果と伏字プレビューをまとめて返却
- 05対応する検出プロファイルを一覧表示
活用シーン
- 01ログをエージェントに渡す前に秘密情報を除去
- 02会話記録に認証情報が含まれるか確認
- 03テキストの保存やツールへの受け渡し前に伏字化
MCP 対応
stdioまたはStreamable HTTP経由で、秘密情報のスキャンと除去のツールをMCPクライアントに公開します。結果に秘密の元の値は含まれません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-secret-scrub
mcp-name: io.github.sudo-ai-git/mcp-secret-scrub
エージェントのコンテキストに取り込む前に、テキスト、ログ、トランスクリプトからシークレットを除去する、決定論的なLLM不使用のMCPサーバーです。値が漏れることはありません。
LLM不使用。ネットワーク不使用。純粋な構造検出。MITライセンス。最重要情報は含みません。
解決する問題
生のテキストをエージェントに渡す(または保存したり、ツールに渡したりする)前に、そこに有効なシークレットが含まれているかどうか、わからないことがよくあります。プラットフォームのスクラバーはパターンを見落としがちです。たとえば、秘密鍵、nvapi-トークン、github_pat_トークン、ログの途中にあるapi_key=の代入などです。そのテキストがLLMのコンテキストに入ったり、トランスクリプトとして永続化されたりすると、シークレットは事実上、外部に漏えいしたことになります。
このサーバーは、次の問いに決定論的に答えます。
このテキストにはどのシークレットが含まれているか。また、どこにも渡す前に安全に redact できるか?
検出範囲(決定論的プロファイル)
| 分類 | 例 |
|---|---|
| AIプロバイダーのキー | sk-proj-…、sk-ant-api…、sk-or-v1-…、sk-…、nvapi-… |
| クラウド/GitHub | AKIA…、aws_secret_access_key=、ghp_…、gho_…、ghu_…、ghs_…、ghr_…、github_pat_… |
| ID/認証 | JWT(eyJ…)、PEM秘密鍵、Bearer …、Basic …、OAuthクライアントシークレット |
| 代入 | api_key=、token=、secret=、password=、client_secret=、webhook_secret= |
| エンドポイント/DSN | Discordウェブフック、Slackのxox…、SQL/Redis/Mongo/AMQP接続文字列 |
スキャンでシークレットの値が返されることはありません。返されるのは種類、件数、位置のみです。これはテストによって保証される、厳格な安全性の契約です。
ツール(MCP)
| ツール | 目的 |
|---|---|
scrub_text(text, mode, keep_label) | シークレットを redact/マスク/ハッシュ化し、除去済みテキストを返します(値は返しません) |
scan_text(text) | 含まれているシークレットの種類を検出します(変更は行いません) |
report_full(text) | 1回の呼び出しでスキャンとredactを実行し、除去済みプレビューと検出結果を返します |
secret_profiles() | サポートされているすべての検出プロファイルを一覧表示します |
モード:
redact(デフォルト)→[REDACTED:TYPE]mask→ 先頭4文字と末尾2文字を表示しますhash→ 決定論的なSHA-256プレフィックス(呼び出し間で再現可能)
クイックスタート(stdio)
pip install mcp-secret-scrub
mcp-secret-scrub # stdio (default)
または、インストール可能なコンソールエントリにはuv/pipxを使用します。
pipx install mcp-secret-scrub
MCPクライアントの設定:
{ "mcpServers": {
"secret-scrub": { "command": "mcp-secret-scrub" }
}}
Streamable HTTP(リモート/Smitheryで公開可能)
python3 mcp_server.py --http --port 8138 # serves on http://<host>:8138/mcp/
決定性と安全性の保証
- 決定論的:同じ入力には、すべてのモード、すべての呼び出しで同一の出力を返します。
- 漏えいなし:
scan_textとscrub_textが元のトークンを出力することはありません。_deterministic_hashはSHA-256(ソルトなし)を使用するため、出力を再現できます。 - LLM不使用、ネットワーク不使用:正規表現と到達可能な構造の検出のみを使用します。
- 入力安全:文字列以外の入力にはトレースバックではなく、適切なエラーを返します。
検証
python3 test_detector.py— 中核チェック14項目中14項目に合格(検出、redact、決定性、漏えい防止契約、無害/Unicode/空入力、不正モード)python3 test_e2e.py— 実際のMCP stdioトランスポートを実行し、シークレットが通信経路を通過しないことを検証します
ライセンスと由来
MITライセンス。sudo-ai-gitの決定論的なLLM不使用のエージェント信頼性向上MCPファミリーの一部です
(mcp-skill-sec · mcp-verify-claim · mcp-benchmark-hygiene ·
mcp-secret-scrub)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。