Czech PII Anonymizer & NLP

io.github.Buggy1111由 GitHub 帳號 Buggy1111 發布v0.10.2更新於 Oct 24, 2026

Anonymize PII & redact text (GDPR): Czech + 35-lang NER, morphology, translation, spellcheck

概覽

AI 產生的概覽

讓助理對文字進行匿名化與假名化、擷取命名實體、分析詞法、檢查捷克語可讀性、修正拼字,並在八種語言之間翻譯。

可以做什麼
把 LINDAT/ÚFAL 的 NLP 服務包裝成六個工具:extract_entities 提供多語言命名實體辨識(捷克語加 34 種語言,自動偵測);anonymize 以 80 多個 PII 正規表達式樣式與停用詞清單做假名化,並可選用確定性的佔位符模式;analyze_morphology 做斷詞、詞形還原、詞性標註與依存句法分析;check_readability 提供捷克語可讀性特徵;correct_text 做捷克語拼字與變音符號處理;translate_text 在八種語言之間翻譯。零外送本地模式可完全離線完成匿名化與實體擷取。
適用情境
適合在把法律、醫療、學術、銀行、保險或研究文件交給 AI 審閱前移除個人資料,也適合處理捷克語及其他歐洲語言文字、需要實體擷取、詞法分析、修正或翻譯的情境。
執行需求
以 PyPI 套件形式透過 stdio 在本機執行(pip install anonymize-mcp),需要 Python。雲端模式會把文字送到 LINDAT 與 ÚFAL 的端點,需要網路連線。可選的零外送模式需要安裝 local 附加元件並一次性下載模型(約 31 MB),以 ANONYMIZE_MCP_LOCAL=1 啟用;相關變數還有 ANONYMIZE_MCP_NAMETAG_MODEL、ANONYMIZE_MCP_NO_DOWNLOAD 與 ANONYMIZE_MCP_LOCAL_ALLOW_CLOUD。未宣告需要帳號或 API 金鑰。
安裝前請注意
雲端模式下文字會送到外部伺服器(quest.ms.mff.cuni.cz、lindat.mff.cuni.cz),敏感內容應先匿名化或改用零外送模式。零外送模式會拒絕僅限雲端的工具,除非設定 ANONYMIZE_MCP_LOCAL_ALLOW_CLOUD=1。底層 NameTag 與 UDPipe 模型為非商業授權(CC BY-NC-SA),LINDAT API 對學術與個人使用免費;商業部署需聯絡工具作者。這是非官方社群專案,與 ÚFAL 無隸屬關係,也未獲其認可。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Czech PII Anonymizer & NLP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

anonymize-mcp

[CI] [PyPI] [Python] [License: MIT]

MCP server obalující NLP nástroje LINDAT / ÚFAL MFF UK — multilingvální NER + morfologie (35 jazyků auto-detect), production-grade anonymizace s 80+ PII patterny napříč 9 sektory + mezinárodním pokrytím (US/UK/DE/FR/IT/ES/PL/RU/IN, EU VAT 28 zemí, IBAN 30+ zemí, crypto, API tokeny), překlad mezi 8 jazyky (17 přímých párů + auto EN-pivot), čitelnost a korektura.

🔒 Nově (v0.10.0): zero-egress lokální mód — plně offline anonymizace, žádný text neopustí stroj. Pro GDPR / právní / zdravotnická data. Zapnutí: ANONYMIZE_MCP_LOCAL=1.

🌐 Nechcete nic instalovat? Vyzkoušejte to online zdarma → anonymizace.js.org — anonymizace, NER, morfologie, korektor a překlad češtiny přímo v prohlížeči. Doprovodný web k tomuto MCP serveru.

Pouze pro nekomerční použití. Modely NameTag a UDPipe jsou pod CC BY-NC-SA. LINDAT API je bezplatné pro akademické a osobní použití. Pro komerční nasazení kontaktujte autory nástrojů a [email protected].

Neoficiální komunitní projekt — není provozován ani schválen ÚFAL MFF UK; wrapper kolem veřejných LINDAT API od nezávislého vývojáře. Historie názvů: ufal-mcp → wrapper-mcp (v0.8.0, na žádost ÚFAL) → anonymize-mcp (v0.9.0). Pokud máte nainstalovaný deprecated balíček wrapper-mcp, přejděte na pip install anonymize-mcp — je to tentýž projekt.

Co umí

