MCP-сервер (claude.ai / Claude Desktop / Code / Cursor) — документация Entity Enricher

Сервер MCP (Claude Desktop / Code / Cursor)

Entity Enricher поставляется со встроенным сервером Model Context Protocol по адресу /api/mcp — выведите список ваших схем, обогатите сущность, изучите результат и устраните предупреждение классификации всё это в одном чате Claude. Редактор рабочих процессов не требуется.

Зачем MCP, если уже есть n8n + Make?

Другая форма — другой сценарий использования. Коннекторы n8n и Make оборачивают API для автоматизации рабочих процессов: триггеры, запуски по расписанию, многошаговые конвейеры, сохраняемое состояние. MCP оборачивает его для интерактивного чата: спонтанные вопросы, исследовательские обогащения, уточняющие вопросы. Рабочие процессы имеют пакетную форму, чаты — диалоговую; отличается интерфейс, отличается и UX.

Функция, которую открывает только MCP: интерактивное возобновление классификации. Когда предварительный классификатор отклоняет вашу сущность (например, вы попросили обогатить «Титан» по схеме Planet, но Титан — это спутник), n8n/Make вынуждены автоматически отменять запрос, так как они неинтерактивны. MCP передаёт предупреждение Claude, Claude просит вас подтвердить, и при ответе «да» инструмент запускается заново без классификатора. Никаких сбоев в середине конвейера, никакого перезапуска с нуля.

Быстрый старт

Вариант 1 — OAuth (рекомендуется)

Для claude.ai, Claude Code, Cursor и любого MCP-клиента, поддерживающего стандартный процесс OAuth. Не нужно создавать или вставлять API-ключ — клиент обнаруживает сервер авторизации автоматически.

  1. Добавьте Entity Enricher как коннектор (в claude.ai: Настройки → Коннекторы → Добавить пользовательский коннектор или выберите его из каталога) с URL https://entityenricher.ai/api/mcp/.
  2. В браузере откроется экран согласия Entity Enricher — войдите при необходимости и нажмите Авторизовать. Подключение действует от вашего имени с вашей собственной ролью.
  3. Управляйте подключением или отзывайте его в любой момент в разделе API Keys → Connected Apps — отзыв немедленно прекращает доступ.

Вариант 2 — API-ключ (статическая JSON-конфигурация)

Для клиентов, настраиваемых через JSON-файл, а не через интерактивный вход (Claude Desktop, Continue, Zed).

  1. 1. Создайте ключ API
    В веб-интерфейсе Entity Enricher: Настройки → Ключи API → Новый ключ доступа организации. Выберите роль (operator для преимущественно чтения, editor для создания/редактирования схем, owner для полного контроля). Скопируйте значение ent_… — оно показывается только один раз.
  2. 2. Регистрация в вашем MCP-клиенте

    Для Claude Desktop отредактируйте ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или %APPDATA%\Claude\claude_desktop_config.json (Windows):

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

    Перезапустите Claude Desktop. Этот же фрагмент работает в Claude Code, Cursor, Continue и Zed — в любом MCP-совместимом клиенте.

Попробуйте

В новом чате: «Покажи мои схемы Entity Enricher, затем обогати Sanofi по схеме фармацевтической компании с помощью Claude Sonnet.» Claude автоматически обнаруживает инструменты, выбирает нужный, предлагает подтвердить выбор модели и схемы и передаёт результат в потоковом режиме прямо в чат.

Инструменты

54 инструмента покрывают весь набор возможностей: обогащение, создание схем, синхронизацию с базой данных и семантические ID. Поведение идентично REST-эндпоинтам, которые они оборачивают (та же валидация, тарификация, лимиты тарифного плана) — исправление в веб-интерфейсе автоматически появляется и в MCP. Длительные операции (пакетное обогащение, генерация образцов, запуск бенчмарков) выполняются асинхронно: инструмент запуска возвращает job_id, Claude опрашивает get_job_status и после завершения задачи получает сохранённые результаты из ваших записей.

