敏感数据脱敏服务器

一个基于Python的MCP服务器,使用Microsoft Presidio对文本中的敏感数据进行脱敏、分析和还原,支持生成可逆的索引占位符。

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

使用说明

MCP服务器重置

Python MCP服务器,用于编辑、分析和取消编辑文本中的敏感数据,使用 微软Presidio.生成可逆索引占位符,如 [EMAIL_ADDRESS_1], [PERSON_2].

先决条件

设置

# Clone the repository
git clone <repo-url>
cd mcp-server-redaction

# Create virtual environment and install dependencies
uv venv
uv sync

# Install the spaCy language model
uv pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-3.8.0/en_core_web_lg-3.8.0-py3-none-any.whl

运行服务器

与MCP检查员(开发)一起

uv run mcp dev run_dev.py

这将在浏览器中打开MCP检查器,您可以在其中交互式测试所有工具。这 run_dev.py 需要包装器,因为 mcp dev 直接加载文件(而不是作为包)。

作为stdio服务器

uv run mcp-server-redaction

克劳德桌面/克劳德代码集成

claude mcp add redaction -- uv --directory /absolute/path/to/mcp-server-redaction run mcp-server-redaction

这适用于Claude Desktop和Claude Code。替换 /absolute/path/to/mcp-server-redaction 与这个项目的实际路径。

工具

redact

从文本中编辑敏感数据,用索引占位符替换实体。

{"text": "Contact john@example.com", "entity_types": ["EMAIL_ADDRESS"]}

返回编辑后的文本,a session_id 用于以后的未编辑和发现的实体计数。

unredact

使用以前的会话ID将编辑后的文本还原为原始文本 redact 电话。

{"redacted_text": "Contact [EMAIL_ADDRESS_1]", "session_id": "uuid-from-redact"}

analyze

在不修改文本的情况下分析文本中的敏感数据。返回带有部分掩码的检测到的实体。

{"text": "Contact john@example.com"}

configure

在运行时添加自定义模式或列出活动实体类型。

{
  "custom_patterns": [
    {"name": "INTERNAL_ID", "pattern": "ID-\\d{6}", "score": 0.9}
  ]
}

redact_file

修改文件中的敏感数据。使用以下命令写入新文件 _redacted 后缀。

支持的格式: .txt, .csv, .log, .md, .pdf, .xlsx, .docx, .doc

{"file_path": "/path/to/document.pdf", "use_placeholders": true}
  • use_placeholders (默认值 true):使用 [ENTITY_TYPE_N] 占位符(可逆通过 unredact_file).
  • use_placeholders: false:对于PDF,应用黑框编辑(不可逆)。
  • .doc 文件转换为 .docx 通过LibreOffice。

unredact_file

使用来自的会话ID将以前编辑的文件还原为原始文件 redact_file.

{"file_path": "/path/to/document_redacted.pdf", "session_id": "uuid-from-redact_file"}

仅适用于用以下方式编辑的文件 use_placeholders: true.

支持的实体类型

内置(Presidio): 个人、电子邮件地址、电话号码、信用卡、US_SSN、网址、IP地址等。

秘密: API_KEY(OpenAI、GitHub、GitLab、Stripe)、AWS_ACCESS_KEY、CONNECTION_STRING(PostgreSQL、MySQL、MongoDB)。

财务: 伊班,美国之旅。

医疗: ICD10_代码、医疗记录编号、药物名称。

运行测试

# Install dev dependencies
uv sync --group dev

# Run all tests
uv run pytest tests/ -v