Redacta Mcp

io.github.nickjlamb由 GitHub 账号 nickjlamb 发布v2.1.1更新于 Oct 24, 2026

Keep patient identifiers out of AI agent context — a local privacy boundary for healthcare agents.

已验证STDIO仅桌面文件与存储安全与监控

概览

AI 生成的概览

本地 MCP 服务器,在临床文本进入 AI 代理前将患者标识符伪名化,返回清洗后的文本和脱敏报告。

可以做什么
对临床和医疗文档进行脱敏,将姓名、NHS 号码、出生日期、邮编、电话和邮箱等患者标识符替换为带标签的令牌,同时保留临床含义;可选更严格的 HIPAA Safe Harbor 模式,覆盖所有日期、具体年龄及其他标识符,并有最终自检以发现遗漏。利用先前脱敏生成的令牌映射进行反向还原,把原始值恢复回来,从而在本地完成脱敏、外部处理、再还原的完整流程。在清洗文本之外生成脱敏报告供审阅。
适用场景
适用于医疗或临床工作流需要把文档交给 AI 助手处理、但可识别的患者数据不应进入代理上下文的场景,或需要在本地完成脱敏、处理、再还原往返流程时。
运行要求
通过 npm(npx redacta-mcp)作为本地进程在用户机器上运行;仅限桌面,无网页可执行版本。未声明认证、环境变量或请求头。内置的模式匹配仅使用 Python 标准库且不联网。
安装前请注意
README 说明它只是强有力的第一道防线而非保证:无法捕获所有标识符,也不能替代正式的数据保护流程,分享文本前应始终查看脱敏报告。用于再识别的令牌映射会还原真实患者信息,应保存在本地并加以保护。README 还提到付费的设计合作伙伴集成服务。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Redacta Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Redacta

[CI] [DOI] [engine] [npm downloads] [redacta-mcp] [PyPI] [App Store] [Anthropic MCP Directory] [Glama MCP server] [Listed on mcpservers.org] [self-hosted]

Pseudonymise medical and clinical documents before they're processed by AI or shared. Redacta replaces patient identifiers with labelled tokens — [PATIENT_NAME_1], [NHS_NUMBER_1], [DATE_OF_BIRTH_1], … — while leaving the clinical meaning intact, and returns a redaction report alongside the cleaned text.

It started as an Agent Skill and is now one engine shipped across eight surfaces — an iOS app, agent skill, MCP server, a self-hosted HTTP service with a Kubernetes deployment, two libraries, a CLI, and a FigJam whiteboard plugin.

Running this in production? Redacta offers a small number of fixed-price design-partner integrations for teams shipping AI agents on clinical or patient data — deployment in your environment, one real workflow integrated, and a data-flow document written for your DPO. Details →

One engine, many surfaces

[One detection engine feeds eight surfaces: the iOS app, Share Extension and widget run it on-device via JavaScriptCore; the MCP server, CLI, TypeScript library and FigJam plugin consume it directly; a Python package mirrors it; and the agent skill adds LLM reasoning.]

SurfaceFolderGet it
iOS app — iPhone (app, Share Extension, widget)ios-app/Build with Xcode — see ios-app/README.md
Agent skill (Claude Code / apps / API)SKILL.md, scripts/openclaw skills install redacta (ClawHub)
MCP server (Claude Desktop, Cursor, …)mcp-server/npx -y redacta-mcp (npm · MCP Registry · Anthropic MCP Directory)
TypeScript librarynpm-package/npm i @pharmatools/redacta (npm)
Python librarypython-package/pip install redacta (PyPI)
Command-line toolcli-package/npx redacta-cli (npm)
Self-hosted HTTP service + Kubernetesgateway-service/docker build — see gateway-service/README.md
FigJam pluginfigjam-plugin/Figma Community

The detection logic lives in one place — the TypeScript engine (@pharmatools/redacta, in npm-package/), which the MCP server and the FigJam plugin consume, and which the iOS app runs on-device via JavaScriptCore. The Python package mirrors it for pip users; the agent skill adds LLM reasoning for free-text names on top of the deterministic patterns.

How it works

[The Redacta privacy boundary: a clinical document is redacted inside your boundary — deterministic patterns plus reasoning plus a self-check — producing tokenised text and a token map. Only the tokenised text crosses to the AI tool; the token map never leaves. The processed output comes back and reinstate restores the original identifiers locally. Raw identifiers never cross the boundary.]

Two layers:

  • Patterns (deterministic). A bundled script (scripts/redact_structured.py, Python standard library only, no network) matches fixed-format identifiers: NHS numbers (Modulus-11 validated), UK National Insurance numbers, dates of birth, UK postcodes, phone numbers, emails, and hospital/MRN numbers. US SSN and ZIP codes are also handled.
  • Reasoning (judgement). The skill then has the agent handle what patterns can't: patient names (told apart from the clinicians treating them), relatives and carers, postal addresses, and identifying ages.
  • Self-check. A final pass re-reads the output for any identifier that slipped through before the report is written.

It also works in reverse. Re-identification (scripts/reinstate.py) takes the token map from an earlier redaction and restores the original values — so you can redact a document, run it through another AI tool, and put the real details back locally. Redact → process → re-identify is a complete round trip, and identifiers only ever exist on your machine.

Safe Harbor mode. Ask for HIPAA Safe Harbor (or "US de-identification") and Redacta applies a stricter pass: all dates (not just the date of birth), all specific ages, and the remaining HIPAA identifiers — fax, certificate/licence, device serial, VIN, and health-plan beneficiary numbers.

Self-hosting on Kubernetes

Organisations that can't let identifiable text leave their environment can run Redacta inside their own infrastructure: a small HTTP service (gateway-service/) deployable into an existing Kubernetes cluster with plain YAML — two stateless replicas behind a Service for redact/reinstate, an optional single-replica session boundary for the protect → release loop, health probes, resource limits, restrictive security defaults, and no-PHI logging. Text is pseudonymised before it reaches any external AI service, and the processing boundary stays under your control. Walkthrough (local kind cluster included): gateway-service/k8s/README.md · concepts: docs/KUBERNETES.md. Deploying somewhere a DPO will ask questions? There's a one-page security & data-protection summary at pharmatools.ai/redacta-security.

Install

Claude Code

bash
git clone https://github.com/nickjlamb/redacta ~/.claude/skills/redacta

Then invoke it with /redacta, or let it trigger automatically when you ask to redact or de-identify clinical text.

Claude apps / API

Zip the repository folder and upload it as a skill.

Contents

PathWhat it is
SKILL.mdThe skill — instructions plus metadata
reference.mdPattern specs, the Modulus-11 algorithm, NI prefix rules, the date-of-birth vs clinical-date rule, token vocabulary, limitations
scripts/redact_structured.pyThe deterministic pattern layer
scripts/reinstate.pyThe re-identification layer (restore originals from a token map)
scripts/test_redact_structured.pyTests for the pattern layer
scripts/test_reinstate.pyTests for the re-identification layer
evaluations.jsonExample evaluation scenarios

Run the tests:

bash
python3 scripts/test_redact_structured.pypython3 scripts/test_reinstate.py

A note on limits

Redacta is a strong first line of defence, not a guarantee. It won't catch every possible identifier and isn't a substitute for formal data-protection processes. Always review the redaction report before sharing text.

License

MIT-0 (MIT No Attribution). Built by PharmaTools.AI.

来源:README.md,提交 895ee84

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

2
  1. v2.1.1最新Oct 6, 2026
  2. v2.1.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分