MCP-server (claude.ai / Claude Desktop / Code / Cursor) - Entity Enricher-documentatie

MCP Server (Claude Desktop / Code / Cursor)

Entity Enricher levert een ingebouwde Model Context Protocol-server op /api/mcp — toon je schema's, verrijk een entiteit, bekijk het resultaat en los een classificatiewaarschuwing op allemaal vanuit één Claude-chat. Geen workfloweditor nodig.

Waarom MCP, als er al n8n + Make is?

Andere vorm, andere use case. De n8n- en Make-connectors verpakken de API voor workflowautomatisering: triggers, geplande runs, meerstaps-pipelines, persistente status. MCP verpakt het voor interactieve chat: ad-hocvragen, verkennende enrichments, vervolgverduidelijkingen. Workflows hebben een batch-vorm, chats een gespreksvorm — het oppervlak verschilt en de UX dus ook.

De killerfeature die alleen MCP ontgrendelt: interactief hervatten van classificatie. Wanneer de pre-flight-classificatie je entiteit afwijst (je vroeg bijvoorbeeld om "Titan" te verrijken tegen een Planeet-schema, maar Titan is een maan), moeten n8n/Make automatisch annuleren omdat ze niet-interactief zijn. MCP toont de waarschuwing aan Claude, Claude vraagt je om te bevestigen, en bij "ja" draait de tool opnieuw zonder de classificatie. Geen mislukking midden in de pijplijn, geen opnieuw beginnen vanaf nul.

Snel aan de slag

Optie 1 — OAuth (aanbevolen)

Voor claude.ai, Claude Code, Cursor en elke MCP-client die de standaard OAuth-flow ondersteunt. Geen API-sleutel om aan te maken of te plakken — de client ontdekt de autorisatieserver automatisch.

  1. Voeg Entity Enricher toe als connector (in claude.ai: Instellingen → Connectors → Aangepaste connector toevoegen, of kies het uit de directory) met URL https://entityenricher.ai/api/mcp/.
  2. Je browser opent het toestemmingsscherm van Entity Enricher — meld je aan indien nodig en klik op Autoriseren. De verbinding handelt namens jou met je eigen rol.
  3. Beheer of trek de verbinding op elk moment in onder API Keys → Verbonden apps — intrekken beëindigt de toegang onmiddellijk.

Optie 2 — API-sleutel (statische JSON-configuratie)

Voor clients die via een JSON-bestand worden geconfigureerd in plaats van een interactieve aanmelding (Claude Desktop, Continue, Zed).

  1. 1. Maak een API-sleutel aan
    In de Entity Enricher-webinterface: Instellingen → API-sleutels → Nieuwe organisatietoegangssleutel. Kies een rol (operator voor voornamelijk lezen, editor voor het aanmaken/bewerken van schema's, owner voor volledige controle). Kopieer de ent_…-waarde — die wordt maar één keer getoond.
  2. 2. Registreer in je MCP-client

    Bewerk voor Claude Desktop het bestand ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) of %APPDATA%\Claude\claude_desktop_config.json (Windows):

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

    Start Claude Desktop opnieuw op. Hetzelfde fragment werkt voor Claude Code, Cursor, Continue en Zed — elke MCP-compatibele client.

Probeer het

In een nieuwe chat: "Toon mijn Entity Enricher-schema's en verrijk Sanofi vervolgens tegen het schema voor farmaceutische bedrijven met Claude Sonnet." Claude ontdekt de tools automatisch, kiest de juiste, vraagt je om het model en de schemakeuze te bevestigen, en streamt het resultaat inline.

Tools

29 tools dekken het volledige oppervlak van verrijking en schema-authoring. Het gedrag is identiek aan de REST-endpoints die ze omhullen (dezelfde validatie, facturering, planlimieten) — wanneer de web-UI een fix krijgt, krijgt MCP die ook. Langlopend werk (batchverrijking, samplegeneratie, benchmarkruns) is asynchroon: de starttool geeft een job_id terug, Claude pollt get_job_status en haalt de opgeslagen outputs uit je records zodra de job is voltooid.

