mcpField
M
Mcp Proxy For Pii Pseudo Anonymization

Mcp Proxy For Pii Pseudo Anonymization

ローカル
github.com/gbrigandiセキュリティ1866 週間前に更新

Mcp Proxy For Pii Pseudo Anonymization について

MCP Concealは、MCPクライアントと対象サーバーの間で個人情報を検出し、外部AIプロバイダーへ届く前に仮名化するプロキシです。意味やデータ間の関係を保つよう、構造の近い偽データに置き換えます。

主な機能

  1. 01MCPリクエストとレスポンスの中継
  2. 02正規表現とLLMによる個人情報検出
  3. 03機微データを偽データに置換
  4. 04繰り返しデータの対応関係を維持
  5. 05検出プロンプトのカスタマイズ

活用シーン

  1. 01個人情報を含むデータの外部AI利用
  2. 02構造化・非構造化テキストのプライバシー処理
  3. 03繰り返すリクエストでの仮名の一貫性維持

MCP 対応

MCPクライアントと対象MCPサーバーを中継し、レスポンス内の個人情報を外部AIプロバイダーへ届く前に仮名化します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

MCP Conceal

Claude、ChatGPT、Gemini などの外部 AI プロバイダーにデータが届く前に、PII を仮名化する MCP プロキシです。

sequenceDiagram
    participant C as AI Client (Claude)
    participant P as MCP Conceal
    participant S as Your MCP Server
    
    C->>P: Request
    P->>S: Request
    S->>P: Response with PII
    P->>P: PII Detection
    P->>P: Pseudo-Anonymization
    P->>P: Consistent Mapping
    P->>C: Sanitized Response

MCP Conceal は、AI 分析に必要な意味やデータ間の関係を保つため、マスキングではなく仮名化を行います。例:[email protected] は [email protected] に置き換えられ、機密情報を保護しながら構造を維持します。

インストール

ビルド済みバイナリのダウンロード
  1. リリースページにアクセスします
  2. お使いのプラットフォーム用のバイナリをダウンロードします:
プラットフォームバイナリ
Linux x64mcp-server-conceal-linux-amd64
macOS Intelmcp-server-conceal-macos-amd64
macOS Apple Siliconmcp-server-conceal-macos-aarch64
Windows x64mcp-server-conceal-windows-amd64.exe
  1. 実行可能にします:chmod +x mcp-server-conceal-*(Linux/macOS)
  2. PATH に追加します:
    • Linux/macOS:mv mcp-server-conceal-* /usr/local/bin/mcp-server-conceal
    • Windows:PATH 内のディレクトリに移動するか、現在のディレクトリを PATH に追加します
ソースからビルド
git clone https://github.com/gbrigandi/mcp-server-conceal
cd mcp-server-conceal
cargo build --release

バイナリの場所:target/release/mcp-server-conceal

クイックスタート

前提条件

LLM ベースの PII 検出のために Ollama をインストールします:

  1. Ollama をインストールします:ollama.ai
  2. モデルを取得します:ollama pull llama3.2:3b
  3. 確認します:curl http://localhost:11434/api/version
基本的な使い方

最小構成の mcp-server-conceal.toml を作成します:

[detection]
mode = "regex_llm"

[llm]
model = "llama3.2:3b"
endpoint = "http://localhost:11434"

使用可能なすべてのオプションについては、設定セクションを参照してください。

プロキシとして実行します:

mcp-server-conceal \
  --target-command python3 \
  --target-args "my-mcp-server.py" \
  --config mcp-server-conceal.toml

設定

設定の完全なリファレンス:

[detection]
mode = "regex_llm"                # Detection strategy: regex, llm, regex_llm
enabled = true                    
confidence_threshold = 0.8        # Detection confidence threshold (0.0-1.0)

[detection.patterns]
email = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b"
phone = "\\b(?:\\+?1[-\\.\\s]?)?(?:\\(?[0-9]{3}\\)?[-\\.\\s]?)?[0-9]{3}[-\\.\\s]?[0-9]{4}\\b"
ssn = "\\b\\d{3}-\\d{2}-\\d{4}\\b"
credit_card = "\\b\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}\\b"
ip_address = "\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b"
url = "https?://[^\\s/$.?#].[^\\s]*"

[faker]
locale = "en_US"                  # Locale for generating realistic fake PII data
seed = 12345                      # Seed ensures consistent anonymization across restarts
consistency = true                # Same real PII always maps to same fake data

[mapping]
database_path = "mappings.db"     # SQLite database storing real-to-fake mappings
retention_days = 90               # Delete old mappings after N days

[llm]
model = "llama3.2:3b"             # Ollama model for PII detection
endpoint = "http://localhost:11434"
timeout_seconds = 180
prompt_template = "default"       # Template for PII detection prompts

[llm_cache]
enabled = true                    # Cache LLM detection results for performance
database_path = "llm_cache.db"
max_text_length = 2000
設定のガイドライン

検出設定:

  • confidence_threshold:値を低く(0.6)すると、より多くの PII を検出できますが、誤検出も増えます。値を高く(0.9)すると精度は上がりますが、一部の PII を見逃す可能性があります。
  • mode:レイテンシと精度の要件に応じて選択します(以下の検出モードを参照)

