关于 redacta-mcp
Redacta 是面向医疗文本的去标识化工具,可在交给 AI 处理前用标记替换患者身份信息,并附上处理报告。其 MCP 服务与其他客户端共用引擎,也支持本地恢复原文。
主要功能
- 01识别并替换患者标识符
- 02输出去标识化报告
- 03支持原文身份信息恢复
- 04提供 HIPAA Safe Harbor 模式
- 05支持自托管 HTTP 服务
适用场景
- 01将临床文本交给 AI 前去标识化
- 02处理后在本地恢复患者信息
- 03在自有基础设施中处理敏感文本
MCP 相关
MCP 服务向兼容客户端提供医疗文本去标识化能力,并与 TypeScript 引擎共用检测逻辑。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
7收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| text | string | 是 | 要保护的文本。 |
| categories | array | 否 | 要应用的模式集。默认使用 clinical + general。'clinical' = NHS/NI/DOB/MRN/邮政编码/SSN/ZIP/电子邮件/电话/姓名;'general' = URL、IP、支付卡、IBAN、账号、车辆牌照;'safeharbor' = 最严格的 HIPAA Safe Harbor——包含 clinical + general,并且还会删除所有日期(不仅是 DOB)、年龄、传真、驾照、设备序列号、VIN 和健康计划编号。 |
详细介绍
Redacta
在医疗或临床文档交由 AI 处理或分享之前,对其进行假名化处理。Redacta 会将患者标识符替换为带标签的令牌——
[PATIENT_NAME_1]、[NHS_NUMBER_1]、[DATE_OF_BIRTH_1],……——同时保留临床含义,并在返回清理后的
文本时附上脱敏报告。
它最初是一个 Agent Skill,如今同一引擎已用于八种形式:iOS 应用、Agent Skill、MCP 服务、 可自托管的 HTTP 服务(带有 Kubernetes 部署方案)、两个库、一个命令行工具,以及一个 FigJam 白板插件。
计划在生产环境中运行? Redacta 为将 AI Agent 应用于临床或患者数据的团队提供少量固定价格的设计合作伙伴集成服务—— 在您的环境中部署、集成一个真实工作流,并为您的 DPO 编写一份数据流文档。 查看详情 →
一个引擎,覆盖多种使用场景
| 使用场景 | 文件夹 | 获取方式 |
|---|---|---|
| iOS 应用 — iPhone(应用、Share Extension、小组件) | ios-app/ | 使用 Xcode 构建 — 请参阅 ios-app/README.md |
| Agent 技能(Claude Code / 应用 / API) | SKILL.md、scripts/ | openclaw skills install redacta(ClawHub) |
| MCP 服务(Claude Desktop、Cursor、…) | mcp-server/ | npx -y redacta-mcp(npm · MCP Registry · Anthropic MCP Directory) |
| TypeScript 库 | npm-package/ | npm i @pharmatools/redacta(npm) |
| Python 库 | python-package/ | pip install redacta(PyPI) |
| 命令行工具 | cli-package/ | npx redacta-cli(npm) |
| 可自托管的 HTTP 服务 + Kubernetes | gateway-service/ | docker build — 请参阅 gateway-service/README.md |
| FigJam 插件 | figjam-plugin/ | Figma Community |
检测逻辑集中在一处 — TypeScript 引擎
(位于 npm-package/ 中的 @pharmatools/redacta),MCP 服务和
FigJam 插件会使用它,iOS 应用则通过 JavaScriptCore 在设备端运行它。
Python 包为 pip 用户实现了对应功能;Agent 技能则在确定性模式之外,
为自由文本中的姓名增加大模型推理能力。
工作原理
分为两层:
- 模式(确定性)。 一个捆绑脚本(
scripts/redact_structured.py, 仅使用 Python 标准库,不联网)会匹配固定格式的标识符: NHS 号码(通过 Modulus-11 校验)、英国国家保险号码、出生日期、 英国邮政编码、电话号码、电子邮件地址和医院/MRN 号码。也支持美国 SSN 和 ZIP 代码。 - 推理(判断)。 随后,技能会让 Agent 处理模式无法识别的内容: 患者姓名(并区分患者与为其治疗的临床人员)、亲属和护理人员、邮寄地址 以及可识别身份的年龄。
- 自检。 最后再检查一遍输出,查找可能遗漏的标识符,然后生成报告。
它也支持反向操作。重新识别(scripts/reinstate.py)会使用先前脱敏时的
令牌映射恢复原始值 — 因此,你可以对文档进行脱敏,将其交给其他 AI 工具处理,
然后在本地还原真实信息。脱敏 → 处理 → 重新识别构成完整的往返流程,
标识符始终只存在于你的设备上。
Safe Harbor 模式。 请求 HIPAA Safe Harbor(或“美国去标识化”), Redacta 就会执行更严格的处理:所有日期(不只是出生日期)、所有 具体年龄,以及其余 HIPAA 标识符 — 传真号码、证书/执照号码、 设备序列号、VIN 和健康计划受益人号码。
在 Kubernetes 上自托管
无法让可识别身份的文本离开自身环境的组织,可以在自己的基础设施中运行 Redacta:一个小型 HTTP 服务
(gateway-service/),可通过纯 YAML 部署到现有的
Kubernetes 集群中——两个无状态副本置于 Service 后面,用于脱敏/还原;可选的单副本会话边界,用于保护 → 释放流程;健康探针、资源限制、严格的安全默认设置,以及不记录 PHI 的日志。文本会先经过假名化,然后才发送到任何外部 AI 服务,处理边界始终由你掌控。操作指南(包含本地 kind 集群):
gateway-service/k8s/README.md ·
概念说明:docs/KUBERNETES.md。
要部署到 DPO 会提出问题的地方?这里有一页安全与数据保护摘要:
pharmatools.ai/redacta-security。
安装
Claude Code
git clone https://github.com/nickjlamb/redacta ~/.claude/skills/redacta
然后通过 /redacta 调用它,或者在你要求脱敏或去标识化临床文本时,让它自动触发。
Claude 应用 / API
将仓库文件夹压缩为 ZIP,然后作为技能上传。
内容
| 路径 | 内容 |
|---|---|
SKILL.md | 技能——说明和元数据 |
reference.md | 模式规范、Modulus-11 算法、NI 前缀规则、出生日期与临床日期规则、令牌词汇、限制 |
scripts/redact_structured.py | 确定性模式层 |
scripts/reinstate.py | 重新识别层(从令牌映射中还原原始内容) |
scripts/test_redact_structured.py | 模式层测试 |
scripts/test_reinstate.py | 重新识别层测试 |
evaluations.json | 示例评估场景 |
运行测试:
python3 scripts/test_redact_structured.py
python3 scripts/test_reinstate.py
关于限制的说明
Redacta 是一道有力的第一道防线,但并非万无一失。它无法捕获所有可能的标识符,也不能替代正式的数据保护流程。分享文本前,请务必查看脱敏报告。
许可证
MIT-0(MIT 无署名许可)。由 PharmaTools.AI 构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。