CategorieToolBeschrijving
Ontdekkinglist_modelsToon beschikbare LLM-modellen + de profile_limits van je plan zodat Claude zichzelf afremt voordat een HTTP 402 wordt bereikt.
Schema'slist_schemasToon opgeslagen JSON-schema's in je organisatie, vastgezette eerst.
Schema'sget_schemaHaal de volledige inhoud van een schema op via UUID.
Schema'sgenerate_sampleGenereer een realistische sample-entiteit uit een beschrijving van een entiteittype — de natuurlijke eerste stap vóór schemageneratie. Met bijlagen kan een interactieve planner pauzeren met verduidelijkingsvragen.
Schema'screate_schema_from_sampleGenereer een JSON-schema uit een sample-entiteitdict via LLM, optioneel gebaseerd op geüploade brondocumenten (attachment_ids). Het resultaat wordt automatisch opgeslagen.
Schema'sedit_schemaAanpassing van een bestaand schema in natuurlijke taal. Geeft nieuwe inhoud + 5 vervolgsuggesties terug.
Schema'ssave_schemaSla een schema op dat Claude direct heeft geschreven — geen LLM-aanroep, geen kosten, gevalideerd aan serverzijde.
Schema'supdate_schemaHernoem, vervang inhoud, wijzig tags of pin een opgeslagen schema zonder LLM-aanroep.
Schema'sdelete_schemaSoft-delete een opgeslagen schema op UUID.
Verrijkingenrich_entityMulti-modelverrijking met optionele auto-fusie. Accepteert een optionele lijst met attachment_ids. Bij classificatieconflicten wordt een respons zonder fout teruggegeven, zodat Claude de gebruiker kan vragen te bevestigen en het opnieuw te proberen.
Verrijkingstart_batch_enrichmentVerrijk tot 100 entiteiten asynchroon — volledige pipeline per entiteit met automatische fusie. Geeft een job_id terug; resultaten belanden in je records.
Verrijkingfetch_entitiesHaal een JSON-array van entiteiten op van een externe REST API aan serverzijde (bearer / api_key / basic auth) — combineert met batchverrijking.
Verrijkingretry_expertisesVoer alleen de mislukte expertisedomeinen van een record opnieuw uit en voeg herstelde waarden terug samen — geen dubbele betaling voor wat al is geslaagd.
Verrijkingmerge_recordsVoeg 2+ bestaande records samen tot één gefuseerd resultaat — op basis van regels of met een LLM-arbitragemodel.
Jobsget_job_statusPoll elke asynchrone job (batch, samplegeneratie, benchmarkrun): voortgangstellers, eindsamenvattingen en openstaande verduidelijkingsvragen.
Jobscancel_jobAnnuleer een job die in behandeling is, actief is of gepauzeerd is.
Jobsanswer_job_questionBeantwoord de verduidelijkingsvragen van een gepauzeerde job en hervat hem — de interactieve helft van generate_sample.
Benchmarkslist_benchmark_scenariosToon je opgeslagen benchmarkscenario's (herbruikbare verrijkingstests).
Benchmarksget_benchmark_scenarioEén scenario met de per model gescoorde resultaten (kwaliteit / kosten / snelheid).
Benchmarkscreate_benchmark_scenarioMaak een scenario: schema + vaste entiteit + strategie + beoordelingsjudge. Owner-rol + een plan met benchmarks vereist.
Benchmarksupdate_benchmark_scenarioWerk de testdefinitie of scoreconfiguratie van een scenario bij; bestaande resultaten worden als verouderd gemarkeerd.
Benchmarksset_benchmark_referenceSla de gouden referentie-output op en markeer hem als geverifieerd — vereist vóór een run.
Benchmarksdelete_benchmark_scenarioVerwijder een scenario en de bijbehorende resultaten.
Benchmarksrun_benchmarkVoer een scenario uit op een expliciete modellijst, elk actief model van geselecteerde providers, of alle actieve modellen — elk resultaat wordt automatisch gescoord tegen de referentie.
Recordslist_recordsBlader door eerdere records met filters op type, succes, model, taak en vrije-tekstzoekopdracht.
Recordsget_recordVolledige gestructureerde output + validatiefouten voor één record.
Recordsget_statsGeaggregeerde organisatiestatistieken: totalen, slagingspercentage, tokens, kosten.
Bijlagenupload_attachmentUpload een base64-bestand (filename, content_base64, media_type?) en ontvang de bijbehorende attachment-ID voor gebruik in enrich_entity.
Bijlagendelete_attachmentVerwijder een bijlage op ID — een handige opschoonstap na de verrijking.

