Servidor MCP (claude.ai / Claude Desktop / Code / Cursor) - Documentação do Entity Enricher

Servidor MCP (Claude Desktop / Code / Cursor)

O Entity Enricher disponibiliza um servidor Model Context Protocol incorporado em /api/mcp — liste os seus esquemas, enriqueça uma entidade, inspecione o resultado e resolva um aviso de classificação tudo a partir de um único chat do Claude. Sem necessidade de editor de fluxos de trabalho.

Porquê MCP, se já existe n8n + Make?

Formato diferente, caso de uso diferente. Os conectores n8n e Make encapsulam a API para automação de fluxos de trabalho: acionadores, execuções agendadas, pipelines com vários passos, estado persistente. O MCP encapsula-a para chat interativo: perguntas pontuais, enrichments exploratórios, esclarecimentos de seguimento. Os fluxos de trabalho têm formato de batch, os chats têm formato de conversa — a superfície difere e a experiência de utilização também.

A funcionalidade indispensável que só o MCP desbloqueia: retoma interativa da classificação. Quando o classificador de pré-verificação rejeita a sua entidade (por exemplo, pediu para enriquecer "Titan" contra um esquema de Planeta, mas Titan é uma lua), o n8n/Make têm de cancelar automaticamente porque não são interativos. O MCP apresenta o aviso ao Claude, o Claude pede-lhe para confirmar e, ao responder "sim", a ferramenta é executada novamente sem o classificador. Sem falhas a meio do pipeline, sem ter de recomeçar do zero.

Início rápido

Opção 1 — OAuth (recomendado)

Para claude.ai, Claude Code, Cursor e qualquer cliente MCP que suporte o fluxo OAuth padrão. Sem chave de API para criar ou colar — o cliente deteta o servidor de autorização automaticamente.

  1. Adicione o Entity Enricher como conector (em claude.ai: Definições → Conectores → Adicionar conector personalizado ou selecione-o no diretório) com o URL https://entityenricher.ai/api/mcp/.
  2. O seu navegador abre o ecrã de consentimento do Entity Enricher — inicie sessão se necessário e clique em Autorizar. A ligação atua em seu nome com a sua própria função.
  3. Faça a gestão ou revogue a ligação a qualquer momento em Chaves de API → Aplicações Ligadas — a revogação corta o acesso de imediato.

Opção 2 — chave de API (configuração JSON estática)

Para clientes configurados através de um ficheiro JSON em vez de um início de sessão interativo (Claude Desktop, Continue, Zed).

  1. 1. Criar uma chave de API
    Na interface web do Entity Enricher: Definições → Chaves de API → Nova chave de acesso da organização. Escolha um papel (operator para leitura na maioria dos casos, editor para criar/editar schemas, owner para controlo total). Copie o valor ent_… — só é mostrado uma vez.
  2. 2. Registe-se no seu cliente MCP

    Para Claude Desktop, edite ~/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" }
        }
      }
    }

    Reinicie o Claude Desktop. O mesmo excerto funciona para o Claude Code, Cursor, Continue e Zed — qualquer cliente compatível com MCP.

Experimente

Numa nova conversa: "Lista os meus schemas do Entity Enricher e, depois, enriquece a Sanofi face ao schema de empresa farmacêutica usando o Claude Sonnet." O Claude descobre as ferramentas automaticamente, escolhe a certa, pede-lhe para confirmar a escolha de model e schema e transmite o resultado inline.

Ferramentas

54 ferramentas cobrem toda a superfície de vocabulário de enriquecimento, criação de schemas, database sync e IDs semânticos. O comportamento é idêntico ao dos endpoints REST que encapsulam (mesma validação, faturação e limites de plano) — quando a interface web recebe uma correção, o MCP também a recebe. O trabalho de longa duração (enriquecimento em lote, geração de amostras, execuções de benchmark) é assíncrono: a ferramenta de arranque devolve um job_id, o Claude consulta get_job_status e obtém os resultados persistidos a partir dos seus registos assim que a tarefa termina.

