Skip to main content
Glama

urssaf-vigilance-mcp

Serveur MCP pour vérifier les attestations de vigilance Urssaf que vous recevez de vos fournisseurs et sous-traitants, et tenir votre tableau de suivi.

En France, tout donneur d'ordre qui conclut un contrat d'au moins 5 000 € HT doit obtenir de son cocontractant une attestation de vigilance Urssaf à la signature, puis tous les six mois, et en vérifier l'authenticité (art. L.8222-1 et D.8222-5 du Code du travail, L.243-15 du Code de la sécurité sociale). À défaut, il peut être tenu solidairement des cotisations et pénalités du sous-traitant en cas de travail dissimulé.

La vérification se fait normalement à la main sur urssaf.fr, code par code, derrière un captcha. Ce connecteur s'appuie sur l'API officielle de l'Urssaf « Attestations Vérification Code Sécurité », qui rend le même service sans captcha et permet de vérifier jusqu'à 100 attestations en un appel. Il ajoute la lecture du PDF reçu, le rapprochement champ à champ, le calcul de la fin de validité et la mise à jour d'un classeur Excel.

Ce projet n'est pas affilié à l'Urssaf. L'API et ses conditions d'utilisation sont décrites sur le Portail API Urssaf.

Sommaire

  1. Ce que fait le connecteur

  2. Obtenir ses identifiants API Urssaf

  3. Installation

  4. Configuration

  5. Tableau de suivi Excel

  6. Règles métier

  7. Sécurité et engagements

  8. Développement

Related MCP server: eu-verify

Ce que fait le connecteur

Outil MCP

Rôle

verifier_attestation(code, domaine?)

Vérifie un code de sécurité (15 caractères) auprès de l'Urssaf. Renvoie un statut normalisé — valide, perimee (avec la date), inconnue, incomplete, erreur — et, pour une attestation valide : nature, dénomination, organisme émetteur, date de certification, SIREN, SIRET des établissements, dernière période analysée, effectif, masse salariale.

verifier_attestations(codes)

Même chose pour une liste de codes (lots de 100 par appel API).

lire_attestation_pdf(fichier)

Extrait les données d'un PDF d'attestation Urssaf (code, SIREN, raison sociale, dates, effectif, masse salariale, SIRET). Sans réseau.

controler_attestation(fichier, siret_attendu?, siren_attendu?)

Contrôle complet d'une attestation reçue : PDF + API + cohérence champ à champ + cocontractant attendu + fin de validité → verdict OK / ALERTE / REFUS.

suivi_lister(fichier?, seulement_a_verifier?)

Lit le tableau Excel de suivi : lignes, codes uniques, attestations dont l'échéance est dépassée.

suivi_verifier(fichier?, tous?, ecrire?)

Vérifie les codes du tableau (non encore vérifiés, ou tous) et, si demandé, écrit le résultat dans la colonne « Vérification ».

suivi_creer_modele(fichier)

Crée un classeur de suivi vierge au bon format.

etat_connecteur()

Configuration courante, sans secrets.

Natures d'attestation reconnues : vigilance (AVG_UR, AVG_RSI), mais aussi CSG/CRDS, formation professionnelle, employeur de personnel de maison, frontalier suisse, chiffre d'affaires micro-entrepreneur, artistes-auteurs — l'API couvre toutes les attestations à code de sécurité émises par l'Urssaf.

Obtenir ses identifiants API Urssaf