ToolBackendK čemu
extract_entitiesNameTag 3NER pro CZ (bohatý CNEC 2.0 tagset) + 34 dalších jazyků (UNER PER/ORG/LOC) s auto-detekcí
anonymizeMasKIT + NameTagProduction-grade pseudonymizace: regex pre-pass přes 80+ PII patternů — CZ + international (IBAN 30+ zemí, EU VAT 28, US SSN/EIN, DE/UK/FR/IT/ES/PL/RU/IN ID, crypto, API tokeny). Opt-in placeholder_mode (deterministické OSOBA1/MESTO1). 🔒 Zero-egress lokální mód (ANONYMIZE_MCP_LOCAL=1) — plně offline, viz níže.
analyze_morphologyUDPipeTokenizace, lemmatizace, POS tagging, závislostní parse — auto-detect 35 jazyků
check_readabilityPONKČitelnost CZ — 4 feature sety: metrics + rules + lexical surprise + speech acts
correct_textKorektorCZ spell checker + auto-doplnění/odstranění diakritiky
translate_textCharles TranslatorPřeklad mezi 8 jazyky (CZ/EN/FR/DE/PL/RU/UK/HI), 17 přímých párů + auto EN-pivot

Podporované jazyky — NER + morfologie (35 jazyků, auto-detect)

  • 🇨🇿 CZ · 🇸🇰 SK · 🇬🇧 EN · 🇩🇪 DE · 🇫🇷 FR · 🇮🇹 IT · 🇪🇸 ES · 🇵🇹 PT · 🇳🇱 NL
  • 🇵🇱 PL · 🇭🇺 HU · 🇷🇴 RO · 🇸🇮 SL · 🇧🇬 BG · 🇬🇷 EL · 🇭🇷 HR · 🇷🇸 SR · 🇺🇦 UK · 🇷🇺 RU
  • 🇫🇮 FI · 🇱🇹 LT · 🇱🇻 LV · 🇪🇪 ET · 🇩🇰 DA · 🇸🇪 SV · 🇳🇴 NO (Bokmål + Nynorsk)
  • 🇨🇳 ZH · 🇦🇪 AR · 🇹🇷 TR · 🇻🇳 VI · 🇮🇳 HI · 🇮🇱 HE · 🇯🇵 JA · 🇰🇷 KO · 🇹🇭 TH

Pro koho je tohle (sektory + use cases)

Stress-tested napříč 9 sektory na 12.7KB cross-sektorovém spisu — výsledek 94/94 unique PII chyceno v jednom volání. Plus international corpus 17/17 (US/UK/DE/FR/IT/ES/PL/RU/IN + crypto + akademické + fleet):

SektorUse casePII které MCP zvládne
⚖️ PrávoAnonymizace spisu před AI review, GDPR complianceJména, RČ, adresy, č.j., sp.zn., IBAN, OP, datovky
🏥 MedicínaPropouštěcí zprávy pro výzkum, statistika hospitalizacíRČ, IČZ, č. pojištěnce, kontakty lékaře — klinické kódy MKN-10 zachované
🎓 Věda / akademiePeer review, citace v publikaciORCID, Researcher ID, e-maily kolegů, granty
💳 BankovnictvíCompliance, výpisy do AI, vykazováníČ.ú., karta, IBAN, VS/KS/SS, header výpisu
🏠 Reality / katastrAnonymizace výpisů z KN, smluvLV, parcely, k.ú., vlastník + RČ + adresa
🚗 PojišťovnyLikvidace škod, AI analýzaVIN, SPZ, č. pojistky, TP, OP, RČ pojištěného
📜 NotářiNotářské zápisy pro AI summaryNZ, OP, datovka notáře, sp. zn.
📚 Studijní odděleníPotvrzení o studiu, statistika studentůUČO, studijní č., ISIC, kontakty studenta
🔬 Výzkum / NGOAnonymizace korpusu pro etiku výzkumuVše výše + zachování klinických/právních kódů

Plus 35 jazyků v multilingvální stack (legal docs SK/EN/DE/PL/UK/RU/FR/HI/ES/IT/AR + 24 dalších otestovány na NER+morfologii, auto EN-pivot pro překlad mimo přímé Charles páry). CJK jména (čínská/japonská) maskována od v0.8.4.

Sektor #10 — International

Use casePII které MCP zvládne
🌍 US/UK/DE/FR/IT/ES/PL/RU/IN dokumentySSN, NIN, Steuer-ID, NIR, Codice Fiscale, DNI, PESEL, Aadhaar, PAN, cestovní pasy (8 jazyků) — auto bez lang= parametru
💰 Crypto/Web3 outreach, smart contractsBitcoin (Legacy/P2SH/Bech32/Taproot), Ethereum, Monero, XRP, TRON
🔐 DevOps logs / API key leak detectionOpenAI, Anthropic, OpenRouter, GitHub PAT, AWS, Google, Slack, Stripe tokeny
🏢 Cross-border B2BForeign companies (SARL/SAS/GmbH/AG/Ltd/LLC/Inc/SpA/SL/Sp. z o.o.) + EU VAT (28 zemí) + IBAN (30+ zemí)

