Serveur MCP (claude.ai / Claude Desktop / Code / Cursor) - Documentation Entity Enricher

Serveur MCP (Claude Desktop / Code / Cursor)

Entity Enricher embarque un serveur Model Context Protocol intégré à l'adresse /api/mcp — listez vos schémas, enrichissez une entité, inspectez le résultat et résolvez un avertissement de classification, le tout depuis une seule conversation Claude. Aucun éditeur de workflow requis.

Pourquoi MCP, alors qu'il y a déjà n8n + Make ?

Forme différente, cas d'usage différent. Les connecteurs n8n et Make encapsulent l'API pour l'automatisation de workflows : déclencheurs, exécutions planifiées, pipelines multi-étapes, état persistant. MCP l'encapsule pour le chat interactif : questions ponctuelles, enrichissements exploratoires, clarifications de suivi. Les workflows suivent une logique de traitement par lot, les chats une logique conversationnelle — la surface diffère, tout comme l'expérience utilisateur.

La fonctionnalité phare que seul MCP débloque : la reprise interactive de classification. Lorsque le classificateur de pré-vérification rejette votre entité (par ex. vous avez demandé d'enrichir « Titan » avec un schéma Planète, mais Titan est une lune), n8n/Make doivent annuler automatiquement car ils ne sont pas interactifs. MCP fait remonter l'avertissement à Claude, Claude vous demande confirmation, et si vous répondez « oui », l'outil se relance sans le classificateur. Pas d'échec en cours de pipeline, pas de reprise depuis zéro.

Démarrage rapide

Option 1 — OAuth (recommandé)

Pour claude.ai, Claude Code, Cursor et tout client MCP prenant en charge le flux OAuth standard. Aucune clé API à créer ou à coller — le client découvre automatiquement le serveur d'autorisation.

  1. Ajoutez Entity Enricher comme connecteur (dans claude.ai : Paramètres → Connecteurs → Ajouter un connecteur personnalisé, ou choisissez-le dans le répertoire) avec l'URL https://entityenricher.ai/api/mcp/.
  2. Votre navigateur ouvre l'écran de consentement Entity Enricher — connectez-vous si nécessaire et cliquez sur Autoriser. La connexion agit en votre nom avec votre propre rôle.
  3. Gérez ou révoquez la connexion à tout moment sous Clés API → Applications connectées — la révocation coupe l'accès immédiatement.

Option 2 — clé API (configuration JSON statique)

Pour les clients configurés via un fichier JSON plutôt que par une connexion interactive (Claude Desktop, Continue, Zed).

  1. 1. Créez une clé API
    Dans l'interface web d'Entity Enricher : Paramètres → Clés API → Nouvelle clé d'accès d'organisation. Choisissez un rôle (opérateur pour un accès principalement en lecture, éditeur pour créer/modifier des schémas, propriétaire pour un contrôle total). Copiez la valeur ent_… — elle n'est affichée qu'une seule fois.
  2. 2. Enregistrez-le dans votre client MCP

    Pour Claude Desktop, modifiez ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows) :

    {
      "mcpServers": {
        "entityenricher": {
          "url": "https://entityenricher.ai/api/mcp/",
          "headers": { "X-API-Key": "ent_your_key_here" }
        }
      }
    }

    Redémarrez Claude Desktop. Le même extrait fonctionne avec Claude Code, Cursor, Continue et Zed — tout client compatible MCP.

Essayez

Dans une nouvelle conversation : "Listez mes schémas Entity Enricher, puis enrichissez Sanofi avec le schéma d'entreprise pharmaceutique en utilisant Claude Sonnet." Claude découvre automatiquement les outils, choisit le bon, vous demande de confirmer le choix du modèle et du schéma, puis affiche le résultat en continu directement dans la conversation.

Outils