L'API est gratuite et ouverte à toute personne physique ou morale, sous réserve de validation par l'Urssaf (« accès public et libre, tout demandeur est éligible »). Comptez 1 à 2 jours ouvrés.

  1. Créer un compte sur le Portail API Urssaf : https://portailapi.urssaf.fr/fr/inscription (adresse e-mail professionnelle, SIRET de votre organisation).

  2. Souscrire à l'API « Attestations Vérification Code Sécurité » : https://portailapi.urssaf.fr/fr/catalogue-api/prd/avcs/souscription-formulaire. Le formulaire demande l'usage prévu (vérification des attestations de vigilance de vos fournisseurs en tant que donneur d'ordre) et l'acceptation des CGU de l'API.

  3. Recevoir les identifiants. L'équipe « Secteur API » de l'Urssaf Caisse nationale envoie un e-mail avec une archive protégée par mot de passe (le mot de passe arrive dans un second e-mail). Elle contient :

    • client-id et client-secret (UUID) ;

    • le scope : attn.codes_securite ;

    • l'URL d'obtention du jeton : https://api.urssaf.fr/api/oauth/v1/token ;

    • l'hôte des ressources : https://api.urssaf.fr. Un accès dit « sandbox » (api-edi.urssaf.fr) peut être fourni avant la production.

  4. Renseigner URSSAF_CLIENT_ID et URSSAF_CLIENT_SECRET dans la configuration du serveur (ci-dessous), avec URSSAF_ENV=production.

Support : questions techniques via le centre de services ACOSS (JIRA), autres questions via le formulaire du portail. Documentation technique de l'API (PDF ACOSS v1.2) et changelog : onglets « Documentation » et « Changelog » de la page de l'API.

Installation

Python 3.11 ou plus récent.

git clone https://github.com/aghulas/urssaf-vigilance-mcp.git
cd urssaf-vigilance-mcp
python3 -m venv .venv
.venv/bin/pip install -e .

Le paquet installe la commande urssaf-vigilance-mcp (serveur MCP sur stdio).

Sans identifiants, vous pouvez tester le connecteur en mode simulé : URSSAF_MOCK=1. Les codes MOCKVALIDE00001, MOCKPERIMEE0001, MOCKMANQUANT001 renvoient respectivement une attestation valide, périmée et incomplète ; tout autre code est inconnu.

Configuration

Toute la configuration passe par des variables d'environnement — aucun secret dans un fichier versionné.

Variable

Rôle

URSSAF_CLIENT_ID, URSSAF_CLIENT_SECRET

Identifiants OAuth2 reçus de l'Urssaf.

URSSAF_ENV

production (api.urssaf.fr) ou sandbox (api-edi.urssaf.fr, défaut).

URSSAF_MOCK

1 : réponses simulées, sans réseau ni identifiants.

URSSAF_DOMAINE

URSSAF (défaut : employeurs et toutes catégories) ou ISU (artisans, commerçants, indépendants).

URSSAF_FICHIER_SUIVI

Chemin du classeur Excel de suivi utilisé par défaut par suivi_*.

URSSAF_FEUILLE_SUIVI

Nom de la feuille ; sinon la première feuille contenant les en-têtes attendus est utilisée.

URSSAF_ECRITURE

1 pour autoriser suivi_verifier(ecrire=True) à modifier le classeur. Désactivé par défaut.

URSSAF_TIMEOUT

Délai HTTP en secondes (30).

Le jeton OAuth2 (client_credentials, validité 1 h) est mis en cache et renouvelé automatiquement deux minutes avant expiration, conformément aux recommandations du portail.

Claude Desktop

Dans claude_desktop_config.json (macOS : ~/Library/Application Support/Claude/, Windows : %APPDATA%\Claude\), ajoutez :

"urssaf-vigilance": {
  "command": "/chemin/vers/urssaf-vigilance-mcp/.venv/bin/urssaf-vigilance-mcp",
  "env": {
    "URSSAF_ENV": "production",
    "URSSAF_CLIENT_ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "URSSAF_CLIENT_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "URSSAF_FICHIER_SUIVI": "/chemin/vers/Suivi des attestations.xlsx",
    "URSSAF_ECRITURE": "1"
  }
}

Sous Windows, remplacez command par C:\\chemin\\vers\\.venv\\Scripts\\urssaf-vigilance-mcp.exe. Redémarrez Claude Desktop après modification.

Autres clients MCP

Tout client compatible MCP (Claude Code, Cursor, etc.) peut lancer urssaf-vigilance-mcp sur stdio avec les mêmes variables d'environnement. Exemple en ligne de commande :

URSSAF_MOCK=1 .venv/bin/urssaf-vigilance-mcp

Tableau de suivi Excel

Le connecteur lit et met à jour un classeur Excel ordinaire — le vôtre, ou celui que crée suivi_creer_modele. Il ne dépend pas des lettres de colonnes mais des en-têtes (recherche insensible à la casse et aux retours à la ligne), ce qui permet d'ajouter vos propres colonnes (assurances, PPSPS, contacts…). Colonnes reconnues :

En-tête (motif)

Usage

Opération

Libre (chantier, marché, service).

Lot

Libre ; une ligne sans Lot ou sans Entreprise est ignorée (notes de bas de tableau).

Entreprise

Obligatoire.

URSSAF … date

Date de l'attestation.

URSSAF … échéance

Fin de validité (mise à jour quand l'Urssaf signale une attestation périmée).

Statut

Libre.

Code de sécurité URSSAF

Obligatoire : le code à 15 caractères. Une entreprise présente sur plusieurs lots partage son code ; il n'est vérifié qu'une fois et le résultat est reporté sur chaque ligne.

Vérification URSSAF

Obligatoire : le connecteur y écrit « Authentique et valide - SIRET … (vérifié par API Urssaf le JJ/MM/AAAA) », ou la mention périmée / code inconnu, à la suite du texte existant (l'historique est conservé ; une mention « code à vérifier » est retirée).

Un code est considéré « à vérifier » tant que sa cellule Vérification ne mentionne pas un contrôle effectué.

L'écriture dans le classeur n'a lieu que si l'appel demande ecrire=True et que URSSAF_ECRITURE=1 ; faites une sauvegarde avant, et fermez le fichier dans Excel (en particulier sur un lecteur synchronisé).

Règles métier

  • Validité : une attestation de vigilance est valable six mois à compter de la fin de la période analysée (la date « à jour au » du document), pas de sa date d'édition. Le connecteur arrondit à la fin du mois : à jour au 31/08 → échéance 28/02 (29 en année bissextile). L'Urssaf applique la même règle dans ses réponses « attestation périmée depuis le … ». Une alerte est émise à 30 jours de l'échéance.

  • Un code valide ne suffit pas. Il prouve que le document existe chez l'Urssaf, pas que l'entreprise est votre cocontractant ni que l'établissement qui travaille pour vous est couvert. controler_attestation vérifie donc aussi : nature = attestation de vigilance ; SIREN et SIRET du PDF égaux à ceux renvoyés par l'Urssaf ; présence du siret_attendu (celui du devis ou du contrat) dans la liste des établissements.

  • Verdicts : code inconnu, attestation périmée, SIREN différent ou SIRET attendu absent → REFUS ; écarts d'effectif, de masse salariale ou de date de certification, échéance proche → ALERTE ; sinon OK.

  • Une attestation sur l'honneur, un quitus d'une plateforme privée ou une capture d'écran ne remplacent pas l'attestation Urssaf. En cas de code inconnu, demandez à l'entreprise le PDF original téléchargé depuis son espace urssaf.fr.

Sécurité et engagements

En souscrivant à l'API, vous acceptez les CGU de l'Urssaf, qui imposent notamment : n'utiliser l'API que pour vérifier des attestations (jamais pour obtenir des informations sur des comptes cotisants) ; ne divulguer ni les identifiants ni les données retournées ; signaler toute faille de sécurité à contact.api@urssaf.fr sous 48 heures ; respecter les quotas (HTTP 429 en cas de dépassement). Repli en cas d'indisponibilité : l'outil web https://www.urssaf.fr/accueil/outils-documentation/outils/verification-attestation.html.

Le connecteur ne stocke rien : pas de base de données, pas de journal des codes vérifiés ; les identifiants ne sont lus que dans l'environnement du processus.

Développement

.venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest -q        # tests sans réseau (respx)
python tests/fixtures/generer_fixture.py   # régénère le PDF d'exemple (données fictives)

Le dossier skills/ contient une skill Claude générique décrivant la procédure de vérification d'une attestation reçue et la revue périodique du tableau ; adaptez-la à votre organisation (dossiers d'archivage, interlocuteurs).

Les contributions sont bienvenues : ouvrez une issue ou une pull request.

Licence

MIT — voir LICENSE.

Available Tools

8 tools
controler_attestationA

Contrôle complet d'une attestation reçue : lecture du PDF, vérification du code auprès de l'Urssaf, cohérence champ à champ (SIREN, SIRET, période, effectif, masse salariale), cocontractant attendu (siret_attendu / siren_attendu) et fin de validité (6 mois après la période analysée, fin de mois).

Renvoie verdict OK | ALERTE (échéance < 30 j ou écarts mineurs) | REFUS (code inconnu, périmée, SIRET absent…).

Inputs: fichier (required), domaine, siren_attendu, siret_attendu.

etat_connecteurB

Configuration courante (sans secrets) : environnement, mode mock, fichier de suivi, écriture, version.

Inputs: no named parameters.

lire_attestation_pdfB

Extrait les données d'un PDF d'attestation de vigilance Urssaf (sans appel réseau).

Renvoie code de sécurité, SIREN, raison sociale, organisme émetteur, date de délivrance, date « à jour au » (fin de période analysée), effectif, masse salariale, SIRET des établissements.

Inputs: fichier (required).

suivi_creer_modeleA

Crée un classeur Excel de suivi vierge (colonnes Opération, Lot, Entreprise, SIRET attendu, dates, statut, contact, code de sécurité, vérification) à l'emplacement indiqué. Refuse d'écraser un fichier existant.

Inputs: fichier (required).

suivi_listerA

Lit le tableau Excel « Suivi des attestations par entreprise » : une entrée par ligne (opération, lot, entreprise, date d'attestation, échéance, statut, code de sécurité, texte de vérification) et la liste des codes uniques. seulement_a_verifier ne garde que les codes dont la vérification n'est pas tracée.

Inputs: fichier, seulement_a_verifier.

suivi_verifierA

Vérifie auprès de l'Urssaf les codes du tableau de suivi (par défaut seulement ceux non encore vérifiés ; tous=True pour re-contrôler l'ensemble, utile pour la revue mensuelle) et, si ecrire=True et URSSAF_ECRITURE=1, écrit le résultat dans la colonne « Vérification » de chaque ligne concernée (et l'échéance si périmée). Sans ecrire, aucune modification du fichier : simulation.

Inputs: tous, ecrire, fichier.

verifier_attestationA

Vérifie un code de sécurité (15 caractères) auprès de l'Urssaf.

Renvoie le statut normalisé : valide | perimee (avec perimee_depuis) | inconnue (fraude possible) | incomplete | erreur, et pour une attestation valide : nature, dénomination, organisme, date de certification, SIREN, SIRET des établissements, dernière période analysée, effectif, masse salariale. domaine : URSSAF (défaut, employeurs) ou ISU (artisans / commerçants / indépendants).

Inputs: code (required), domaine.

verifier_attestationsA

Vérifie plusieurs codes de sécurité (lots de 100 par appel API). Renvoie un résultat par code.

Inputs: codes (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 8 tools

    Disambiguation3/5

    verifier_attestation and verifier_attestations differ only by a trailing 's', which is a real misselection risk despite the batch description. controler_attestation also overlaps heavily with lire_attestation_pdf + verifier_attestation since it performs both internally, though its composite verdict purpose is described. The suivi_* group is reasonably distinct.

    Naming Consistency3/5

    The attestation tools use verb_noun (verifier_attestation, lire_attestation_pdf, controler_attestation) while the tracking tools invert to noun_verb (suivi_lister, suivi_verifier, suivi_creer_modele). Names remain readable and grouped by prefix, but the mixed verb/noun ordering and singular/plural pair deviate from a single convention.

    Tool Count5/5

    Eight tools is well within the ideal 3-15 range and each covers a distinct step (single check, batch check, PDF extraction, full control, listing, batch verification, template creation, connector status). No filler tools.

    Completeness4/5

    The surface covers the full attestation lifecycle: extraction, verification, cross-check verdicts, Excel tracking, batch re-verification, template creation, and connector config. Minor gaps like updating/removing individual tracking rows or exporting results are not surfaced but can be worked around.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      eu-verify lets AI agents verify any European business partner: company existence (official French SIREN registry), insolvency records (BODACC), EU VAT validation before invoicing (VIES), SIRET/IBAN/LEI checks, address and email verification, French business-day deadlines and EU public tenders. 10 paid MCP tools + a free catalog tool, plus 81 HTTP endpoints. Each call costs $0.001-$0.01 in USDC on
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables converting Indian GST tax invoices into government INV-01 JSON payloads via OCR and deterministic extraction, with tools to validate GSTINs and re-validate payloads, and reports exactly what it couldn't read.
      3
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables verification of Japanese companies through JP-Verify's API: checking qualified-invoice registration (T-numbers) and Corporate Numbers, resolving company names to candidate numbers, retrieving official or romanised English names and addresses, and fetching major-shareholder tables from EDINET filings. Supports single or batch lookups with API-key or key-less sandbox access, returning raw responses plus quota and provenance metadata.
      4
      21 PyPI
      MIT