Instalace

Z PyPI (doporučeno):

bash
pip install anonymize-mcp

Nebo ze source:

bash
git clone https://github.com/Buggy1111/anonymize-mcp.gitcd anonymize-mcppip install -e .

Registrace v MCP klientovi

anonymize-mcp je standardní MCP server (stdio transport). Po registraci a restartu klienta máš k dispozici 6 nástrojů:

  • mcp__anonymize__extract_entities — multilingvální NER (35 jazyků auto-detect)
  • mcp__anonymize__anonymize — production-grade pseudonymizace CZ (regex pre-pass + stop-list + placeholder mode)
  • mcp__anonymize__analyze_morphology — morfologie 35 jazyků auto-detect (UDPipe 961 modelů)
  • mcp__anonymize__check_readability — čitelnost CZ (4 feature sety)
  • mcp__anonymize__correct_text — spell check + diakritika CZ
  • mcp__anonymize__translate_text — překlad mezi 8 jazyky

Claude Code (terminál)

bash
claude mcp add anonymize -s user -- anonymize-mcp

Claude Desktop

Starší Claude Desktop (Mac .app z anthropic.com, Windows .exe installer):

Edituj ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) nebo %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "anonymize": {      "command": "anonymize-mcp"    }  }}

Nová Claude Desktop (Microsoft Store / appx package, "Cowork" UI): k 05/2026 podporuje pouze remote MCP servery přes HTTP URL. Lokální stdio MCP servery jako anonymize-mcp zde přidat nelze.

Na Windows může být anonymize-mcp.exe mimo PATH (typicky C:\Python\Python3xx\Scripts\anonymize-mcp.exe). V configu pak použij plnou cestu.

OpenAI Codex CLI (autorem netestováno)

Edituj ~/.codex/config.toml:

toml
[mcp_servers.anonymize]command = "anonymize-mcp"

Cursor (autorem netestováno)

Edituj .cursor/mcp.json v projektu (nebo globálně ~/.cursor/mcp.json):

json
{  "mcpServers": {    "anonymize": {      "command": "anonymize-mcp"    }  }}

Windsurf, Cline, Zed, VS Code Copilot Agent (autorem netestováno)

Stejný mcpServers JSON formát — viz dokumentace daného klienta. command: "anonymize-mcp" (případně absolutní cesta).

Použití

V Claude Code stačí napsat například:

Anonymizuj text z dokument.md v placeholder_mode a vrať mi čistou verzi.

Vytáhni z dokumentu všechny osoby, soudy a č.j.

Klient přinesl ukrajinský dokument — přelož mi ho do češtiny, najdi entity a zanalyzuj morfologii.

Projeď moje podání přes PONK — vrať aktivovaná gramatická pravidla.

Klient mi posílá text bez diakritiky z mobilu — doplň diakritiku přes Korektor.

Autor

anonymize-mcp napsal Michal Bürgermeister (@Buggy1111, [email protected]) — nezávislý vývojář z ČR.

Wrapper kolem skvělých nástrojů ÚFAL MFF UK — bez NameTag, MasKIT, UDPipe, PONK, Korektor a Charles Translator by tenhle MCP server neexistoval. Díky celému ÚFAL týmu (Jana Straková, Milan Straka, Jiří Mírovský, Barbora Hladká, Silvie Cinková a další) za roky práce na production-grade NLP nástrojích pro češtinu.

Issues, PR a feedback jsou vítané na github.com/Buggy1111/anonymize-mcp.

Licence

Tento nástroj má MIT licenci (viz LICENSE).

Pod ním jsou čtyři samostatné nástroje, každý s vlastní licencí:

KomponentaAutořiLicence softwareLicence modelů
NameTag 3Jana Straková, Milan StrakaMPL 2.0CC BY-NC-SA (NON-commercial)
UDPipeMilan Straka, Jana StrakováMPL 2.0CC BY-NC-SA (NON-commercial)
MasKITJiří Mírovský, Barbora HladkáMPL 2.0(rule-based)
PONKJiří Mírovský, Silvie Cinková, Barbora Hladká + autoři podaplikací: Ivan Kraus, Arnold Stanovský, Jan Černý, Ivana Kvapilíková, Tomáš Polák, Silvie CinkováMPL 2.0(rule-based + UDPipe → CC BY-NC-SA)

