🚀 MCP Conceal
MCP Conceal 是一个 MCP 代理,它可以在数据到达 Claude、ChatGPT 或 Gemini 等外部 AI 提供商之前,对个人身份信息(PII)进行伪匿名化处理。该工具通过伪匿名化而非简单的信息删除,保留了 AI 分析所需的语义和数据关系。例如,john.smith@acme.com
会被转换为 mike.wilson@techcorp.com
,在保护敏感信息的同时保持了数据结构。
🚀 快速开始
前提条件
安装用于基于大语言模型(LLM)的 PII 检测的 Ollama:
- 安装 Ollama:ollama.ai
- 拉取模型:
ollama pull llama3.2:3b
- 验证安装:
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
✨ 主要特性
- 伪匿名化处理:在保护敏感信息的同时,保留 AI 分析所需的语义和数据关系。
- 多种检测模式:支持基于正则表达式、大语言模型或两者结合的 PII 检测模式,可根据性能要求和数据复杂度进行选择。
- 一致映射:确保相同的真实 PII 始终映射到相同的虚假数据,便于数据的一致性和可追溯性。
- 可配置性:提供丰富的配置选项,包括检测阈值、数据生成区域、映射数据库路径等。
📦 安装指南
下载预构建二进制文件
-
访问 发布页面
-
下载适合你平台的二进制文件:
| 平台 | 二进制文件 |
|------|------|
| Linux x64 | mcp-server-conceal-linux-amd64
|
| macOS Intel | mcp-server-conceal-macos-amd64
|
| macOS Apple Silicon | mcp-server-conceal-macos-aarch64
|
| Windows x64 | mcp-server-conceal-windows-amd64.exe
|
-
赋予执行权限:chmod +x mcp-server-conceal-*
(Linux/macOS)
-
添加到系统路径:
- Linux/macOS:
mv mcp-server-conceal-* /usr/local/bin/mcp-server-conceal
- Windows:将文件移动到系统路径中的目录,或者将当前目录添加到系统路径。
从源代码构建
git clone https://github.com/gbrigandi/mcp-server-conceal
cd mcp-server-conceal
cargo build --release
二进制文件位置:target/release/mcp-server-conceal
💻 使用示例
基础用法
mcp-server-conceal \
--target-command python3 \
--target-args "my-mcp-server.py" \
--config mcp-server-conceal.toml
高级用法
Claude 桌面集成
配置 Claude 桌面以代理 MCP 服务器:
{
"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\\
使用方法:
- 运行一次 MCP Conceal 以在提示目录中自动生成
default.md
:mcp-server-conceal --target-command echo --target-args "test" --config mcp-server-conceal.toml
- 复制模板:
cp default.md healthcare.md
- 编辑模板以匹配特定领域的 PII 模式
- 配置使用自定义模板:
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
📚 详细文档
配置
完整的配置参考如下:
[detection]
mode = "regex_llm"
enabled = true
confidence_threshold = 0.8
[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"
seed = 12345
consistency = true
[mapping]
database_path = "mappings.db"
retention_days = 90
[llm]
model = "llama3.2:3b"
endpoint = "http://localhost:11434"
timeout_seconds = 180
prompt_template = "default"
[llm_cache]
enabled = true
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:快速的正则表达式捕获常见模式(电子邮件、电话、社保号码)
- 阶段 2:大语言模型分析剩余文本以检测复杂的 PII
- 适用场景:需要全面检测且性能合理的情况
- 性能:每个请求约 100 - 500 毫秒,具体取决于文本大小
- 配置:
mode = "regex_llm"
仅使用正则表达式
适用于高吞吐量、对延迟敏感的应用程序:
- 仅使用模式匹配 - 不进行 AI 分析
- 适用场景:你有明确的 PII 模式,并且需要小于 10 毫秒的响应时间
- 权衡:可能会遗漏一些上下文相关的 PII,如 "my account number is ABC123"
- 配置:
mode = "regex"
仅使用大语言模型
适用于复杂、非结构化数据:
- 基于 AI 的检测可以捕获细微的 PII 模式
- 适用场景:准确性比速度更重要的情况
- 性能:每个请求约 200 - 1000 毫秒
- 配置:
mode = "llm"
🔧 技术细节
MCP Conceal 的工作流程如下:
sequenceDiagram
participant C as AI 客户端 (Claude)
participant P as MCP Conceal
participant S as 你的 MCP 服务器
C->>P: 请求
P->>S: 请求
S->>P: 包含 PII 的响应
P->>P: PII 检测
P->>P: 伪匿名化
P->>P: 一致映射
P->>C: 清理后的响应
它通过伪匿名化而非简单的信息删除,保留了 AI 分析所需的语义和数据关系。例如,john.smith@acme.com
会被转换为 mike.wilson@techcorp.com
,在保护敏感信息的同时保持了数据结构。
📄 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。