CategoriaFerramentaDescrição
Descobertalist_modelsLista as chaves de modelos, as capacidades nominais, as predefinições selecionadas automaticamente e os profile_limits do seu plano. Prefira a seleção automática: a disponibilidade não garante todas as quotas do fornecedor nem todos os modos combinados de multimédia/ferramentas.
Esquemaslist_schemasListar os schemas JSON guardados na sua organização, os fixados primeiro.
Esquemasget_schemaObtenha o conteúdo completo de um esquema por UUID.
Esquemasgenerate_sampleGere 1..N contratos de exemplo editáveis numa única tarefa (o primeiro define o conjunto de campos; os restantes são variantes de instância rápidas com os mesmos campos) no modo de conhecimento (sem anexos, pesquisa na web opcional) ou no modo de origem (os anexos são autoritativos e o planeador pode colocar questões). Reveja as edições relevantes com o utilizador antes de criar um esquema.
Esquemascreate_schema_from_sampleGere e guarde automaticamente um esquema a partir de entity_samples (1..N amostras de um tipo de entidade — união de campos, anuláveis quando ausentes, exemplos reais observados), de um sample_record_id ou de dados editados juntamente com os respetivos anexos associados ao registo. Os IDs semânticos são de adesão opcional; as sugestões são revistas, nunca aplicadas automaticamente.
Esquemassave_schemaGuarde um esquema criado diretamente pelo Claude — sem chamada a LLM, sem custo, validado no lado do servidor.
Esquemasupdate_schemaRenomear, substituir o conteúdo, reetiquetar, fixar ou alternar a verificação de ambiguidade num esquema guardado, sem qualquer chamada ao LLM.
Esquemasget_schema_partLeia uma parte de um schema sem o documento completo: o índice de tipos nomeados, uma definição $defs/$enums, uma subárvore de objeto ou um único cartão de propriedade com as suas relações e flags.
Esquemasupdate_schema_propertyEdite uma propriedade por caminho — mudar o nome, tipo ou $ref, descrição, exemplos, flags — ou remova-a, com validação do lado do servidor; sem round-trip do conteúdo completo.
Esquemasadd_schema_propertyAdicione uma propriedade escalar, objeto aninhado ou $ref à raiz, a um objeto aninhado ou a um tipo $defs.
Esquemasmove_schema_propertyMova uma propriedade para outro contentor — a raiz, um objeto aninhado ou um tipo $defs — mantendo os respetivos sinalizadores e domínio de especialidade.
Esquemaspublish_schemaPublica a cópia de trabalho de um schema ligado como o contrato contra o qual o enrichment e as suas database syncs são executados. As edições estruturais só têm efeito aqui — e uma sync recém-ligada não envia nada até à primeira publicação do respetivo schema. validate_only=true pré-visualiza o diff da migração.
Esquemasanalyze_sampleAnalise o JSON de amostra em busca de nomes de propriedades que admitem mais do que uma leitura no contexto do respetivo elemento pai — ou nenhuma — e de itens relacionados que misturam factos da entidade com factos por elemento pai. Relatório sem estado com as interpretações concorrentes e sugestões de renomeação; nada é modificado.
Esquemasanalyze_schemaExecutar as verificações de ambiguidade e de âmbito de identidade num esquema guardado e escrever anotações por propriedade — uma descrição reescrita para cada nome ambíguo, uma vez que um esquema ativo não pode ser renomeado. Incremental por predefinição; force=true reanalisa tudo.
Esquemasdelete_schemaElimine (soft delete) um esquema guardado por UUID.
Enriquecimentoenrich_entityEnriquecimento multi-modelo com auto-fusão opcional. Aceita uma lista opcional attachment_ids. As incompatibilidades de classificação devolvem uma resposta sem erro para que o Claude possa pedir ao utilizador que confirme e tente novamente.
Enriquecimentostart_batch_enrichmentEnriqueça qualquer número de entidades de forma assíncrona — sem limite fixo de tamanho de lote, apenas limitado pela quota de utilização em tempo real do seu plano — pipeline completo por entidade com fusão automática. Devolve um job_id; os resultados são guardados nos seus registos.
Enriquecimentofetch_entitiesObtenha um array JSON de entidades a partir de uma API REST externa no lado do servidor (autenticação bearer / api_key / basic) — combina com o enriquecimento em lote.
Enriquecimentoretry_expertisesReexecute apenas os domínios de especialização falhados de um registo, incorporando os valores recuperados — sem voltar a pagar pelo que já foi bem-sucedido.
Enriquecimentomerge_recordsCombine 2 ou mais registos existentes num único resultado fundido — baseado em regras ou com um modelo de arbitragem LLM.
Trabalhosget_job_statusConsulte as tarefas assíncronas para obter o progresso, os resultados, as falhas e as perguntas de esclarecimento. Após uma falha de compatibilidade com um modelo explícito, tente novamente uma vez com a seleção automática em vez de percorrer vários modelos.
Trabalhoscancel_jobCancele um trabalho pendente, em execução ou em pausa.
Trabalhosanswer_job_questionResponda às perguntas de esclarecimento de um trabalho em pausa e retome-o — a metade interativa do generate_sample.
Benchmarkslist_benchmark_scenariosListe os seus cenários de benchmark guardados (testes de enriquecimento reutilizáveis).
Benchmarksget_benchmark_scenarioUm cenário com os respetivos resultados pontuados por modelo (qualidade / custo / velocidade).
Benchmarkscreate_benchmark_scenarioCrie um cenário: esquema + entidade fixa + estratégia + avaliador de pontuação. Exige a função de proprietário + um plano com benchmarks.
Benchmarksupdate_benchmark_scenarioAtualize a definição de teste ou a configuração de pontuação de um cenário; os resultados existentes são marcados como desatualizados.
Benchmarksset_benchmark_referenceGuarde o resultado de referência de ouro e marque-o como verificado — obrigatório antes de uma execução.
Benchmarksdelete_benchmark_scenarioElimine um cenário e os seus resultados.
Benchmarksrun_benchmarkExecute um cenário numa lista explícita de modelos, em todos os modelos ativos de fornecedores selecionados, ou em todos os modelos ativos — cada resultado é pontuado automaticamente em relação à referência.
Registoslist_recordsPercorra registos de enriquecimento, geração de amostra/esquema, edição de esquema, playground, classificação, arbitragem e análise de ambiguidade, com filtros de sucesso, modelo, tarefa e pesquisa.
Registosget_recordSaída estruturada completa + erros de validação para um registo.
Registosget_statsEstatísticas agregadas da organização: totais, taxa de sucesso, tokens, custo.
Anexosupload_attachmentCarregue um ficheiro em base64 e devolva o respetivo ID de anexo e a capacidade de modelo necessária. Passar o ID para generate_sample ativa o modo de origem.
Anexosdelete_attachmentEliminar um anexo por ID — um passo prático de limpeza pós-enriquecimento.
Database Synclist_database_syncsLista as database syncs registadas num schema guardado, com as contagens de deltas pendentes e as opções de cada sync.
Database Synccreate_database_syncLigue uma base de dados a um schema guardado, transformando os seus enriquecimentos em deltas SQL relacionais para o seu próprio PostgreSQL. O schema é associado sem ser publicado e o modelo da base de dados é classificado em segundo plano — reveja-o e depois publish_schema inicia o fluxo.
Database Syncclassify_database_modelVolte a executar a classificação do modelo da base de dados após editar um schema associado: um LLM propõe a chave, o tipo SQL, o índice e a titularidade de cada propriedade nova ou alterada. A primeira passagem executa-se sozinha quando a base de dados é ligada.
Database Syncdelete_database_syncElimina uma database sync e os respetivos deltas em fila — as tabelas da sua réplica nunca são tocadas. Os sinalizadores de desmontagem opcionais também eliminam o estado da entity e o modelo de database de schemas que fiquem sem qualquer database.
Database Synccreate_database_credential(Re)emite a credencial sync-client de uma database sync — o passo de emparelhamento do fluxo de trabalho ee-database, devolvido com os comandos de instalação e emparelhamento.
Database Syncfetch_database_deltasObtém a próxima janela FIFO de deltas SQL de uma database sync — claim=true reserva-a para entrega confirmada, claim=false é uma leitura reproduzível.
Database Syncack_database_deltasConfirma os deltas aplicados até um id: liberta o lease e aplica as opções de purga do sync.
Database Syncassign_sync_hostAtribuir (ou limpar) o host de sincronização que aprovisiona um Database Sync em modo gerido — o host reclama a credencial, cria a base de dados física se não existir e inicia a sincronização, sem qualquer emparelhamento manual.
Database Synclist_entity_statesExplorar o estado atual das entidades de um schema — as linhas desduplicadas, com prevalência da última escrita, que a camada de entidades guarda e que todas as bases de dados ligadas replicam, e não os registos por execução de list_records.
Database Syncsync_records_to_databaseInjete resultados de enriquecimento armazenados no Database Sync de um esquema — revalidados face ao contrato publicado e depois submetidos ao controlo de admissão.
IDs semânticoslist_semantic_conceptsPercorra o vocabulário de conceitos da organização com as respetivas facetas de tipo — ou, com view="duplicates", os pares de conceitos imediatamente abaixo do limiar de resolução.
IDs semânticosget_semantic_conceptUm conceito na íntegra: formas de superfície, chaves de origem de identidade, registos ligados e os vizinhos mais próximos com as respetivas semelhanças (definidas apenas dentro do seu segmento de tipo de conceito e modelo de embedding).
IDs semânticosprobe_semantic_conceptSimule a escada de resolução para um texto — o que um enriquecimento faria com ele — sem criar nada. Teste antes de adicionar.
IDs semânticosadd_semantic_conceptAdicione um conceito com utilização 0 ou, com alias_of, uma nova forma de superfície de um conceito existente. É recusado, devolvendo o conceito em vigor, quando o texto já está coberto no limiar.
IDs semânticosupdate_concept_aliasRemova uma forma de superfície de um conceito ou promova uma delas a canónica. A última forma de superfície é recusada — eliminar o conceito compete ao fluxo de eliminação.
IDs semânticosimport_semantic_conceptsResolva até 1000 textos de identidade através da escada de enriquecimento: por predefinição, um relatório por linha; com mint=true (proprietário), cria os conceitos em falta.
IDs semânticosmerge_semantic_conceptsIntegre um conceito noutro. impact_only=true (predefinição) apresenta o raio de impacto; a fusão em si (proprietário) reaponta aliases e entidades e converge todas as bases de dados ligadas.
IDs semânticosdelete_semantic_conceptsElimine conceitos por id, tipos inteiros ou apenas os não utilizados. impact_only=true (predefinição) apresenta primeiro as contagens e os esquemas/bases de dados afetados; a eliminação regenera-se automaticamente, mas quebra a convergência com os ids armazenados.
IDs semânticosmigrate_semantic_embeddingsEstado, pré-visualização de colisões, arranque ou cancelamento da migração de modelo de embedding da organização — a única forma de mover conceitos existentes entre modelos de embedding.