Důležité: tento nástroj nevolá lokální instalaci, ale veřejné API služby (lindat.mff.cuni.cz, quest.ms.mff.cuni.cz). Bezplatné pro akademické a osobní použití. Hromadný / placený / produkční traffic vyžaduje explicitní souhlas autorů a provozovatele API.

Bezpečnost

  • V cloudovém módu posíláš text na externí server (quest.ms.mff.cuni.cz, lindat.mff.cuni.cz). Před odesláním citlivých dat nejdřív projeď text přes anonymize.
  • Pro plně privátní zpracování použij zero-egress lokální mód (níže) — žádný text neopustí tvůj stroj.

Zero-egress / on-prem mód 🔒

Anonymizace kompletně lokálně — žádné volání externího API, žádný text neopustí stroj. Pro GDPR / právní / zdravotnická data, kde citlivý obsah nesmí ven.

bash
pip install "anonymize-mcp[local]"          # přidá ufal.nametag (lokální NER)python -m anonymize_mcp.local_backend        # jednorázově stáhne model (~31 MB)ANONYMIZE_MCP_LOCAL=1 anonymize-mcp          # spusť server v lokálním módu

V Claude Code stačí přidat env proměnnou k registraci:

bash
claude mcp add anonymize -s user -e ANONYMIZE_MCP_LOCAL=1 -- anonymize-mcp

Jak to funguje: anonymize přeskočí MasKIT API a anonymizuje přes lokální regex pre-pass (80+ vzorů) + NameTag NER běžící v procesu (ufal.nametag + CNEC 2.0 model). Jména, města, instituce, telefony, IČO, RČ, č.j. atd. se nahradí placeholdery (OSOBA1, MESTO1, TELEFON1…) bez jediného síťového volání.

Konfigurace (env):

ProměnnáVýznam
ANONYMIZE_MCP_LOCAL=1Zapne zero-egress mód
ANONYMIZE_MCP_NAMETAG_MODEL=/cesta/model.nerVlastní cesta k modelu (jinak auto-download do ~/.cache/anonymize-mcp/models/)
ANONYMIZE_MCP_NO_DOWNLOAD=1Zakáže auto-download (model musíš dodat ručně)
ANONYMIZE_MCP_LOCAL_ALLOW_CLOUD=1Vědomě povolí cloudové tooly i v lokálním módu (jinak odmítnuté, viz níže)

Co je v lokálním módu lokální (v0.10.1): anonymize i extract_entities běží plně offline (lokální CNEC 2.0 NER; multilingvální model vyžaduje API, tool na to upozorní warningem). Ostatní tooly (translate_text, correct_text, check_readability, analyze_morphology) by text poslaly na ÚFAL API — proto jsou v zero-egress módu odmítnuté s vysvětlující chybou; vědomě je povolíš přes ANONYMIZE_MCP_LOCAL_ALLOW_CLOUD=1.

Hardened setup (air-gapped/auditované stroje): model si předstáhni předem (python -m anonymize_mcp.local_backend — ověřuje se SHA-256) a server nasaď s ANONYMIZE_MCP_NO_DOWNLOAD=1 — pak proces nikdy neotevře žádné síťové spojení.

Tradeoff: lokální NameTag 1 (CNEC 2.0, CC BY-NC-SA, non-commercial) je o něco jednodušší než cloudový NameTag 3 a vynechává MasKIT rule-engine — výměnou za nulový egress.

Použité API (6 LINDAT REST endpointů)

  • POST https://lindat.mff.cuni.cz/services/nametag/api/recognize — NER
  • POST https://lindat.mff.cuni.cz/services/udpipe/api/process — morfologie
  • POST https://lindat.mff.cuni.cz/services/korektor/api/correct — spell check
  • POST https://lindat.mff.cuni.cz/services/translation/api/v2/models/{src-tgt} — překlad
  • POST https://quest.ms.mff.cuni.cz/maskit/api/process — anonymizace
  • POST https://quest.ms.mff.cuni.cz/ponk/api/process — čitelnost

Vývoj

bash
python3 -m venv .venvsource .venv/bin/activatepip install -e .
# Testy (272 offline testů; síťové: pytest -m network)pip install -e ".[test]"pytest -m "not network"

Release proces

PyPI publish je automatický přes Trusted Publisher (OIDC).

bash
# Bump version v pyproject.toml a src/anonymize_mcp/__init__.pygit commit -am "release: v0.X.0"git tag v0.X.0git push origin main --tags

來源:README.md,提交 15fb051

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.10.2最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。