PII脱敏服务

CloakLLM MCP Server是一个PII脱敏服务,通过提供sanitize、desanitize和analyze工具,用于在LLM处理过程中检测和脱敏个人身份信息(PII)。

  • by cloakllm
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 cloakllm/cloakllm-mcp

使用说明

CloakLLM MCP服务器

MCP服务器,将CloakLLM的Python SDK打包为Claude Desktop和其他MCP兼容客户端的工具。

重要提示:MCP不会保护您的初始提示。 MCP工具被称为 LLM --提示首先发送给LLM提供者,然后LLM决定调用工具。这意味着原始提示(包括任何PII)在CloakLLM可以对其进行清理之前到达提供者。MCP服务器对于清理LLM处理的数据非常有用 在...期间 对话(文档、文件、工具输出),但 不能 阻止您的提示到达提供商。

为了在提示离开您的基础架构之前对其进行保护,请使用 SDK中间件 相反:

  • python enable_openai(client) 或 cloakllm.enable() (升)
  • JavaScript: cloakllm.enable(client)

工具

工具 说明
sanitize 检测并隐藏PII,返回经过净化的文本+令牌映射ID+实体详细信息。通过 mode: "redact" 用于不可逆的PII删除(不返回token_map_id)。
desanitize 使用令牌映射ID还原原始值
analyze 在不隐藏的情况下检测PII(纯分析)

安装

cd cloakllm-mcp
pip install -e .

Claude桌面配置

添加到您的 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"
}

多圈: 通过 token_map_id 从以前 sanitize 在对话中重复使用相同令牌映射的响应。相同的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 奥拉马终点

测试

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

# Or run directly
python server.py

另见

许可证

麻省理工学院