Server MCP (claude.ai / Claude Desktop / Code / Cursor) - Documentazione Entity Enricher

Server MCP (Claude Desktop / Code / Cursor)

Entity Enricher include un server Model Context Protocol integrato su /api/mcp — elencate i vostri schemi, arricchite un'entità, ispezionate il risultato e risolvete un avviso di classificazione tutto all'interno di un'unica chat di Claude. Nessun editor di flussi di lavoro richiesto.

Perché MCP, se ci sono già n8n + Make?

Forma diversa, caso d'uso diverso. I connettori n8n e Make incapsulano l'API per l'automazione dei flussi di lavoro: trigger, esecuzioni pianificate, pipeline multi-step, stato persistente. MCP la incapsula per la chat interattiva: domande ad hoc, arricchimenti esplorativi, chiarimenti di follow-up. I flussi di lavoro hanno una forma a batch, le chat una forma conversazionale — la superficie cambia e con essa la UX.

La funzionalità straordinaria che solo MCP sblocca: ripresa interattiva della classificazione. Quando il classificatore preliminare rifiuta la sua entità (ad esempio ha chiesto di arricchire "Titano" rispetto a uno schema Pianeta, ma Titano è una luna), n8n/Make devono annullare automaticamente perché non sono interattivi. MCP mostra l'avviso a Claude, Claude le chiede di confermare e, in caso di "sì", lo strumento viene rieseguito senza il classificatore. Nessun fallimento a metà della pipeline, nessuna riesecuzione da zero.

Avvio rapido

Opzione 1 — OAuth (consigliata)

Per claude.ai, Claude Code, Cursor e qualsiasi client MCP che supporti il flusso OAuth standard. Nessuna API key da creare o incollare: il client individua automaticamente il server di autorizzazione.

  1. Aggiungere Entity Enricher come connettore (in claude.ai: Impostazioni → Connettori → Aggiungi connettore personalizzato, oppure selezionarlo dalla directory) con l'URL https://entityenricher.ai/api/mcp/.
  2. Il browser apre la schermata di consenso di Entity Enricher: effettuare l'accesso se necessario e fare clic su Autorizza. La connessione agisce per conto dell'utente con il suo stesso ruolo.
  3. È possibile gestire o revocare la connessione in qualsiasi momento da API Keys → App connesse: la revoca interrompe immediatamente l'accesso.

Opzione 2 — API key (configurazione JSON statica)

Per i client configurati tramite un file JSON anziché con un accesso interattivo (Claude Desktop, Continue, Zed).

  1. 1. Crea una chiave API
    Nell'interfaccia web di Entity Enricher: Impostazioni → Chiavi API → Nuova chiave di accesso organizzazione. Scelga un ruolo (operator per sola lettura, editor per creare/modificare schemi, owner per il controllo completo). Copi il valore ent_…: viene mostrato una sola volta.
  2. 2. Registrarsi nel client MCP

    Per Claude Desktop, modificate ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oppure %APPDATA%\Claude\claude_desktop_config.json (Windows):

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

    Riavviare Claude Desktop. Lo stesso snippet funziona con Claude Code, Cursor, Continue e Zed, ossia qualsiasi client compatibile con MCP.

Prova

In una nuova chat: "Elenca i miei schemi Entity Enricher, quindi arricchisci Sanofi rispetto allo schema dell'azienda farmaceutica usando Claude Sonnet." Claude individua automaticamente gli strumenti, sceglie quello giusto, le chiede di confermare la scelta del modello e dello schema e trasmette il risultato in linea.

Strumenti

29 strumenti coprono l'intera superficie di arricchimento e creazione degli schemi. Il comportamento è identico agli endpoint REST che incapsulano (stessa validazione, fatturazione, limiti di piano): quando l'interfaccia web riceve una correzione, la ottiene anche MCP. I lavori di lunga durata (arricchimento batch, generazione di campioni, esecuzioni di benchmark) sono asincroni: lo strumento di avvio restituisce un job_id, Claude interroga get_job_status e recupera gli output persistiti dai propri record una volta completato il job.

