关于 strac-mcp-dlp
strac-mcp-dlp 是面向 AI Agent 开发者的开源 MCP 服务,可检测并脱敏文本和本地文件中的敏感数据。它将请求转发至 Strac DLP API,由该 API 执行检测和脱敏。
主要功能
- 01脱敏文本中的敏感数据
- 02检测敏感数据但不修改文本
- 03使用 OCR 和分类器扫描本地文件
- 04写入脱敏后的文件副本
- 05解析获授权的 Strac 保管库令牌
适用场景
- 01在文本进入提示词前移除敏感值
- 02发送文本前检查敏感数据
- 03扫描本地 PDF 或图像中的敏感数据
- 04保留原文件并生成脱敏副本
MCP 相关
MCP 服务提供五种用于文本和文件检测、脱敏及令牌解析的工具。它使用 API 密钥通过 HTTPS 连接 Strac DLP API;处理在 Strac 端执行,而非本地执行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx strac-mcp-dlpSTRAC_API_KEY密钥Strac API key. Request one at https://www.strac.io/mcp-integrations. Keys are prefixed sk_live_ (production) or sk_test_ (sandbox).STRAC_API_BASEOverride the Strac API base URL. Defaults to https://api.live.tokenidvault.com for sk_live_ keys and https://api.test.tokenidvault.com for sk_test_ keys.STRAC_API_TIMEOUTRequest timeout in seconds. Defaults to 60.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| text | string | 是 | |
| redact_field_mode | enum | 否 | REDACTED | BLANK | MASK_SEVEN_X | TOKEN_LINK_PLAINTEXT |
| include_matched_text | boolean | 否 |
详细介绍
Strac MCP DLP — 为 AI Agent 脱敏 PII/PHI/PCI 和机密信息(MCP)
一个开源的 Model Context Protocol 服务,让任何 AI Agent——Claude、Cursor、VS Code 或你自己的 Agent——都能在敏感数据到达模型之前找到并移除这些数据。
让你的 Agent 使用它,redact_text 就能将
Please onboard the user with SSN 123-45-6789 and email [email protected]
转换为
Please onboard the user with SSN [REDACTED] and email [REDACTED]
……并附上一份结构化的检测结果列表。它也能以相同方式处理图像、PDF 和扫描文档。
这是一个基于 Strac DLP API 的轻量客户端。请自备 API 密钥;所有检测和脱敏操作都在 Strac 服务端完成。
为什么需要它
如今,Agent 已连接到收件箱、工单系统、CRM、数据库和文件存储。每次调用 MCP 工具,都可能把 SSN、银行卡号、患者记录或 AWS 密钥带入提示词——随后进入模型提供商的日志、向量存储、Slack 摘要或支持工单。
等模型看过数据之后再过滤就太迟了。此服务会在模型前进行检查:先检测,再脱敏,然后让 Agent 基于不再包含敏感值的文本进行推理。
此服务是通往 Strac 的一扇门
脱敏你交给它的字符串,只是 Strac 最基础的功能。Strac 的核心价值在于覆盖范围:将 Strac 连接到敏感数据所在的 SaaS 和云应用,它就能持续发现、分类、脱敏并修复这些应用中的数据;这一切都遵循你的策略,并保留审计记录,而不是等有人把数据粘贴到提示词里。
Slack、Google Workspace、Microsoft 365、Salesforce、Zendesk、Box、Dropbox、Jira、Confluence、GitHub、Notion、OneDrive、SharePoint、Snowflake、Databricks、BigQuery、Postgres、MongoDB、AWS、Azure、GCP、浏览器和终端——60 多种集成,无需 Agent,也无需编写代码。
当这些系统通过 MCP 访问时,这一点尤为重要。当 Agent——Claude Code、Claude Desktop、Cursor、GitHub Copilot、OpenAI Codex——通过 MCP 连接器获取 Salesforce 记录或 Drive 文件时,Strac 会在 Agent 收到数据之前,直接对敏感数据进行脱敏。这就是“要求 Agent 脱敏”与“无论 Agent 是否主动要求,都强制执行脱敏”之间的区别。
strac.io/mcp-integrations 就是这款产品。本仓库是面向开发者的一小部分:你可以从任何 MCP 客户端使用同一检测引擎,按需自行净化字符串或文件。
记录并检查 Agent 发出的每一次 MCP 调用——调用的工具、读取的文件,以及提示词背后的身份。
60 秒快速入门
1. 安装
pip install strac-mcp-dlp
2. 申请 API 密钥
申请密钥,或发送邮件至 [email protected]。
生产环境密钥以 sk_live_ 为前缀,沙盒密钥以 sk_test_ 为前缀;服务会自动选择匹配的端点。
3. 将密钥添加到 MCP 客户端
Claude Desktop——macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上的 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"strac-dlp": {
"command": "strac-mcp-dlp",
"env": {
"STRAC_API_KEY": "sk_live_your_key_here"
}
}
}
}
Claude Code:
claude mcp add strac-dlp --env STRAC_API_KEY=sk_live_your_key_here -- strac-mcp-dlp
Cursor——项目中的 .cursor/mcp.json,或全局配置 ~/.cursor/mcp.json:使用与 Claude Desktop 相同的配置块。
4. 重启客户端,并让它脱敏一些内容
使用 Strac,在我把下面内容粘贴到工单之前先对其进行脱敏:“客户 Jane Doe,SSN 123-45-6789,银行卡号 4111 1111 1111 1111。”
如果已安装 uv,则无需安装任何东西:
{
"mcpServers": {
"strac-dlp": {
"command": "uvx",
"args": ["strac-mcp-dlp"],
"env": { "STRAC_API_KEY": "sk_live_your_key_here" }
}
}
}
请参阅 examples/ 中可直接复制使用的配置文件。
工具
-
redact_text
- 对文本块中的 PII、PHI、PCI 和机密信息进行脱敏,返回脱敏后的字符串以及检测结果
- 输入:
text(string):要脱敏的文本redact_field_mode(string,可选):REDACTED(默认)、BLANK、MASK_SEVEN_X或TOKEN_LINK_PLAINTEXTinclude_matched_text(boolean,可选):同时返回原始敏感值。默认关闭
- 在将不可信或用户提供的文本放入提示词、日志行、工单或任何下游系统之前调用
redact_text(text="SSN 123-45-6789")→"SSN [REDACTED]"
-
detect_sensitive_data
- 报告文本中包含哪些敏感数据类型,不更改文本
- 输入:
text(string):要扫描的文本include_matched_text(boolean,可选):同时返回原始值。默认关闭
- 用它来判断文本是否可以安全地发送到下游
detect_sensitive_data(text="call me at [email protected]")→EMAIL
-
detect_file
- 使用 Strac OCR 和分类器扫描本地文件,包括图像、PDF、扫描件、配置文件或源代码
- 输入:
path(string):要扫描的文件路径include_matched_text(boolean,可选):同时返回原始值。默认关闭
- 文件绝不会被修改
detect_file(path="./w2.pdf")→TAX_ID_NUMBER, NAME, ADDRESS
-
redact_file
- 将本地文件的脱敏副本写入磁盘
- 输入:
path(string):要脱敏的文件路径output_path(string,可选):写入副本的位置。默认在原文件旁添加.redacted后缀。拒绝将其指向源文件overwrite(boolean,可选):允许替换现有目标文件。默认关闭
- 原文件绝不会被修改
redact_file(path="./w2.pdf")→./w2.redacted.pdf
-
detokenize
- 为获得授权的调用方,将 Strac 保险库令牌(
tkn_…)还原为其原始值 - 输入:
token_ids(string[]):要还原的令牌标识符。每次调用最多 10 个
- 实时模式下需要使用 IP 允许列表中的服务器到服务器密钥
detokenize(token_ids=["tkn_abc"])→"111-22-3333"
- 为获得授权的调用方,将 Strac 保险库令牌(
脱敏样式
redact_text 接受 redact_field_mode:
| 模式 | 结果 |
|---|---|
REDACTED(默认) | [REDACTED] |
MASK_SEVEN_X | XXXXXXX |
BLANK | 完全移除 |
TOKEN_LINK_PLAINTEXT | <sensitive_data: https://…/detokenize/tkn_…> — 指向 Strac 保险库中该值的链接,以便获得授权的人员仍可检索该值 |
不会泄露信息的脱敏
默认情况下,这些工具返回的是检测到内容的类型和位置,而非具体值:
{
"redacted_text": "Please onboard the user with SSN [REDACTED]",
"detection_count": 1,
"data_element_types": ["TAX_ID_NUMBER"],
"detections": [{ "type": "TAX_ID_NUMBER", "begin_index": 33, "end_index": 44, "length": 11 }]
}
将匹配到的文本与脱敏后的文本一同返回,会把你刚移除的数据原样交给模型。只有在调用方确实需要原始值时,才传入 include_matched_text=true。
检测内容
Strac 内置 10 个类别、共 191 种数据元素,还支持通过正则表达式或自行训练的模型定义自定义元素:
| 类别 | 元素数量 | 示例 |
|---|---|---|
| 身份识别 | 126 | SSN/TIN、护照、驾照和约 60 个国家/地区的国民身份证件——Aadhaar、PAN、PESEL、BSN、Fiscal Code、IRD——以及 NPI 和 DEA 注册号码 |
| 密钥 | 30 | AWS 访问密钥和秘密密钥、GitHub 和 GitLab 令牌、Slack 令牌、GCP 凭据、Azure 存储密钥和服务主体密钥、私钥、JDBC 和 MongoDB 连接字符串、助记词 |
| 金融账户 | 10 | 卡号和卡号尾号、CVV、到期日、银行账户和路由号码、IBAN、SWIFT |
| 广告标识符 | 7 | Apple IDFA 和 IDFV、Google GAID、Roku、Amazon Fire OS、Huawei OAID |
| 联系方式 | 6 | 姓名、地址、电子邮件、电话、出生日期、年龄 |
| 设备跟踪 | 5 | IP 地址、MAC 地址、IMEI、网页 URL、日期/时间 |
| 资产 | 3 | 源代码、VIN、车辆牌照号码 |
| 文档属性 | 2 | 发票、受密码保护的文档 |
| 内容审核 | 1 | 冒犯性内容 |
| 知识产权 | 1 | 化学/分子结构 |
所有元素的逐项名称请参阅:Strac Catalog of Sensitive Data Elements。
检测可处理文本,也可通过 OCR 处理 PDF、JPEG、PNG、DOCX、XLSX、屏幕截图和 .msg 电子邮件文件;detect_file 和 redact_file 就是通过这种方式处理文件。
有一点需要提前说明:这些 MCP 工具返回的 type 值取决于响应的端点,而且两个端点对同一元素使用不同的词汇。例如,美国社会安全号码通过 redact_text 返回为 TAX_ID_NUMBER,通过 detect_sensitive_data 则返回为 SOCIAL_SECURITY_NUMBER,后者还会在 reported_element_types 中报告 SSN。两套词汇都会按原样返回,不会进行标准化,因此不会擅自编造任何信息。实际检测哪些元素取决于你的账户启用了哪些项目;上方的完整目录适用于你连接的各个应用,在这些应用中管理策略、修复措施和审计。
配置
| 变量 | 必需 | 默认值 |
|---|---|---|
STRAC_API_KEY | 是 | — |
STRAC_API_BASE | 否 | 对于 sk_live_ 密钥,为 https://api.live.tokenidvault.com;对于 sk_test_ 密钥,为 https://api.test.tokenidvault.com |
STRAC_API_TIMEOUT | 否 | 60 秒 |
未提供密钥时,每个工具都会返回:Set STRAC_API_KEY — request one at https://www.strac.io/mcp-integrations。
服务默认使用 stdio 通信。使用 strac-mcp-dlp --transport streamable-http 可改为通过 HTTP 提供服务。
工作原理
MCP 客户端会在本地启动此服务;服务使用你的 X-Api-Key,通过 HTTPS 将每次工具调用转发给 Strac API,并返回结果。你的机器不会进行分类或脱敏,本仓库也不包含检测模型。
你的数据元素定义、自定义策略、修复规则和审计记录都保存在 Strac 账户中,而非此代码库中——因此,提供这五种工具的同一个密钥也会管理所有已连接的应用。
MCP client ──stdio──▶ strac-mcp-dlp ──HTTPS──▶ Strac DLP API
(Claude, Cursor, (this repo, (classifiers, OCR,
your agent) ~600 lines) vault, policies, audit)
API 的限制:内联内容为 4 MB,文档上传为 10 MB,每次去令牌化调用最多处理 10 个令牌。
开发
git clone https://github.com/strac-io/strac-mcp-dlp
cd strac-mcp-dlp
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest
测试套件使用 respx 模拟 Strac API,因此无需密钥即可运行。若要手动试用此服务:
STRAC_API_KEY=sk_test_… .venv/bin/python -m strac_mcp_dlp
也可以通过 MCP Inspector 连接:
STRAC_API_KEY=sk_test_… npx @modelcontextprotocol/inspector strac-mcp-dlp
常见问题
我需要 Strac 账户吗?
需要。这是 Strac DLP API 的轻量客户端,每次调用都需要身份验证,不提供匿名模式。请通过 strac.io/mcp-integrations 申请密钥,或发送电子邮件至 [email protected]。
我的数据会留在本机吗?
不会。你传递给这些工具的文本和文件会通过 HTTPS 发送到 Strac API 进行分类。本地不会进行任何分类——此仓库不包含检测模型、分类器或保险库。detect_file 会以内联方式发送小于 4 MB 的文件,不会存储这些文件;较大的文件以及传递给 redact_file 的任何文件,都会上传到你的 Strac 文档保险库。
它支持哪些 MCP 客户端?
任何支持 stdio 的客户端都可以——Claude Desktop、Claude Code、Cursor、VS Code 等。如果你需要将其作为服务而非子进程运行,可以使用 --transport streamable-http。
它能检测机密信息,还是只能检测 PII?
两者都能。除了个人、健康和支付数据,Strac 还会分类 AWS 访问密钥和秘密密钥、GitHub 和 GitLab 令牌、Slack 令牌、GCP 凭据、Azure 存储密钥和服务主体密钥、私钥,以及 JDBC 和 MongoDB 连接字符串。请参阅完整目录。
为什么 redact_text 不会返回它发现的值?
因为把这些值返回就会抵消脱敏效果。如果工具在脱敏字符串的检测结果中返回 "123-45-6789",模型最终就会拿到你刚刚移除的数据。默认情况下,你会获得类型和位置;如果调用方确实需要原始值,请传入 include_matched_text=true。
redact_file 会修改我的原文件吗?
不会。它会写入副本,拒绝解析后指向源文件的 output_path(包括通过符号链接指向的路径),并且除非你传入 overwrite=true,否则不会替换现有文件。
如果 Strac API 返回意外内容,会发生什么?
工具会报错。对于无法验证的扫描结果,它绝不会报告为干净——如果响应格式错误或无法解析,工具会抛出错误,而不是返回“未发现敏感数据”,因为静默的漏报是 DLP 工具绝不能出现的故障。
这与 Strac 平台有何不同?
此仓库提供按需工具,由你的 Agent 决定是否调用。Strac 平台则覆盖你的 SaaS、云和数据库连接器,无论 Agent 是否请求,都会强制执行策略——在 Agent 收到数据之前先进行内联脱敏,并提供补救措施和审计记录。请参阅 strac.io/mcp-integrations。
链接
- Strac MCP 集成 — 完整的 MCP DLP 网关、连接器、策略和审计功能
- Strac 敏感数据元素目录 — 列出每种数据元素及其名称
- Strac API 参考
- MCP DLP:保护 Model Context Protocol 中的数据
- Strac 集成 — 完整的 SaaS 和云连接器列表
安全
切勿提交 API 密钥。sk_live_ 密钥是服务端凭据;请将其保存在 MCP 客户端的 env 块或密钥管理器中,而不是源代码管理系统中。如需报告漏洞,请发送邮件至 [email protected]。
许可证
MIT — 请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