Resources

Met resources kan Claude data doorbladeren zonder een tool-aanroep te verbruiken — de LLM-client behandelt ze als bestanden. Beide resourcetypen worden als Markdown weergegeven voor goedkope inline-weergave.

URI-sjabloonBeschrijving
enricher://schemas/{schema_id}Een opgeslagen schema weergegeven als Markdown — metadata-header + de GeneratedJsonSchema als een afgebakend JSON-blok.
enricher://records/{record_id}Een eerder verrijkingsrecord weergegeven als Markdown — metadata + gestructureerde output + validatiefouten.

De killerfeature: interactief hervatten van classificatie

Wanneer je enrich_entity vraagt om een classificatiemodel te gebruiken en de entiteit niet overeenkomt met het schematype, retourneert de tool een niet-fout-respons met gestructureerde details. Claude leest het, toont je de redenering en probeert het (na jouw bevestiging) opnieuw met force_after_classification_warning=true — waardoor de classifier bij de nieuwe poging wordt overgeslagen.

{
  "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 en Make annuleren automatisch bij deze status omdat ze de gebruiker niet halverwege de pipeline iets kunnen vragen. MCP kan dat wel, en dat ene verschil is waarom de connector bestaat.

Dezelfde interactiviteit drijft een tweede flow aan: wanneer generate_sample met brondocumenten draait, kan de planner pauzeren met structurele verduidelijkingsvragen. Claude geeft ze aan je door en hervat de job met answer_job_question — ronde na ronde, totdat de sample is gegenereerd.

Foutcodes

Toolfouten worden geprojecteerd in gestructureerde dicts met een error_code-veld, zodat Claude patronen kan herkennen in plaats van vrije tekst te parsen. De HTTP-laag wordt netjes gemapt: 402 → quota- of creditfout, 422 → classificatiewaarschuwing, 504 → time-out, 502 → upstream LLM-fout.

error_codeWanneer
invalid_requestOngeldige UUID, wederzijds uitsluitende argumenten (schema_id + target_schema), of validatie van de request-body mislukt.
prompt_limit_reachedDagelijks / wekelijks / maandelijks prompt-quotum uitgeput (HTTP 402). De body bevat period, limit, used en needed.
insufficient_creditsOrg heeft facturering ingeschakeld maar het creditsaldo is te laag om de taak te starten (HTTP 402). De body bevat het saldo en een aankoop-URL.
model_limit_exceededMeer modellen aangevraagd dan het plan toestaat (HTTP 402). Geeft limiet + aangevraagd terug.
language_limit_exceededMeer talen aangevraagd dan het plan toestaat (HTTP 402).
concurrent_job_limit_reachedTe veel actieve verrijkingstaken voor deze organisatie. Wacht of upgrade je abonnement.
classification_warning⚡ Geen fout: de pre-flight classifier heeft de entiteit afgewezen. Het antwoord bevat de classificatiecontext zodat Claude de gebruiker kan vragen om te bevestigen en opnieuw te proberen met force_after_classification_warning=true.
benchmarks_not_in_planBenchmarktools vereisen de owner-rol en een plan met Model Benchmarks (HTTP 403).
enrichment_timeoutJob overschreed timeout_seconds. Overweeg minder modellen of splits de entity.
schema_generation_timeoutSchemageneratie heeft timeout_seconds overschreden.
schema_generation_failedUpstream-LLM-fout tijdens schema-generatie (HTTP 502).
cancelledJob werd tijdens de run geannuleerd (HTTP 499).
not_foundSchema- of record-ID bestaat niet in je organisatie.
http_errorVerzamelpost voor HTTP-fouten zonder gestructureerde detailinhoud.

Bewuste weglatingen

Zie ook