КатегорияИнструментОписание
Обнаружениеlist_modelsПеречислите ключи моделей, номинальные возможности, автоматически выбранные значения по умолчанию и profile_limits вашего тарифа. Предпочитайте автоматический выбор: доступность не гарантирует каждую квоту провайдера или комбинированный режим медиа/инструментов.
Схемыlist_schemasСписок сохранённых JSON-schemas в вашей организации, закреплённые — первыми.
Схемыget_schemaПолучить полное содержимое схемы по UUID.
Схемыgenerate_sampleСоздание 1..N редактируемых образцов контрактов в одном задании (первый определяет набор полей; остальные — быстрые варианты экземпляров с тем же набором полей) в режиме знаний (без вложений, с необязательным веб-поиском) или в режиме источника (вложения авторитетны, а планировщик может задавать вопросы). Согласуйте существенные изменения с пользователем перед созданием схемы.
Схемыcreate_schema_from_sampleСоздание и автоматическое сохранение схемы на основе entity_samples (1..N образцов одного типа сущности — объединение полей, допускающих null там, где они отсутствуют, реальные наблюдаемые примеры), sample_record_id или отредактированных данных вместе со связанными с записью вложениями. Семантические ID включаются по желанию; предложения проверяются и никогда не применяются автоматически.
Схемыsave_schemaСохраните схему, созданную Claude напрямую — без вызова LLM, без затрат, с валидацией на стороне сервера.
Схемыupdate_schemaПереименуйте, замените содержимое, измените теги, закрепите или переключите проверку неоднозначности у сохранённой схемы без вызова LLM.
Схемыget_schema_partПрочитайте часть схемы без полного документа: индекс именованных типов, определение $defs/$enums, поддерево объекта или карточку отдельного свойства с её связями и флагами.
Схемыupdate_schema_propertyИзмените одно свойство по пути — переименование, тип или $ref, описание, примеры, флаги — либо удалите его, с проверкой на стороне сервера; без передачи всего содержимого.
Схемыadd_schema_propertyДобавьте скалярное свойство, вложенный объект или свойство $ref в корень, во вложенный объект или в тип из $defs.
Схемыmove_schema_propertyПеренесите одно свойство в другой контейнер — корень, вложенный объект или тип $defs — с сохранением его флагов и экспертной области.
Схемыpublish_schemaПубликация рабочей копии связанной схемы как контракта, по которому работают обогащение и её синхронизации базы данных. Структурные изменения вступают в силу только здесь — а только что связанная синхронизация ничего не передаёт до первой публикации её схемы. validate_only=true показывает предварительный просмотр различий миграции.
Схемыanalyze_sampleАнализирует образец JSON на имена свойств, допускающие в контексте родителя больше одного прочтения — или ни одного, — и на связанные элементы, смешивающие факты о сущности с фактами по конкретному родителю. Отчёт без сохранения состояния с конкурирующими интерпретациями и предлагаемыми переименованиями; ничего не изменяется.
Схемыanalyze_schemaЗапустите проверки неоднозначности и области идентичности для сохранённой схемы и запишите аннотации по каждому свойству — переписанное описание для каждого неоднозначного имени, поскольку действующую схему нельзя переименовать. По умолчанию выполняется инкрементально, force=true заново анализирует всё.
Схемыdelete_schemaМягко удалите сохранённую схему по UUID.
Обогащениеenrich_entityМультимодельное обогащение с опциональным авто-слиянием. Принимает необязательный список attachment_ids. Несоответствия классификации возвращают ответ без ошибки, чтобы Claude мог попросить пользователя подтвердить и повторить.
Обогащениеstart_batch_enrichmentОбогащайте любое количество сущностей асинхронно — без фиксированного ограничения на размер пакета, только в пределах текущей квоты использования вашего тарифа — полный конвейер для каждой сущности с автоматическим слиянием. Возвращает job_id; результаты попадают в ваши записи.
Обогащениеfetch_entitiesПолучите JSON-массив сущностей из внешнего REST API на стороне сервера (bearer / api_key / basic auth) — сочетается с пакетным обогащением.
Обогащениеretry_expertisesПовторно запустите только неудавшиеся области экспертизы записи, объединив восстановленные значения обратно — без повторной оплаты за уже успешное.
Обогащениеmerge_recordsОбъедините 2+ существующих записей в один результат слияния — на основе правил или с моделью арбитража LLM.
Заданияget_job_statusОпрашивайте асинхронные задачи о прогрессе, результатах, сбоях и уточняющих вопросах. После сбоя совместимости с явно указанной моделью повторите один раз с автоматическим выбором вместо перебора моделей.
Заданияcancel_jobОтмените ожидающее, выполняющееся или приостановленное задание.
Заданияanswer_job_questionОтветьте на уточняющие вопросы приостановленного задания и возобновите его — интерактивная часть generate_sample.
Бенчмаркиlist_benchmark_scenariosСписок ваших сохранённых сценариев бенчмарков (переиспользуемые тесты обогащения).
Бенчмаркиget_benchmark_scenarioОдин сценарий с его оценёнными результатами по каждой модели (качество / затраты / скорость).
Бенчмаркиcreate_benchmark_scenarioСоздайте сценарий: схема + фиксированная сущность + стратегия + оценивающий судья. Требуется роль владельца + тариф с бенчмарками.
Бенчмаркиupdate_benchmark_scenarioОбновите определение теста сценария или конфигурацию оценки; существующие результаты помечаются как устаревшие.
Бенчмаркиset_benchmark_referenceСохраните эталонный результат и отметьте его как проверенный — это требуется перед запуском.
Бенчмаркиdelete_benchmark_scenarioУдалите сценарий и его результаты.
Бенчмаркиrun_benchmarkЗапустите сценарий на явном списке моделей, всех активных моделях выбранных провайдеров или всех активных моделях — каждый результат автоматически оценивается относительно эталона.
Записиlist_recordsПросматривайте постранично записи обогащения, генерации образцов и схем, редактирования схем, песочницы, классификации, арбитража и анализа неоднозначности с фильтрами по успешности, модели, задаче и поиску.
Записиget_recordПолный структурированный вывод + ошибки валидации для одной записи.
Записиget_statsАгрегированная статистика организации: итоги, доля успешных, токены, затраты.
Вложенияupload_attachmentЗагрузите файл в формате base64 и получите его ID вложения плюс требуемую возможность модели. Передача этого ID в generate_sample активирует режим источника.
Вложенияdelete_attachmentУдалить вложение по ID — удобный шаг очистки после обогащения.
Database Synclist_database_syncsСписок синхронизаций базы данных, зарегистрированных для сохранённой схемы, с количеством ожидающих дельт и параметрами каждой синхронизации.
Database Synccreate_database_syncПодключите базу данных к сохранённой схеме, превращая её обогащения в реляционные SQL-дельты для вашего собственного PostgreSQL. Схема связывается неопубликованной, а модель базы данных классифицируется в фоновом режиме — проверьте её, затем publish_schema запускает передачу данных.
Database Syncclassify_database_modelПовторно запустите классификацию модели базы данных после редактирования связанной схемы: LLM предлагает ключ, SQL-тип, индекс и владение для каждого нового или изменённого свойства. Первый проход выполняется автоматически при подключении базы данных.
Database Syncdelete_database_syncУдаление синхронизации базы данных и её дельт в очереди — таблицы вашей реплики остаются нетронутыми. Дополнительные флаги удаления также сбрасывают состояние сущностей и модель базы данных схем, оставшихся без базы данных.
Database Synccreate_database_credential(Пере)выпуск учётных данных sync-client для синхронизации базы данных — этап сопряжения рабочего процесса ee-database, возвращаемый вместе с командами install и pair.
Database Syncfetch_database_deltasПолучение следующего FIFO-окна SQL-дельт для синхронизации базы данных — claim=true берёт его в аренду для доставки с подтверждением, claim=false — это воспроизводимое чтение.
Database Syncack_database_deltasПодтверждение применённых дельт вплоть до указанного id: снимает аренду и применяет параметры очистки синхронизации.
Database Syncassign_sync_hostНазначить (или очистить) хост синхронизации, который разворачивает синхронизацию базы данных в управляемом режиме: хост забирает учётные данные, создаёт физическую базу данных, если её нет, и запускает синхронизацию — без ручного сопоставления.
Database Synclist_entity_statesПросмотр текущего состояния сущностей схемы — дедуплицированные строки по принципу «побеждает последняя запись», которые хранит слой сущностей и зеркалит каждая связанная база данных, а не записи отдельных запусков из list_records.
Database Syncsync_records_to_databaseОтправка сохранённых результатов обогащения в Database Sync схемы — с повторной проверкой по опубликованному контракту и последующим прохождением через шлюз допуска.
Семантические IDlist_semantic_conceptsПросмотр словаря концептов организации с фасетами по типам — либо, при view="duplicates", пар концептов чуть ниже порога разрешения.
Семантические IDget_semantic_conceptПолная информация о концепте: поверхностные формы, ключи источников идентичности, связанные записи и ближайшие соседи со степенью сходства (определены только в пределах его типа концепта и среза модели эмбеддингов).
Семантические IDprobe_semantic_conceptПробный прогон лестницы разрешения для текста — что сделало бы с ним обогащение — без создания чего-либо. Проверьте перед добавлением.
Семантические IDadd_semantic_conceptДобавление концепта с usage 0 или, через alias_of, новой поверхностной формы уже существующего. Отклоняется с указанием текущего концепта, если текст уже покрыт на уровне порога.
Семантические IDupdate_concept_aliasУдаление поверхностной формы концепта или назначение одной из них канонической. Удаление последней поверхностной формы отклоняется — за удаление самого концепта отвечает поток удаления.
Семантические IDimport_semantic_conceptsРазрешение до 1000 текстов идентичности через лестницу обогащения: по умолчанию — отчёт по каждой строке, а при mint=true (владелец) — создание недостающих концептов.
Семантические IDmerge_semantic_conceptsОбъединение одного концепта с другим. impact_only=true (по умолчанию) показывает масштаб последствий; само объединение (владелец) переназначает алиасы и сущности и приводит к сходимости все связанные базы данных.
Семантические IDdelete_semantic_conceptsУдаление концептов по id, целыми типами или только неиспользуемых. impact_only=true (по умолчанию) сначала показывает количество и затронутые схемы и базы данных; удаление самовосстанавливается, но нарушает сходимость с сохранёнными id.
Семантические IDmigrate_semantic_embeddingsСтатус, предпросмотр коллизий, запуск или отмена миграции модели эмбеддингов организации — единственный способ перенести существующие концепты между моделями эмбеддингов.