CategoriaStrumentoDescrizione
Scopertalist_modelsElenca i modelli LLM disponibili + i profile_limits del tuo piano affinché Claude si autoregoli prima di raggiungere l'errore HTTP 402.
Schemilist_schemasElenca gli schema JSON salvati nella tua organizzazione, con quelli fissati per primi.
Schemiget_schemaRecupera il contenuto completo di uno schema tramite UUID.
Schemigenerate_sampleGenerare un'entità campione realistica a partire da una descrizione del tipo di entità — il primo passo naturale prima della generazione dello schema. Con gli allegati, un pianificatore interattivo potrebbe mettersi in pausa con domande di chiarimento.
Schemicreate_schema_from_sampleGenerare uno schema JSON da un dizionario di entità campione tramite LLM, facoltativamente basato su documenti sorgente caricati (attachment_ids). Il risultato viene salvato automaticamente.
Schemiedit_schemaModifica in linguaggio naturale di uno schema esistente. Restituisce il nuovo contenuto + 5 suggerimenti successivi.
Schemisave_schemaSalvare uno schema creato direttamente da Claude — nessuna chiamata LLM, nessun costo, validato lato server.
Schemiupdate_schemaRinominare, sostituire il contenuto, ri-etichettare o fissare uno schema salvato senza una chiamata LLM.
Schemidelete_schemaEliminare in modo soft uno schema salvato tramite UUID.
Arricchimentoenrich_entityArricchimento multi-modello con fusione automatica opzionale. Accetta un elenco opzionale attachment_ids. Le discrepanze di classificazione restituiscono una risposta senza errori, così che Claude possa chiedere all'utente di confermare e riprovare.
Arricchimentostart_batch_enrichmentArricchire fino a 100 entità in modo asincrono — pipeline completa per ogni entità con fusione automatica. Restituisce un job_id; i risultati finiscono nei propri record.
Arricchimentofetch_entitiesRecuperare un array JSON di entità da un'API REST esterna lato server (bearer / api_key / basic auth) — si abbina all'arricchimento batch.
Arricchimentoretry_expertisesRieseguire solo i domini di competenza falliti di un record, unendo i valori recuperati — nessun nuovo pagamento per ciò che è già andato a buon fine.
Arricchimentomerge_recordsUnire 2 o più record esistenti in un unico risultato fuso — basato su regole o con un modello di arbitraggio LLM.
Jobget_job_statusInterrogare qualsiasi job asincrono (batch, generazione di campioni, esecuzione di benchmark): contatori di avanzamento, riepiloghi finali e domande di chiarimento in sospeso.
Jobcancel_jobAnnullare un job in attesa, in esecuzione o in pausa.
Jobanswer_job_questionRispondere alle domande di chiarimento di un job in pausa e riprenderlo — la metà interattiva di generate_sample.
Benchmarklist_benchmark_scenariosElencare gli scenari di benchmark salvati (test di arricchimento riutilizzabili).
Benchmarkget_benchmark_scenarioUno scenario con i suoi risultati con punteggio per modello (qualità / costo / velocità).
Benchmarkcreate_benchmark_scenarioCreare uno scenario: schema + entità fissa + strategia + giudice di punteggio. Richiesti il ruolo di proprietario + un piano con benchmark.
Benchmarkupdate_benchmark_scenarioAggiornare la definizione di test o la configurazione di punteggio di uno scenario; i risultati esistenti vengono contrassegnati come obsoleti.
Benchmarkset_benchmark_referenceSalvare l'output di riferimento gold e contrassegnarlo come verificato — richiesto prima di un'esecuzione.
Benchmarkdelete_benchmark_scenarioEliminare uno scenario e i suoi risultati.
Benchmarkrun_benchmarkEseguire uno scenario su un elenco esplicito di modelli, su ogni modello attivo dei provider selezionati o su tutti i modelli attivi — ogni risultato riceve automaticamente un punteggio rispetto al riferimento.
Recordlist_recordsSfoglia i record passati con filtri per tipo, esito, modello, processo e ricerca libera.
Recordget_recordOutput strutturato completo + errori di validazione per un record.
Recordget_statsStatistiche aggregate dell'organizzazione: totali, tasso di successo, token, costo.
Allegatiupload_attachmentCarica un file base64 (filename, content_base64, media_type?) e restituisce il relativo ID allegato da utilizzare in enrich_entity.
Allegatidelete_attachmentElimina un allegato tramite ID — un comodo passaggio di pulizia post-arricchimento.