Modos de geração de amostras

Modo de conhecimento

Omita attachment_ids. O modelo concebe uma amostra reutilizável a partir do seu conhecimento, e enable_web_search=true pode fundamentar factos externos.

Modo de origem

Passe attachment_ids. O planeador trata os ficheiros como autoritativos: transcreve os valores dos documentos ou descreve apenas os atributos visíveis numa fotografia. Os campos e as instruções adicionais não podem acrescentar factos externos não relacionados.

As suas instruções adicionais são vinculativas

Tudo o que passar como instruções adicionais é respeitado ou, então, reportado como não respeitado. Sempre que uma regra determinista tiver de anular algo que pediu — uma estrutura que o gerador não consegue produzir, por exemplo — a tarefa concluída inclui uma lista de warnings a indicá-lo. Transmita-as ao utilizador: uma instrução ignorada em silêncio é a forma como uma amostra acaba discretamente errada.

Para um pedido híbrido, como identificar um carro a partir de uma fotografia e investigar as suas aparições públicas, chame generate_sample duas vezes: primeiro em modo de origem com a pesquisa web desativada, depois sem anexos, usando a identidade confirmada e com a pesquisa web ativada. Combine os resultados na conversa; o Entity Enricher mantém registos separados para que as observações da origem e os factos investigados conservem proveniências distintas.