Режимы генерации образца

Режим знаний

Опустите attachment_ids. Модель создаёт переиспользуемый образец из своих знаний, а enable_web_search=true может подкрепить внешние факты.

Режим источника

Передайте attachment_ids. Планировщик считает файлы авторитетными: он транскрибирует значения из документа или описывает только атрибуты, видимые на фотографии. Поля и дополнительные инструкции не могут добавлять несвязанные внешние факты.

Ваши дополнительные инструкции обязательны к исполнению

Всё, что вы передаёте в дополнительных инструкциях, либо выполняется, либо возвращается с пометкой, что выполнено не было. Если детерминированному правилу пришлось отменить то, о чём вы просили, — например, структуру, которую генератор не может выдать, — завершённая задача содержит список warnings с объяснением. Передавайте их пользователю: именно молча проигнорированная инструкция приводит к незаметно ошибочному образцу.

Для гибридного запроса, например определения автомобиля по фотографии и исследования его публичных появлений, вызовите generate_sample дважды: сначала в режиме источника с выключенным веб-поиском, затем без вложений, используя подтверждённую идентичность и включённый веб-поиск. Объедините результаты в диалоге; Entity Enricher хранит отдельные записи, чтобы наблюдения из источника и исследованные факты сохраняли разное происхождение.