Risorse

Le risorse consentono a Claude di esplorare i dati senza consumare una chiamata a strumento: il client LLM le tratta come file. Entrambi i tipi di risorsa vengono visualizzati in Markdown per una resa inline economica.

Template URIDescrizione
enricher://schemas/{schema_id}Uno schema salvato rappresentato come Markdown — intestazione dei metadati + il GeneratedJsonSchema come blocco JSON delimitato.
enricher://records/{record_id}Un record di arricchimento passato rappresentato come Markdown — metadati + output strutturato + errori di validazione.

La funzionalità straordinaria: ripresa interattiva della classificazione

Quando si chiede a enrich_entity di usare un modello di classificazione e l'entità non corrisponde al tipo dello schema, lo strumento restituisce una risposta non di errore con dettagli strutturati. Claude la legge, ti espone il ragionamento e (previa tua conferma) riprova con force_after_classification_warning=true — che esclude il classificatore al nuovo tentativo.

{
  "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 e Make si annullano automaticamente in questo stato perché non possono interpellare l'utente durante la pipeline. MCP può farlo, e questa singola differenza è il motivo per cui esiste il connettore.

La stessa interattività alimenta un secondo flusso: quando generate_sample viene eseguito con documenti sorgente, il suo pianificatore potrebbe mettersi in pausa con domande di chiarimento strutturali. Claude le inoltra all'utente e riprende il job con answer_job_question — round dopo round, finché il campione non viene generato.

Codici di errore

Gli errori degli strumenti vengono proiettati in dict strutturati con un campo error_code, così Claude può eseguire il pattern-matching anziché analizzare testo libero. Il livello HTTP effettua una mappatura pulita: 402 → errore di quota o di credito, 422 → avviso di classificazione, 504 → timeout, 502 → errore dell'LLM upstream.

error_codeQuando
invalid_requestUUID malformato, argomenti mutuamente esclusivi (schema_id + target_schema) o convalida del corpo della richiesta non riuscita.
prompt_limit_reachedQuota di prompt giornaliera / settimanale / mensile esaurita (HTTP 402). Il corpo include periodo, limite, utilizzati e necessari.
insufficient_creditsL'org ha la fatturazione attiva ma il saldo dei crediti è troppo basso per avviare il lavoro (HTTP 402). Il corpo include il saldo e un URL di acquisto.
model_limit_exceededRichiesti più modelli di quanti ne consenta il piano (HTTP 402). Riporta il limite e la quantità richiesta.
language_limit_exceededRichieste più lingue di quante ne consenta il piano (HTTP 402).
concurrent_job_limit_reachedTroppi processi di arricchimento attivi per questa organizzazione. Attenda o aggiorni il piano.
classification_warning⚡ Non è un errore: il classificatore preliminare ha rifiutato l'entità. La risposta include il contesto di classificazione affinché Claude possa chiedere all'utente di confermare e riprovare con force_after_classification_warning=true.
benchmarks_not_in_planGli strumenti di benchmark richiedono il ruolo di proprietario e un piano che includa i Model Benchmarks (HTTP 403).
enrichment_timeoutIl job ha superato timeout_seconds. Suggeriamo di ridurre i modelli o di suddividere l'entity.
schema_generation_timeoutLa generazione dello schema ha superato timeout_seconds.
schema_generation_failedErrore LLM upstream durante la generazione dello schema (HTTP 502).
cancelledIl job è stato annullato durante l'esecuzione (HTTP 499).
not_foundLo schema o l'ID del record non esiste nella vostra organizzazione.
http_errorGestione generica per gli errori HTTP privi di un corpo di dettaglio strutturato.

Omissioni deliberate

Vedi anche