mcpField
M
mcp-secret-scrub

mcp-secret-scrub

ローカル
github.com/sudo-ai-gitセキュリティ09 週間前に更新

mcp-secret-scrub について

mcp-secret-scrubは、テキストがエージェントに渡されたり、会話記録に保存されたりする前に、秘密情報を検出して除去する決定論的なMCPサーバーです。LLMやネットワークを使わず構造的に検出し、秘密の元の値は返しません。

主な機能

  1. 01プロバイダーキー、認証情報、接続文字列を検出
  2. 02検出した秘密情報を伏字、マスク、ハッシュ化
  3. 03テキストを変更せずにスキャン
  4. 04スキャン結果と伏字プレビューをまとめて返却
  5. 05対応する検出プロファイルを一覧表示

活用シーン

  1. 01ログをエージェントに渡す前に秘密情報を除去
  2. 02会話記録に認証情報が含まれるか確認
  3. 03テキストの保存やツールへの受け渡し前に伏字化

MCP 対応

stdioまたはStreamable HTTP経由で、秘密情報のスキャンと除去のツールをMCPクライアントに公開します。結果に秘密の元の値は含まれません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sudo-ai-git-mcp-secret-scrub": {
"command": "uvx",
"args": [
"mcp-secret-scrub"
]
}
}
}
起動コマンドuvx mcp-secret-scrub

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-secret-scrub1.0.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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-…
クラウド/GitHubAKIA…、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=
エンドポイント/DSNDiscordウェブフック、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)。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。