Оставляйте model=auto, если вам явно не нужна конкретная модель. Автоматический выбор учитывает требования задачи, вложений и веб-поиска; даже при наличии ключа модели можно столкнуться с квотой конкретного провайдера или ограничениями комбинированных инструментов.

Одобрите образец, затем проверьте схему

Образец — это контракт

Перед генерацией схемы клиент проверяет область сущности, ключи, типы, кардинальность, отсутствующие репрезентативные поля и вложенные связи. Значимые изменения группируются для вашего одобрения; фактические значения и структура никогда не меняются незаметно.

Выбирайте стабильные семантические ID, когда это полезно

Для реляционных таблиц, мастер-данных, графов знаний или переиспользуемых вложенных сущностей клиент спрашивает, генерировать ли семантические ID. Они требуют модели встраивания организации и добавляют стоимость встраивания, поэтому по умолчанию остаются отключёнными.

Передайте entity_data для нового или отредактированного образца либо sample_record_id, чтобы переиспользовать сохранённый JSON и связанные с ним вложения. Передача обоих использует отредактированный JSON, сохраняя вложения. Явный attachment_ids, включая пустой список, отменяет наследование.

После генерации клиент проверяет соответствие образца, ключи, аннотации, экспертизу, связи и покрытие семантическими ID. Структурные предложения требуют редактирования образца и повторной генерации; изменения только аннотаций также требуют вашего одобрения. Ничего не применяется автоматически.

