Skip to main content
Glama
cloakllm

CloakLLM MCP Server

by cloakllm

CloakLLM MCPサーバー

CloakLLMのPython SDKをClaude Desktopやその他のMCP互換クライアント向けのツールとしてラップするMCPサーバーです。

重要: MCPは最初のプロンプトを保護しません。 MCPツールはLLMによって呼び出されます。プロンプトはまずLLMプロバイダーに送信され、その後LLMがツールを呼び出すかどうかを決定します。つまり、生のプロンプト(PIIを含む)はCloakLLMがサニタイズする前にプロバイダーに到達します。このMCPサーバーは、会話の最中にLLMが処理するデータ(ドキュメント、ファイル、ツールの出力など)をサニタイズするのには役立ちますが、プロンプトがプロバイダーに到達することを防ぐことはできません

インフラストラクチャからプロンプトが出る前に保護するには、代わりにSDKミドルウェアを使用してください:

  • Python: enable_openai(client) または cloakllm.enable() (LiteLLM)

  • JavaScript: cloakllm.enable(client)

ツール

ツール

説明

sanitize

PIIを検出・秘匿化し、サニタイズされたテキスト + トークンマップID + entity_detailsを返します。不可逆的なPII削除(token_map_idは返されません)を行うには mode: "redact" を渡してください。

desanitize

トークンマップIDを使用して元の値を復元します

analyze

秘匿化せずにPIIを検出します(純粋な分析)

Related MCP server: Agent Guardrail MCP

インストール

cd cloakllm-mcp
pip install -e .

Claude Desktopの設定

claude_desktop_config.json に以下を追加します:

{
  "mcpServers": {
    "cloakllm": {
      "command": "python",
      "args": ["/path/to/cloakllm-mcp/server.py"],
      "env": {
        "CLOAKLLM_LOG_DIR": "./cloakllm_audit",
        "CLOAKLLM_LLM_DETECTION": "false"
      }
    }
  }
}

または uvx を使用する場合:

{
  "mcpServers": {
    "cloakllm": {
      "command": "uvx",
      "args": ["mcp", "run", "/path/to/cloakllm-mcp/server.py"]
    }
  }
}

使用例

LLMに送信する前にテキストをサニタイズする

ツール呼び出し: sanitize

{
  "text": "Email john@acme.com about the meeting with Sarah Johnson at 742 Evergreen Terrace",
  "model": "claude-sonnet-4-20250514",
  "token_map_id": "optional-id-for-multi-turn"
}

マルチターン: 前回の sanitize レスポンスから token_map_id を渡すことで、会話のターン間で同じトークンマップを再利用できます。同じPIIは常に同じトークンにマッピングされます。

レスポンス:

{
  "sanitized": "Email [EMAIL_0] about the meeting with [PERSON_0] at 742 Evergreen Terrace",
  "token_map_id": "a1b2c3d4-...",
  "entity_count": 2,
  "categories": {"EMAIL": 1, "PERSON": 1},
  "entity_details": [
    {"category": "EMAIL", "start": 6, "end": 19, "length": 13, "confidence": 0.95, "source": "regex", "token": "[EMAIL_0]"},
    {"category": "PERSON", "start": 42, "end": 56, "length": 14, "confidence": 0.85, "source": "spacy", "token": "[PERSON_0]"}
  ]
}

元の値を復元する

ツール呼び出し: desanitize

{
  "text": "I've drafted an email to [EMAIL_0] regarding [PERSON_0]'s request.",
  "token_map_id": "a1b2c3d4-..."
}

レスポンス:

{
  "restored": "I've drafted an email to john@acme.com regarding Sarah Johnson's request."
}

テキストのPIIを分析する(秘匿化なし)

ツール呼び出し: analyze

{
  "text": "Contact john@acme.com, SSN 123-45-6789"
}

レスポンス:

{
  "entity_count": 2,
  "entities": [
    {"text": "john@acme.com", "category": "EMAIL", "start": 8, "end": 21, "confidence": 0.95, "source": "regex"},
    {"text": "123-45-6789", "category": "SSN", "start": 27, "end": 38, "confidence": 0.95, "source": "regex"}
  ]
}

環境変数

変数

デフォルト

説明

CLOAKLLM_LOG_DIR

./cloakllm_audit

監査ログディレクトリ

CLOAKLLM_AUDIT_ENABLED

true

監査ログの有効/無効

CLOAKLLM_SPACY_MODEL

en_core_web_sm

NER用spaCyモデル

CLOAKLLM_LLM_DETECTION

false

LLMベースの検出を有効化

CLOAKLLM_LLM_MODEL

llama3.2

LLM検出用Ollamaモデル

CLOAKLLM_OLLAMA_URL

http://localhost:11434

Ollamaエンドポイント

テスト

# Test with MCP inspector
python -m mcp dev server.py

# Or run directly
python server.py

参照

  • CloakLLM Hub — プロジェクトの概要、アーキテクチャ、リンク

  • CloakLLM Python SDK — spaCy NER + OpenAI / LiteLLMミドルウェアを備えたPythonライブラリ

  • CloakLLM JS SDK — OpenAI + Vercel AIミドルウェアを備えたJavaScriptライブラリ

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP proxy that pseudo-anonymizes PII before data reaches external AI providers like Claude, ChatGPT, or Gemini.
    18
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Local pseudonymisation MCP server that detects PII in text, replaces it with opaque tokens before sending to cloud LLMs, and restores tokens afterward.
    2
    106 npm
    2
    MIT