Mantenha model=auto a menos que precise explicitamente de um modelo. A seleção automática aplica os requisitos da tarefa, dos anexos e da pesquisa web; uma chave de modelo disponível pode ainda deparar-se com quotas específicas do fornecedor ou restrições de ferramentas combinadas.

Aprove a amostra e depois reveja o esquema

A amostra é o contrato

Antes de gerar o esquema, o cliente revê o âmbito da entidade, as chaves, os tipos, a cardinalidade, os campos representativos em falta e as relações aninhadas. As edições relevantes são agrupadas para a sua aprovação; os valores factuais e a estrutura nunca são alterados silenciosamente.

Escolha IDs semânticos estáveis quando for útil

Para tabelas relacionais, dados mestre, grafos de conhecimento ou entidades aninhadas reutilizáveis, o cliente pergunta se deve gerar IDs semânticos. Estes exigem um modelo de embedding da organização e acrescentam custos de embedding, pelo que permanecem desativados por predefinição.

Passe entity_data para uma amostra nova ou editada, ou sample_record_id para reutilizar JSON armazenado e os respetivos anexos associados. Passar ambos usa o JSON editado, mantendo os anexos. Uns attachment_ids explícitos, incluindo uma lista vazia, substituem a herança.

Após a geração, o cliente verifica a conformidade da amostra, as chaves, as anotações, a especialização, as relações e a cobertura de IDs semânticos. As sugestões estruturais exigem editar a amostra e voltar a gerar; as edições que envolvem apenas anotações continuam a exigir a sua aprovação. Nada é aplicado automaticamente.