Ресурсы

Ресурсы позволяют Claude просматривать данные без затрат на вызов инструмента — клиент LLM обращается с ними как с файлами. Оба типа ресурсов отображаются в формате Markdown для дешёвого встроенного показа.

Шаблон URIОписание
enricher://schemas/{schema_id}Сохранённая схема в виде Markdown — заголовок с метаданными + GeneratedJsonSchema как огороженный блок JSON.
enricher://records/{record_id}Прошлая запись обогащения, отображённая в формате Markdown — метаданные + структурированный вывод + ошибки валидации.

Ключевая функция: интерактивное возобновление классификации

Когда вы просите enrich_entity использовать модель классификации, а сущность не соответствует типу схемы, инструмент возвращает не-ошибочный ответ со структурированными деталями. Claude читает его, показывает вам обоснование и (после вашего подтверждения) повторяет попытку с force_after_classification_warning=true — что отключает классификатор при повторе.

{
  "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 и Make автоматически отменяют операцию в этом состоянии, поскольку не могут запросить пользователя в середине конвейера. MCP может, и именно это единственное различие является причиной существования коннектора.

Та же интерактивность обеспечивает второй сценарий: когда generate_sample запускается с исходными документами, его планировщик может приостановиться с уточняющими структурными вопросами. Claude передаёт их вам и возобновляет задачу с помощью answer_job_question — раунд за раундом, пока не будет сгенерирован образец.

Коды ошибок

Ошибки инструментов проецируются в структурированные словари с полем error_code, чтобы Claude мог сопоставлять шаблоны вместо разбора свободного текста. HTTP-уровень отображается однозначно: 402 → ошибка квоты или кредита, 422 → предупреждение классификации, 504 → тайм-аут, 502 → сбой вышестоящего LLM.

error_codeКогда
invalid_requestНекорректный UUID, взаимоисключающие аргументы (schema_id + target_schema) или ошибка валидации тела запроса.
prompt_limit_reachedДневная / недельная / месячная квота на промпты исчерпана (HTTP 402). В теле ответа указаны период, лимит, использовано и требуется.
insufficient_creditsУ организации включена оплата, но баланс кредитов слишком низкий для запуска задания (HTTP 402). Тело ответа содержит баланс и URL для покупки.
model_limit_exceededЗапрошено больше моделей, чем позволяет план (HTTP 402). Возвращает лимит и запрошенное количество.
language_limit_exceededЗапрошено больше языков, чем позволяет план (HTTP 402).
concurrent_job_limit_reachedСлишком много активных задач обогащения для этой организации. Подождите или обновите тарифный план.
classification_warning⚡ Не ошибка: предварительный классификатор отклонил сущность. Ответ содержит контекст классификации, чтобы Claude мог попросить пользователя подтвердить и повторить попытку с force_after_classification_warning=true.
benchmarks_not_in_planИнструменты бенчмарков требуют роли владельца и тарифа, включающего Model Benchmarks (HTTP 403).
ambiguity_check_disabledanalyze_schema вызван для схемы с отключённой проверкой неоднозначности (HTTP 400). Сначала включите её через update_schema с ambiguity_check_enabled=true.
enrichment_timeoutЗадание превысило timeout_seconds. Рекомендуется использовать меньше моделей или разделить сущность.
schema_generation_timeoutГенерация схемы превысила timeout_seconds.
schema_generation_failedОшибка вышестоящего LLM при генерации схемы (HTTP 502).
model_output_invalidМодель вернула результат, не соответствующий схеме (HTTP 502). В теле ответа указаны модель, путь к проблемному свойству и retryable: true — вызовите инструмент повторно или выберите более мощную модель.
cancelledЗадание было отменено во время выполнения (HTTP 499).
not_foundСхема или идентификатор записи не существует в вашей организации.
http_errorУниверсальный обработчик HTTP-ошибок без структурированного тела с деталями.

Намеренные пропуски

См. также