Les 54 outils couvrent l'intégralité du vocabulaire : enrichissement, création de schémas, database sync et ID sémantiques. Leur comportement est identique à celui des endpoints REST qu'ils encapsulent (mêmes validations, même facturation, mêmes limites de forfait) — lorsqu'un correctif arrive dans l'interface web, MCP en bénéficie aussi. Les traitements longs (enrichissement par lot, génération d'échantillons, exécutions de benchmark) sont asynchrones : l'outil de démarrage renvoie un job_id, Claude interroge get_job_status, puis récupère les sorties persistées depuis vos enregistrements une fois le job terminé.

CatégorieOutilDescription
Découvertelist_modelsListez les clés de modèle, les capacités nominales, les valeurs par défaut sélectionnées automatiquement et les profile_limits de votre forfait. Préférez la sélection automatique : la disponibilité ne garantit pas chaque quota de provider ni chaque mode combiné média/outil.
Schémaslist_schemasListe les schémas JSON enregistrés de votre organisation, les épinglés en premier.
Schémasget_schemaRécupérez le contenu complet d'un schéma par UUID.
Schémasgenerate_sampleGénérez 1..N contrats d'exemple modifiables en une seule tâche (le premier définit l'ensemble des champs ; les autres sont des variantes d'instance rapides aux mêmes champs) en mode connaissance (aucune pièce jointe, recherche web facultative) ou en mode source (les pièces jointes font autorité et le planificateur peut poser des questions). Passez en revue les modifications importantes avec l'utilisateur avant de créer un schéma.
Schémascreate_schema_from_sampleGénérez et enregistrez automatiquement un schéma à partir d'entity_samples (1..N échantillons d'un même type d'entité — union des champs, nullable si absent, exemples réels observés), d'un sample_record_id, ou de données modifiées ainsi que de ses pièces jointes liées à l'enregistrement. Les identifiants sémantiques sont facultatifs ; les suggestions sont passées en revue, jamais appliquées automatiquement.
Schémassave_schemaPersistez un schéma rédigé directement par Claude — sans appel LLM, sans coût, validé côté serveur.
Schémasupdate_schemaRenommer, remplacer le contenu, réétiqueter, épingler ou activer/désactiver la vérification d'ambiguïté sur un schéma enregistré, sans appel LLM.
Schémasget_schema_partLisez une partie d'un schéma sans charger le document complet : l'index des types nommés, une définition $defs/$enums, un sous-arbre d'objet ou la fiche d'une seule propriété avec ses relations et ses indicateurs.
Schémasupdate_schema_propertyModifiez une propriété par son chemin — renommage, type ou $ref, description, exemples, indicateurs — ou supprimez-la, avec validation côté serveur ; sans aller-retour sur le contenu complet.
Schémasadd_schema_propertyAjoutez une propriété scalaire, un objet imbriqué ou une propriété $ref à la racine, à un objet imbriqué ou à un type $defs.
Schémasmove_schema_propertyDéplacez une propriété vers un autre conteneur — la racine, un objet imbriqué ou un type $defs — en conservant ses indicateurs et son expertise.
Schémaspublish_schemaPublier la copie de travail d'un schéma lié en tant que contrat sur lequel s'appuient l'enrichissement et ses synchronisations de base de données. Les modifications structurelles ne prennent effet qu'ici — et une synchronisation fraîchement liée n'envoie rien avant la première publication de son schéma. validate_only=true prévisualise le diff de migration.
Schémasanalyze_sampleAnalyse le JSON d'exemple à la recherche de noms de propriétés admettant plusieurs lectures dans le contexte de leur parent — ou aucune — et d'éléments liés mêlant des faits sur l'entité et des faits propres à chaque parent. Rapport sans état présentant les interprétations concurrentes et des renommages suggérés ; rien n'est modifié.
Schémasanalyze_schemaExécuter les vérifications d'ambiguïté et de portée d'identité sur un schéma enregistré et écrire des annotations par propriété — une description réécrite pour chaque nom ambigu, un schéma actif ne pouvant pas être renommé. Incrémental par défaut, force=true réanalyse tout.
Schémasdelete_schemaEffectuez une suppression logique d'un schéma enregistré par UUID.
Enrichissementenrich_entityEnrichissement multi-modèles avec fusion automatique optionnelle. Accepte une liste attachment_ids facultative. Les divergences de classification renvoient une réponse sans erreur afin que Claude puisse demander confirmation à l'utilisateur et réessayer.
Enrichissementstart_batch_enrichmentEnrichissez un nombre illimité d'entités de manière asynchrone — sans limite fixe de taille de traitement par lot, dans la limite du quota d'utilisation en temps réel de votre forfait — pipeline complet par entité avec fusion automatique. Renvoie un job_id ; les résultats apparaissent dans vos enregistrements.
Enrichissementfetch_entitiesRécupérez un tableau JSON d'entités depuis une API REST externe côté serveur (authentification bearer / api_key / basic) — se combine avec l'enrichissement par lot.
Enrichissementretry_expertisesRéexécutez uniquement les domaines d'expertise en échec d'un enregistrement, en réintégrant les valeurs récupérées — sans nouveau paiement pour ce qui a déjà réussi.
Enrichissementmerge_recordsFusionnez 2 enregistrements ou plus en un seul résultat fusionné — basé sur des règles ou avec un modèle d'arbitrage LLM.
Tâchesget_job_statusInterrogez les tâches asynchrones pour connaître leur progression, leurs résultats, leurs échecs et les questions de clarification. Après un échec de compatibilité de modèle explicite, réessayez une fois avec la sélection automatique plutôt que d'enchaîner les modèles.
Tâchescancel_jobAnnulez une tâche en attente, en cours ou en pause.
Tâchesanswer_job_questionRépondez aux questions de clarification d'une tâche en pause et reprenez-la — la moitié interactive de generate_sample.
Benchmarkslist_benchmark_scenariosListez vos scénarios de benchmark enregistrés (tests d'enrichissement réutilisables).
Benchmarksget_benchmark_scenarioUn scénario avec ses résultats notés par modèle (qualité / coût / vitesse).
Benchmarkscreate_benchmark_scenarioCréez un scénario : schéma + entité fixe + stratégie + juge de notation. Rôle propriétaire + un forfait avec benchmarks requis.
Benchmarksupdate_benchmark_scenarioMettez à jour la définition de test ou la configuration de notation d'un scénario ; les résultats existants sont marqués comme obsolètes.
Benchmarksset_benchmark_referenceEnregistrez la sortie de référence gold et marquez-la comme vérifiée — requis avant une exécution.
Benchmarksdelete_benchmark_scenarioSupprimez un scénario et ses résultats.
Benchmarksrun_benchmarkExécutez un scénario sur une liste de modèles explicite, sur tous les modèles actifs de fournisseurs sélectionnés ou sur tous les modèles actifs — chaque résultat est noté automatiquement par rapport à la référence.
Enregistrementslist_recordsParcourez les enregistrements d'enrichissement, de génération d'exemple/de schéma, de modification de schéma, de playground, de classification, d'arbitrage et d'analyse d'ambiguïté, avec des filtres de réussite, de modèle, de tâche et de recherche.
Enregistrementsget_recordSortie structurée complète + erreurs de validation pour un enregistrement.
Enregistrementsget_statsStatistiques agrégées de l'organisation : totaux, taux de réussite, tokens, coût.
Pièces jointesupload_attachmentTéléversez un fichier base64 et renvoyez son ID de pièce jointe ainsi que la capacité de modèle requise. Transmettre l'ID à generate_sample active le mode source.
Pièces jointesdelete_attachmentSupprimez une pièce jointe par son ID — une étape de nettoyage post-enrichissement bien pratique.
Database Synclist_database_syncsLister les synchronisations de base de données enregistrées sur un schéma enregistré, avec le nombre de deltas en attente et les options de chaque synchronisation.
Database Synccreate_database_syncConnectez une base de données à un schéma enregistré, transformant ses enrichissements en deltas SQL relationnels pour votre propre PostgreSQL. Le schéma est lié sans être publié et le modèle de base de données est classé en arrière-plan — vérifiez-le, puis publish_schema démarre le flux.
Database Syncclassify_database_modelRelancez la classification du modèle de base de données après avoir modifié un schéma lié : un LLM propose la clé, le type SQL, l'index et la propriété de chaque nouvelle propriété ou propriété modifiée. Le premier passage s'exécute automatiquement lorsque la base de données est connectée.
Database Syncdelete_database_syncSupprimer une synchronisation de base de données et ses deltas en file d'attente — les tables de votre réplica ne sont jamais modifiées. Des indicateurs de démantèlement facultatifs suppriment aussi l'état d'entité et le modèle de base de données des schémas ne disposant plus d'aucune base de données.
Database Synccreate_database_credential(Ré)émettre l'identifiant sync-client d'une synchronisation de base de données — l'étape d'appairage du workflow ee-database, renvoyée avec les commandes d'installation et d'appairage.
Database Syncfetch_database_deltasRécupérer la prochaine fenêtre FIFO de deltas SQL pour une synchronisation de base de données — claim=true la réserve pour une livraison avec accusé de réception, claim=false est une lecture rejouable.
Database Syncack_database_deltasAccuser réception des deltas appliqués jusqu'à un id : libère le bail et applique les options de purge de la synchronisation.
Database Syncassign_sync_hostAttribuer (ou effacer) l'hôte de synchronisation qui provisionne un database sync en mode géré — l'hôte revendique l'identifiant, crée la base de données physique si elle n'existe pas et démarre la synchronisation, sans appairage manuel.
Database Synclist_entity_statesParcourir l'état actuel des entités d'un schéma — les lignes dédupliquées, en dernier écrit gagnant, que conserve la couche entité et que reflète chaque base de données liée, et non les enregistrements par exécution de list_records.
Database Syncsync_records_to_databaseInjectez les sorties d'enrichissement stockées dans la Database Sync d'un schéma — revalidées par rapport au contrat publié, puis soumises au contrôle d'admission.
ID sémantiqueslist_semantic_conceptsParcourez le vocabulaire de concepts de l'organisation avec ses facettes de type — ou, avec view="duplicates", les paires de concepts juste en dessous du seuil de résolution.
ID sémantiquesget_semantic_conceptUn concept en détail : formes de surface, clés sources d'identité, enregistrements liés et ses plus proches voisins avec leurs similarités (définies uniquement au sein de sa propre tranche type de concept / modèle d'embedding).
ID sémantiquesprobe_semantic_conceptSimulez l'échelle de résolution pour un texte — ce qu'un enrichissement en ferait — sans rien créer. Sondez avant d'ajouter.
ID sémantiquesadd_semantic_conceptAjoutez un concept avec un usage à 0, ou, via alias_of, une nouvelle forme de surface d'un concept existant. Refusé, avec le concept en place, lorsque le texte est déjà couvert au seuil.
ID sémantiquesupdate_concept_aliasSupprimez une forme de surface d'un concept, ou promouvez-en une comme canonique. La dernière forme de surface est refusée — supprimer le concept relève du flux de suppression.
ID sémantiquesimport_semantic_conceptsRésolvez jusqu'à 1000 textes d'identité via l'échelle d'enrichissement : un rapport ligne par ligne par défaut, avec création des concepts manquants si mint=true (propriétaire).
ID sémantiquesmerge_semantic_conceptsFusionnez un concept dans un autre. impact_only=true (par défaut) indique l'étendue des impacts ; la fusion elle-même (propriétaire) réoriente les alias et les entités et fait converger chaque base de données liée.
ID sémantiquesdelete_semantic_conceptsSupprimez des concepts par id, des types entiers, ou uniquement les inutilisés. impact_only=true (par défaut) indique d'abord les décomptes et les schémas/bases de données concernés ; la suppression s'auto-répare mais rompt la convergence avec les ids stockés.
ID sémantiquesmigrate_semantic_embeddingsStatut, aperçu des collisions, démarrage ou annulation de la migration de modèle d'embedding de l'organisation — le seul moyen de faire passer des concepts existants d'un modèle d'embedding à un autre.

Modes de génération d'échantillon

Mode connaissance

Omettez attachment_ids. Le modèle conçoit un échantillon réutilisable à partir de ses connaissances, et enable_web_search=true peut ancrer des faits externes.

Mode source

Transmettez attachment_ids. Le planificateur considère les fichiers comme faisant autorité : il transcrit les valeurs des documents ou décrit uniquement les attributs visibles sur une photo. Les champs et les instructions supplémentaires ne peuvent pas ajouter de faits externes sans rapport.

Vos instructions supplémentaires sont contraignantes

Toute instruction supplémentaire que vous transmettez est soit respectée, soit signalée comme non respectée. Lorsqu'une règle déterministe a dû annuler ce que vous aviez demandé — une structure que le générateur ne peut pas produire, par exemple — la tâche terminée comporte une liste warnings qui l'indique. Relayez-la à l'utilisateur : une instruction ignorée en silence, c'est ainsi qu'un échantillon devient discrètement erroné.

Pour une requête hybride telle que l'identification d'une voiture à partir d'une photo et la recherche de ses apparitions publiques, appelez generate_sample deux fois : d'abord en mode source avec la recherche web désactivée, puis sans pièces jointes en utilisant l'identité confirmée et la recherche web activée. Combinez les résultats dans la conversation ; Entity Enricher conserve des enregistrements séparés afin que les observations issues des sources et les faits recherchés conservent une provenance distincte.

Conservez model=auto sauf si vous avez explicitement besoin d'un modèle. La sélection automatique applique les exigences de tâche, de pièce jointe et de recherche web ; une clé de modèle disponible peut tout de même rencontrer des quotas spécifiques au provider ou des restrictions d'outils combinés.

Approuvez l'échantillon, puis examinez le schéma

L'échantillon est le contrat

Avant la génération du schéma, le client examine la portée de l'entité, les clés, les types, la cardinalité, les champs représentatifs manquants et les relations imbriquées. Les modifications importantes sont regroupées pour votre approbation ; les valeurs factuelles et la structure ne sont jamais modifiées silencieusement.

Choisissez des ID sémantiques stables lorsque c'est utile

Pour les tables relationnelles, les données de référence, les graphes de connaissances ou les entités imbriquées réutilisables, le client demande s'il faut générer des ID sémantiques. Ils nécessitent un modèle d'embedding de l'organisation et engendrent un coût d'embedding, ils restent donc désactivés par défaut.

Transmettez entity_data pour un échantillon nouveau ou modifié, ou sample_record_id pour réutiliser le JSON stocké et ses pièces jointes liées. Transmettre les deux utilise le JSON modifié tout en conservant les pièces jointes. Un attachment_ids explicite, y compris une liste vide, remplace l'héritage.

Après la génération, le client vérifie la conformité de l'échantillon, les clés, les annotations, l'expertise, les relations et la couverture des ID sémantiques. Les suggestions structurelles nécessitent de modifier l'échantillon puis de régénérer ; les modifications limitées aux annotations requièrent tout de même votre approbation. Rien n'est appliqué automatiquement.

Ressources

Les ressources permettent à Claude de parcourir des données sans consommer d'appel d'outil — le client LLM les traite comme des fichiers. Les deux types de ressources s'affichent en Markdown pour un rendu en ligne économique.

Modèle d'URIDescription
enricher://schemas/{schema_id}Un schéma enregistré rendu en Markdown — en-tête de métadonnées + le GeneratedJsonSchema sous forme de bloc JSON délimité.
enricher://records/{record_id}Un enregistrement d'enrichissement passé rendu en Markdown — métadonnées + sortie structurée + erreurs de validation.

La fonctionnalité phare : la reprise interactive de classification

Lorsque vous demandez à enrich_entity d'utiliser un modèle de classification et que l'entité ne correspond pas au type du schéma, l'outil renvoie une réponse sans erreur avec des détails structurés. Claude la lit, vous présente le raisonnement et (après votre confirmation) réessaie avec force_after_classification_warning=true — ce qui désactive le classificateur lors de la nouvelle tentative.

{
  "success": false,
  "error_code": "classification_warning",
  "message": "Pre-flight classification rejected the entity. ...",
  "classification": {
    "status": "mismatch",
    "reasoning": "Titan is a moon of Saturn, not a planet.",
    "confidence": 0.97
  },
  "job_id": "..."
}

n8n et Make annulent automatiquement dans cet état car ils ne peuvent pas interroger l'utilisateur en cours de pipeline. MCP le peut, et cette seule différence justifie l'existence du connecteur.

La même interactivité alimente un second flux : lorsque generate_sample s'exécute avec des documents sources, son planificateur peut se mettre en pause avec des questions de clarification structurelles. Claude vous les relaie et reprend la tâche avec answer_job_question — cycle après cycle, jusqu'à ce que l'échantillon soit généré.

Codes d'erreur

Les erreurs d'outil sont projetées dans des dictionnaires structurés avec un champ error_code afin que Claude puisse faire une correspondance de motifs au lieu d'analyser du texte libre. La couche HTTP s'y mappe proprement : 402 → erreur de quota ou de crédit, 422 → avertissement de classification, 504 → délai dépassé, 502 → défaillance du LLM en amont.

error_codeQuand
invalid_requestUUID mal formé, arguments mutuellement exclusifs (schema_id + target_schema) ou échec de la validation du corps de la requête.
prompt_limit_reachedQuota de prompts quotidien / hebdomadaire / mensuel épuisé (HTTP 402). Le corps de la réponse inclut period, limit, used, needed.
insufficient_creditsL'organisation a la facturation activée mais le solde de crédits est trop faible pour démarrer la tâche (HTTP 402). Le corps de la réponse inclut le solde et une URL d'achat.
model_limit_exceededPlus de modèles demandés que le forfait n'en autorise (HTTP 402). Renvoie la limite + le nombre demandé.
language_limit_exceededPlus de langues demandées que le forfait n'en autorise (HTTP 402).
concurrent_job_limit_reachedTrop de tâches d'enrichissement actives pour cette organisation. Patientez ou passez à un forfait supérieur.
classification_warning⚡ Non-erreur : le classificateur préliminaire a rejeté l'entité. La réponse contient le contexte de classification afin que Claude puisse demander confirmation à l'utilisateur et réessayer avec force_after_classification_warning=true.
benchmarks_not_in_planLes outils de benchmark nécessitent le rôle propriétaire et un forfait incluant les Model Benchmarks (HTTP 403).
ambiguity_check_disabledanalyze_schema a été appelé sur un schéma dont la vérification d'ambiguïté est désactivée (HTTP 400). Réactivez-la d'abord via update_schema avec ambiguity_check_enabled=true.
enrichment_timeoutLa tâche a dépassé timeout_seconds. Essayez avec moins de modèles ou en divisant l'entité.
schema_generation_timeoutLa génération du schéma a dépassé timeout_seconds.
schema_generation_failedErreur LLM en amont lors de la génération du schéma (HTTP 502).
model_output_invalidLe modèle a renvoyé une sortie qui ne correspond pas au schéma (HTTP 502). Le corps de la réponse indique le modèle, le chemin de la propriété en cause et retryable: true — appelez à nouveau l'outil, ou choisissez un modèle plus puissant.
cancelledLa tâche a été annulée en cours d'exécution (HTTP 499).
not_foundLe schéma ou l'ID d'enregistrement n'existe pas dans votre organisation.
http_errorCas générique pour les erreurs HTTP sans corps de détail structuré.

Omissions délibérées

Voir aussi