Faker 設定:

  • locale:「en_US」はアメリカの氏名や住所、「en_GB」はイギリスの氏名や住所などを使用します。生成される偽データのリアリティに影響します
  • seed:同じ実データが同じ偽データに対応するように、デプロイ間で一貫した値を使用します
  • consistency:データ間の関係を維持するため、常に true のままにしてください

マッピング設定:

  • retention_days:データの一貫性とストレージのバランスを取ります。期間を短く(30 日)するとストレージを削減できますが、繰り返し使われるデータの匿名化に一貫性がなくなる場合があります
  • database_path:データベースの場所に関する問題を避けるため、本番環境では絶対パスを使用します

検出モード

パフォーマンス要件とデータの複雑さに基づいて、検出方式を選択します:

RegexLlm(デフォルト)

本番環境に最適 — 速度と精度を両立します:

  • フェーズ 1:高速な正規表現で一般的なパターン(メールアドレス、電話番号、SSN)を検出します
  • フェーズ 2:LLM が残りのテキストを分析し、複雑な PII を検出します
  • 使用する場合:妥当なパフォーマンスを維持しつつ、包括的な検出が必要な場合
  • パフォーマンス:テキストサイズに応じて、リクエストごとに約 100~500 ミリ秒
  • 設定:mode = "regex_llm"
Regex のみ

大量処理やレイテンシに敏感なアプリケーションに最適:

  • パターンマッチングのみを使用します。AI 分析は行いません
  • 使用する場合:PII のパターンが明確に定義されており、10 ミリ秒未満の応答が必要な場合
  • トレードオフ:「口座番号は ABC123 です」のような文脈に依存する PII を見逃す可能性があります
  • 設定:mode = "regex"
LLM のみ

複雑で構造化されていないデータに最適:

  • AI を活用した検出により、微妙な PII のパターンも検出します
  • 使用する場合:速度よりも精度が重要な場合
  • パフォーマンス:リクエストごとに約 200~1000 ミリ秒
  • 設定:mode = "llm"

高度な使い方

Claude Desktop との統合

MCP サーバーをプロキシするように Claude Desktop を設定します:

{
  "mcpServers": {
    "database": {
      "command": "mcp-server-conceal",
      "args": [
        "--target-command", "python3",
        "--target-args", "database-server.py --host localhost",
        "--config", "/path/to/mcp-server-conceal.toml"
      ],
      "env": {
        "DATABASE_URL": "postgresql://localhost/mydb"
      }
    }
  }
}
カスタム LLM プロンプト

特定のドメイン向けに検出プロンプトをカスタマイズします。

テンプレートの場所:

  • Linux:~/.local/share/mcp-server-conceal/prompts/
  • macOS:~/Library/Application Support/com.mcp-server-conceal.mcp-server-conceal/prompts/
  • Windows:%LOCALAPPDATA%\\com.mcp-server-conceal\\mcp-server-conceal\\data\\prompts\\

使用方法:

  1. MCP Conceal を一度実行し、プロンプトディレクトリに default.md を自動生成します。
    mcp-server-conceal --target-command echo --target-args "test" --config mcp-server-conceal.toml
    
  2. コピーします:cp default.md healthcare.md
  3. ドメイン固有の PII パターンに合わせてテンプレートを編集します。
  4. 設定します:prompt_template = "healthcare"
環境変数

環境変数をターゲットプロセスに渡します。

mcp-server-conceal \
  --target-command node \
  --target-args "server.js" \
  --target-cwd "/path/to/server" \
  --target-env "DATABASE_URL=postgresql://localhost/mydb" \
  --target-env "API_KEY=secret123" \
  --config mcp-server-conceal.toml

トラブルシューティング

デバッグログを有効にします。

RUST_LOG=debug mcp-server-conceal \
  --target-command python3 \
  --target-args server.py \
  --config mcp-server-conceal.toml

よくある問題:

  • 設定内の正規表現パターンが無効
  • Ollama の接続問題
  • データベースファイルの権限
  • プロンプトテンプレートが見つからない

セキュリティ

マッピングデータベース: 実データと偽データの対応関係という機密情報が含まれています。適切なファイル権限を設定して保護してください。

LLM 統合: LLM ベースの検出モードを使用する場合は、信頼できるインフラストラクチャ上で Ollama を実行してください。

コントリビューション

コントリビューションを歓迎します!以下の手順に従って始めてください。

開発環境のセットアップ

前提条件:

  • Rust をインストールします:https://rustup.rs/
  • サポート対象の Rust の最小バージョン:1.70+
  1. クローンしてセットアップします:

    git clone https://github.com/gbrigandi/mcp-server-conceal
    cd mcp-server-conceal
    
  2. 開発モードでビルドします:

    cargo build
    cargo test
    
  3. 開発ツールをインストールします:

    rustup component add clippy rustfmt
    
  4. デバッグログを有効にして実行します:

    RUST_LOG=debug cargo run -- --target-command cat --target-args test.txt --config mcp-server-conceal.toml
    
テスト
  • ユニットテスト: cargo test
  • 統合テスト: cargo test --test integration_test
  • リンティング: cargo clippy
  • フォーマット: cargo fmt
変更の提出
  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します:git checkout -b feature-name
  3. 変更を加えてテストを追加します
  4. すべてのテストが通ることを確認します:cargo test
  5. コードをフォーマットします:cargo fmt
  6. 明確な説明を添えてプルリクエストを提出します

ライセンス

MIT License - 詳細は LICENSE file を参照してください。

コメント

MCP は初めてですか?

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

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