Recursos

Os recursos permitem que o Claude navegue pelos dados sem gastar uma chamada de ferramenta — o cliente LLM trata-os como ficheiros. Ambos os tipos de recurso são apresentados como Markdown para uma exibição inline económica.

Modelo de URIDescrição
enricher://schemas/{schema_id}Um esquema guardado apresentado como Markdown — cabeçalho de metadados + o GeneratedJsonSchema como um bloco JSON delimitado.
enricher://records/{record_id}Um registo de enriquecimento anterior apresentado em Markdown — metadados + saída estruturada + erros de validação.

A funcionalidade indispensável: retoma interativa da classificação

Quando pede à enrich_entity para utilizar um classification model e a entity não corresponde ao tipo do schema, a ferramenta devolve uma resposta sem erro com detalhes estruturados. O Claude lê-a, apresenta-lhe o raciocínio e (após a sua confirmação) repete com force_after_classification_warning=true — o que remove o classificador na nova tentativa.

{
  "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": "..."
}

O n8n e o Make cancelam automaticamente neste estado porque não conseguem perguntar ao utilizador a meio do pipeline. O MCP consegue, e é essa única diferença que justifica a existência do conector.

A mesma interatividade alimenta um segundo fluxo: quando o generate_sample é executado com documentos de origem, o seu planeador pode pausar com perguntas de esclarecimento estruturais. O Claude transmite-as e retoma o trabalho com answer_job_question — ronda após ronda, até a amostra ser gerada.

Códigos de erro

Os erros de ferramenta são projetados em dicionários estruturados com um campo error_code para que o Claude possa fazer correspondência de padrões em vez de analisar texto livre. A camada HTTP mapeia de forma clara: 402 → erro de quota ou de crédito, 422 → aviso de classificação, 504 → tempo limite, 502 → falha do LLM a montante.

error_codeQuando
invalid_requestUUID malformado, argumentos mutuamente exclusivos (schema_id + target_schema) ou falha na validação do corpo do pedido.
prompt_limit_reachedQuota de prompts diária / semanal / mensal esgotada (HTTP 402). O corpo inclui período, limite, utilizado e necessário.
insufficient_creditsA org tem a faturação ativada, mas o saldo de credits é demasiado baixo para iniciar o trabalho (HTTP 402). O corpo inclui o saldo e um URL de compra.
model_limit_exceededForam pedidos mais modelos do que o plano permite (HTTP 402). Devolve o limite + o solicitado.
language_limit_exceededForam pedidos mais idiomas do que o plano permite (HTTP 402).
concurrent_job_limit_reachedDemasiadas tarefas de enriquecimento ativas para esta organização. Aguarde ou atualize o plano.
classification_warning⚡ Não é um erro: o classificador de pré-verificação rejeitou a entidade. A resposta inclui o contexto da classificação para que o Claude possa pedir ao utilizador que confirme e tente novamente com force_after_classification_warning=true.
benchmarks_not_in_planAs ferramentas de benchmark exigem a função de proprietário e um plano que inclua Model Benchmarks (HTTP 403).
ambiguity_check_disabledanalyze_schema foi chamado num esquema cuja verificação de ambiguidade está desativada (HTTP 400). Reative-a primeiro através de update_schema com ambiguity_check_enabled=true.
enrichment_timeoutA tarefa excedeu timeout_seconds. Sugira menos models ou dividir a entity.
schema_generation_timeoutA geração de esquemas excedeu o timeout_seconds.
schema_generation_failedErro do LLM a montante durante a geração do schema (HTTP 502).
model_output_invalidO modelo devolveu um resultado que não corresponde ao schema (HTTP 502). O corpo indica o modelo, o caminho da propriedade em causa e retryable: true — chame novamente a ferramenta ou escolha um modelo mais forte.
cancelledA tarefa foi cancelada a meio da execução (HTTP 499).
not_foundO ID do esquema ou do registo não existe na sua organização.
http_errorGenérico para erros HTTP sem um corpo de detalhe estruturado.

Omissões deliberadas

Ver também