anonymize-mcp
The anonymize-mcp server provides production-grade NLP tools wrapping LINDAT/ÚFAL services, specializing in anonymization, named entity recognition, morphological analysis, readability checking, text correction, and translation — primarily for Czech and 35+ other languages.
Anonymization & Pseudonymization: An 8-step pipeline covering 80+ PII patterns (phone numbers, IDs/RČ, IČO, IBAN for 30+ countries, EU VAT, emails, URLs, crypto addresses, API tokens, and international IDs). Includes regex pre-pass, NLP-based NER pre-pass for companies/institutions, MasKIT engine, stop-list false-positive filtering, and optional
placeholder_modefor deterministic, auditable replacements (e.g., OSOBA1, MESTO1). A zero-egress local mode (ANONYMIZE_MCP_LOCAL=1) enables fully offline processing.Named Entity Recognition (NER): Identifies persons, organizations, locations, dates, and more in Czech (rich CNEC 2.0 tagset) and 34+ other languages (PER/ORG/LOC via multilingual UNER), with automatic language detection and optional XML/vertical output.
Morphological Analysis: Tokenization, lemmatization, POS tagging, and dependency parsing via UDPipe 2 across 961 models and 35+ languages, with auto language detection.
Readability Checking: Czech text analysis via PONK with four feature sets — overall metrics (ARI, lexical diversity, etc.), active grammatical rules, lexical surprise distribution, and speech act classification. Can also generate highlighted HTML.
Text Correction: Czech spell checking (standard or strict), diacritics addition (useful for OCR/mobile text), or diacritics removal via Korektor.
Translation: Translates between 8 languages (Czech, English, French, German, Polish, Russian, Ukrainian, Hindi) via Charles Translator — 17 direct pairs with automatic English-pivot for indirect pairs, and a document mode for CS↔EN to preserve structure.
Detects and anonymizes Bitcoin addresses (Legacy/P2SH/Bech32/Taproot) for crypto/Web3 use cases
Provides machine translation between 8 languages via Charles Translator API
Detects and anonymizes Ethereum addresses as part of crypto PII detection
Detects and anonymizes GitHub Personal Access Tokens (PAT) in text
Detects and anonymizes Google API keys in text
Detects and anonymizes Monero addresses as part of crypto PII detection
Detects and anonymizes OpenAI API tokens in text as part of PII detection
Detects and anonymizes ORCID identifiers in academic/research contexts
Detects and anonymizes Slack tokens in text
Detects and anonymizes Stripe API tokens in text
Detects and anonymizes XRP addresses as part of crypto PII detection
anonymize-mcp
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
ufal@ufal.mff.cuni.cz.
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í
Tool | Backend | K čemu |
| NER pro CZ (bohatý CNEC 2.0 tagset) + 34 dalších jazyků (UNER PER/ORG/LOC) s auto-detekcí | |
| MasKIT + NameTag | Production-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 |
| Tokenizace, lemmatizace, POS tagging, závislostní parse — auto-detect 35 jazyků | |
| Čitelnost CZ — 4 feature sety: metrics + rules + lexical surprise + speech acts | |
| CZ spell checker + auto-doplnění/odstranění diakritiky | |
| Př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
Related MCP server: Anonymix MCP
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):
Sektor | Use case | PII které MCP zvládne |
⚖️ Právo | Anonymizace spisu před AI review, GDPR compliance | Jména, RČ, adresy, č.j., sp.zn., IBAN, OP, datovky |
🏥 Medicína | Propouš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 / akademie | Peer review, citace v publikaci | ORCID, Researcher ID, e-maily kolegů, granty |
💳 Bankovnictví | Compliance, výpisy do AI, vykazování | Č.ú., karta, IBAN, VS/KS/SS, header výpisu |
🏠 Reality / katastr | Anonymizace výpisů z KN, smluv | LV, parcely, k.ú., vlastník + RČ + adresa |
🚗 Pojišťovny | Likvidace škod, AI analýza | VIN, SPZ, č. pojistky, TP, OP, RČ pojištěného |
📜 Notáři | Notářské zápisy pro AI summary | NZ, OP, datovka notáře, sp. zn. |
📚 Studijní oddělení | Potvrzení o studiu, statistika studentů | UČO, studijní č., ISIC, kontakty studenta |
🔬 Výzkum / NGO | Anonymizace korpusu pro etiku výzkumu | Vš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 case | PII které MCP zvládne |
🌍 US/UK/DE/FR/IT/ES/PL/RU/IN dokumenty | SSN, NIN, Steuer-ID, NIR, Codice Fiscale, DNI, PESEL, Aadhaar, PAN, cestovní pasy (8 jazyků) — auto bez |
💰 Crypto/Web3 outreach, smart contracts | Bitcoin (Legacy/P2SH/Bech32/Taproot), Ethereum, Monero, XRP, TRON |
🔐 DevOps logs / API key leak detection | OpenAI, Anthropic, OpenRouter, GitHub PAT, AWS, Google, Slack, Stripe tokeny |
🏢 Cross-border B2B | Foreign 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):
pip install anonymize-mcpNebo ze source:
git clone https://github.com/Buggy1111/anonymize-mcp.git
cd anonymize-mcp
pip 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 CZmcp__anonymize__translate_text— překlad mezi 8 jazyky
Claude Code (terminál)
claude mcp add anonymize -s user -- anonymize-mcpClaude 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):
{
"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.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:
[mcp_servers.anonymize]
command = "anonymize-mcp"Cursor (autorem netestováno)
Edituj .cursor/mcp.json v projektu (nebo globálně ~/.cursor/mcp.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.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, michalbugy12@gmail.com) — 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í:
Komponenta | Autoři | Licence software | Licence modelů |
NameTag 3 | Jana Straková, Milan Straka | MPL 2.0 | CC BY-NC-SA (NON-commercial) |
UDPipe | Milan Straka, Jana Straková | MPL 2.0 | CC BY-NC-SA (NON-commercial) |
MasKIT | Jiří Mírovský, Barbora Hladká | MPL 2.0 | (rule-based) |
PONK | Jiří 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ř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.
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óduV Claude Code stačí přidat env proměnnou k registraci:
claude mcp add anonymize -s user -e ANONYMIZE_MCP_LOCAL=1 -- anonymize-mcpJak 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 |
| Zapne zero-egress mód |
| Vlastní cesta k modelu (jinak auto-download do |
| Zakáže auto-download (model musíš dodat ručně) |
| Vě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— 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
python3 -m venv .venv
source .venv/bin/activate
pip 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).
# Bump version v pyproject.toml a src/anonymize_mcp/__init__.py
git commit -am "release: v0.X.0"
git tag v0.X.0
git push origin main --tagsMaintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Buggy1111/anonymize-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server