
Czech PII Anonymizer & NLP
io.github.Buggy1111Published by GitHub account Buggy1111v0.10.2Updated Oct 24, 2026
Anonymize PII & redact text (GDPR): Czech + 35-lang NER, morphology, translation, spellcheck
Overview
Lets an assistant anonymize and pseudonymize text, extract named entities, analyze morphology, check Czech readability, correct spelling, and translate across…
- What you can do
- Wraps LINDAT/ÚFAL NLP services in six tools: extract_entities for multilingual NER (Czech plus 34 languages with auto-detection), anonymize for pseudonymization using 80+ PII regex patterns and a stop-list with an optional deterministic placeholder mode, analyze_morphology for tokenization, lemmatization, POS tagging and dependency parsing, check_readability for Czech readability features, correct_text for Czech spelling and diacritics, and translate_text between eight languages. A zero-egress local mode runs anonymization and entity extraction fully offline.
- When to use it
- Useful when preparing legal, medical, academic, banking, insurance or research documents for AI review while removing personal data, or when working with Czech and other European-language text that needs entity extraction, morphology, correction or translation.
- Requirements
- Runs locally over stdio as a PyPI package (pip install anonymize-mcp), so Python is required. Cloud mode sends text to LINDAT and ÚFAL endpoints and needs network access. The optional zero-egress mode needs the local extra, a one-time model download (about 31 MB), and is enabled with ANONYMIZE_MCP_LOCAL=1; related variables include ANONYMIZE_MCP_NAMETAG_MODEL, ANONYMIZE_MCP_NO_DOWNLOAD and ANONYMIZE_MCP_LOCAL_ALLOW_CLOUD. No accounts or API keys are declared.
Installation
In SourceWeft
- Open Czech PII Anonymizer & NLP in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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íčekwrapper-mcp, přejděte napip install anonymize-mcp— je to tentýž projekt.
Co umí
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):
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
Instalace
Z PyPI (doporučeno):
Nebo ze source:
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 CZmcp__anonymize__translate_text— překlad mezi 8 jazyky
Claude Code (terminál)
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):
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.exemimo PATH (typickyC:\Python\Python3xx\Scripts\anonymize-mcp.exe). V configu pak použij plnou cestu.
OpenAI Codex CLI (autorem netestováno)
Edituj ~/.codex/config.toml:
Cursor (autorem netestováno)
Edituj .cursor/mcp.json v projektu (nebo globálně ~/.cursor/mcp.json):
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.mdv 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í:
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řesanonymize. - 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.
V Claude Code stačí přidat env proměnnou k registraci:
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):
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— NERPOST https://lindat.mff.cuni.cz/services/udpipe/api/process— morfologiePOST https://lindat.mff.cuni.cz/services/korektor/api/correct— spell checkPOST https://lindat.mff.cuni.cz/services/translation/api/v2/models/{src-tgt}— překladPOST https://quest.ms.mff.cuni.cz/maskit/api/process— anonymizacePOST https://quest.ms.mff.cuni.cz/ponk/api/process— čitelnost
Vývoj
Release proces
PyPI publish je automatický přes Trusted Publisher (OIDC).
Source: README.md at commit 15fb051
Tools
0Version history
1- v0.10.2LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.