Skip to main content

Document anonymization MCP server for legal use

Project description

NomosAI — Anonymiseur de documents juridiques

Détecte et masque les données personnelles dans des documents .docx, .pdf, .txt, .md et .rst, et produit un Markdown structuré avec métadonnées de conformité.
Moteur : Microsoft Presidio + spaCy · Langue par défaut : français.

Distribué comme serveur MCP — utilisable directement depuis Claude Desktop ou Claude Code, sans interface graphique.

Le serveur expose cinq outils : anonymize_file (anonymise un document), deanonymize_file (restaure les valeurs originales depuis l'index), list_entities (liste les types de PII disponibles), initiate_project (initialise un espace de travail juridique avec structure de dossiers, hook de sécurité et CLAUDE.md) et initialise_nomos_skills (installe dans ~/.claude/skills/ les skills Claude pour l'assistance juridique : extraction de faits, recherche jurisprudentielle, rédaction de mémoires).


Installation rapide

Étape 1 — Installer uv (une seule fois par machine) :

  • Windows : ouvre PowerShell et colle :
    powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  • Mac : ouvre Terminal et colle :
    curl -LsSf https://astral.sh/uv/install.sh | sh
    

Étape 2 — Installer NomosAI :

uv tool install nomos-ai

Cela installe NomosAI et toutes ses dépendances (modèle spaCy fr_core_news_lg inclus, ~600 Mo) en une seule commande — environ 1 à 3 minutes la première fois.

Étape 3 — Ajouter NomosAI à Claude :

Directement dans Claude Code via une commande bash:

# claude mcp add nomos-ai -- uv tool run nomos-ai
claude mcp add --scope user nomos-ai -- uv tool run nomos-ai

Ou manuellement selon ton client :

Client Fichier de config
Claude Code (CLI / VS Code) ~/.claude/settings.json
Claude Desktop — Windows %APPDATA%\Claude\claude_desktop_config.json
Claude Desktop — Mac ~/Library/Application Support/Claude/claude_desktop_config.json

Ajoute le bloc suivant dans la section mcpServers :

{
  "mcpServers": {
    "nomos-ai": {
      "command": "uv",
      "args": ["tool", "run", "nomos-ai"]
    }
  }
}

Redémarrer Claude.


Mettre à jour NomosAI

Pour mettre à jour vers la dernière version publiée sur PyPI :

uv tool upgrade nomos-ai

Puis redémarrez Claude Desktop pour que le nouveau serveur soit pris en compte.


Formats supportés

Entrée Librairie
.docx python-docx
.pdf pdfminer.six (fallback : pypdf)
.txt / .md / .rst natif

Entités détectées

Par défaut

Entité Label Description
PERSON [PERSONNE_N] Noms de personnes (NLP + titres Pr/Dr/M./Mme)
ORGANIZATION [ORGANISATION_N] Noms d'organisations
LOCATION [ADRESSE_N] Lieux, adresses
EMAIL_ADDRESS [EMAIL_N] Adresses e-mail
PHONE_NUMBER [TELEPHONE_N] Numéros français (+33, 0033, local)
URL [URL_N] URLs
IP_ADDRESS [IP_N] Adresses IP
CREDIT_CARD [CARTE_BANCAIRE_N] Numéros de carte bancaire
IBAN_CODE [IBAN_N] IBAN
NRP [ID_NATIONAL_N] Identifiants nationaux
MEDICAL_LICENSE [LICENCE_MEDICALE_N] Licences médicales
CRYPTO [CRYPTO_N] Adresses crypto

Reconnaisseurs français supplémentaires

Entité Label Exemples
FR_NIR [NIR_N] Numéro de sécurité sociale (15 chiffres)
FR_SIRET [SIRET_N] SIRET (14 chiffres)
FR_SIREN [SIREN_N] SIREN (9 chiffres)
FR_TVA [TVA_N] TVA intracommunautaire
FR_PASSPORT [PASSEPORT_N] Passeport français
FR_CNI [CNI_N] Carte nationale d'identité
FR_DRIVING_LICENSE [PERMIS_N] Permis de conduire
FR_POSTAL_CODE [CODE_POSTAL_N] Code postal (avec contexte)

Entités opt-in (à activer via --entities)

Entité Label Remarque
DATE_TIME [DATE_N] Dates — exclus par défaut (bruit dans les rapports)
FILE_PATH [CHEMIN_FICHIER_N] Chemins Windows/Unix — français uniquement, exclus par défaut

Architecture

anonymize.py              CLI principal (lecture, anonymisation, écriture)
deanonymize.py            CLI de restauration à partir de l'index
src/
  nomosai/
    readers.py            Lecture DOCX/PDF/TXT/MD/RST → liste de Block
    engine.py             Moteur Presidio + filtres faux positifs + dédup spans
    recognizers_fr.py     Reconnaisseurs regex français (NIR, SIRET, téléphone…)
    formatter.py          Rendu Markdown + frontmatter
    server.py             Serveur MCP (FastMCP, transport stdio)
pyproject.toml            Métadonnées du package et dépendances

Pipeline : Reader → Engine → Formatter → fichier .md + fichier -index.md


Qualité de détection

Seuils de confiance

Le seuil global par défaut est 0.55. Certains types ont un plancher plus élevé pour réduire les faux positifs :

Type Seuil minimum
LOCATION 0.80 (sur-détection dans les tableaux PDF)
FR_SIREN 0.70
FR_CNI 0.70
FR_POSTAL_CODE 0.70

Filtres anti-faux-positifs

L'engine rejette automatiquement les détections dont le texte :

  • est une lettre ou sigle de 1–3 caractères (F, NR, ET…)
  • est une valeur statistique (N=1 035, 75,6…)
  • est un numéro de section (II.4, I.1…)
  • est un fragment tout-en-majuscules multi-mots (en-tête de tableau)
  • contient des artefacts OCR (espaces intrus dans un mot)

Ajouter un reconnaisseur personnalisé

from presidio_analyzer import PatternRecognizer, Pattern

MY_RECOGNIZER = PatternRecognizer(
    supported_entity="MY_ENTITY",
    supported_language="fr",
    patterns=[Pattern("MY_PATTERN", r"\bREGEX\b", score=0.85)],
    context=["mot", "clé", "contextuel"],
)

Ajouter l'instance dans get_french_recognizers() de src/nomosai/recognizers_fr.py et son label dans FRENCH_ENTITY_LABELS.

Voir la doc Presidio.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nomos_ai-0.1.11.tar.gz (110.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nomos_ai-0.1.11-py3-none-any.whl (99.7 kB view details)

Uploaded Python 3

File details

Details for the file nomos_ai-0.1.11.tar.gz.

File metadata

  • Download URL: nomos_ai-0.1.11.tar.gz
  • Upload date:
  • Size: 110.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nomos_ai-0.1.11.tar.gz
Algorithm Hash digest
SHA256 fca004f3f3b3fe17f7a344c17810628abb849ff138168eb40e92ee5ea26a7b62
MD5 571b5f053d798e65fa955db17239a9f0
BLAKE2b-256 e3fdfc6d783bc2122d3110a00c22ba0f2b6fedb93a344bf77c13612b13c17a9c

See more details on using hashes here.

File details

Details for the file nomos_ai-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: nomos_ai-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 99.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nomos_ai-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 9a1c09fca9c568be0a9de858fda07c81a940c5baf64930fbf49ce2d6ac6869bb
MD5 c43af3d7d2cfc96037cfe3d811265f36
BLAKE2b-256 1f2a49e99335e30d4bc056184e336801466d9a6c21ac78fd8521c34a00e01bd1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page