Kontent.ai

официальный

Создавайте, управляйте и изучайте ваш контент и контент-модель с помощью естественного языка в любом AI-инструменте, совместимом с MCP.

Что можно делать с Kontent Ai MCP?

  • Изучение структуры контента — Попросите перечислить типы контента, фрагменты, таксономии или ресурсы с помощью list-content-types, list-content-type-snippets, list-taxonomy-groups или list-assets.
  • Создание и изменение моделей контента — Поручите ассистенту создать новые типы контента, фрагменты или группы таксономий либо обновить их с помощью create-content-type, patch-content-type или patch-taxonomy-group.
  • Управление элементами контента и вариантами — Попросите ассистента создавать, обновлять, искать или получать элементы контента и их языковые варианты, используя list-content-item-variants, update-content-item-variant или search-content-item-variants.
  • Контроль публикации и рабочих процессов — Попросите опубликовать, снять с публикации, запланировать или переместить контент по этапам жизненного цикла с помощью publish-content-item-variant, change-content-item-variant-workflow-step или cancel-scheduled-publishing-content-item-variant.
  • Управление настройками среды — Направьте ассистента на управление языками, коллекциями, пространствами или рабочими процессами с использованием create-language, patch-collections, create-space или create-workflow.

Документация

Kontent.ai MCP Server

NPM Version Contributors Forks Stargazers Issues MIT License Discord

Преобразуйте свои операции с контентом с помощью инструментов на базе ИИ для Kontent.ai. Создавайте, управляйте и исследуйте свой структурированный контент через диалоги на естественном языке в вашем любимом редакторе с поддержкой ИИ.

Kontent.ai MCP Server реализует протокол Model Context Protocol для подключения ваших проектов Kontent.ai к ИИ-инструментам, таким как Claude, Cursor и VS Code. Он позволяет моделям ИИ понимать структуру вашего контента и выполнять операции с помощью инструкций на естественном языке.

✨ Ключевые возможности

  • 🚀 Быстрое прототипирование: Преобразуйте ваши диаграммы в живые модели контента за считанные секунды
  • 📈 Визуализация данных: Визуализируйте вашу модель контента в любом нужном вам формате

Содержание

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

🔑 Предварительные требования

Перед использованием MCP-сервера вам понадобятся:

  1. Аккаунт Kontent.aiЗарегистрируйтесь, если у вас его нет.
  2. ПроектСоздайте проект для работы.
  3. Ключ Management APIСоздайте ключ с соответствующими разрешениями.
  4. Идентификатор окруженияПолучите идентификатор окружения.

🛠 Варианты настройки

Вы можете запустить Kontent.ai MCP Server с помощью npx:

STDIO Transport

npx @kontent-ai/mcp-server@latest stdio

Streamable HTTP Transport

npx @kontent-ai/mcp-server@latest shttp

🛠️ Доступные инструменты

Руководство по операциям патча

  • get-patch-guide — 🚨 ОБЯЗАТЕЛЬНО перед любой операцией патча. Получить руководство по операциям патча для Kontent.ai по типу сущности

Управление типами контента

  • get-content-type — Получить тип контента Kontent.ai по ID
  • list-content-types — Получить все типы контента Kontent.ai
  • create-content-type — Создать новый тип контента Kontent.ai
  • patch-content-type — Обновить существующий тип контента Kontent.ai по кодовому имени с помощью операций патча (move, addInto, remove, replace)
  • delete-content-type — Удалить тип контента Kontent.ai по ID

Управление фрагментами типов контента

  • get-content-type-snippet — Получить фрагмент типа контента Kontent.ai по ID
  • list-content-type-snippets — Получить все фрагменты типов контента Kontent.ai
  • create-content-type-snippet — Создать новый фрагмент типа контента Kontent.ai
  • patch-content-type-snippet — Обновить существующий фрагмент типа контента Kontent.ai по ID с помощью операций патча (move, addInto, remove, replace)
  • delete-content-type-snippet — Удалить фрагмент типа контента Kontent.ai по ID

Управление таксономией

  • get-taxonomy-group — Получить группу таксономии Kontent.ai по ID
  • list-taxonomy-groups — Получить все группы таксономии Kontent.ai
  • create-taxonomy-group — Создать новую группу таксономии Kontent.ai
  • patch-taxonomy-group — Обновить группу таксономии Kontent.ai с помощью операций патча (addInto, move, remove, replace)
  • delete-taxonomy-group — Удалить группу таксономии Kontent.ai по ID

Управление элементами контента

  • get-content-item — Получить элемент контента Kontent.ai по ID
  • get-content-item-variant — Получить вариант элемента контента Kontent.ai (языковую версию/перевод). Возвращает текущую версию — черновик, если он существует, в противном случае опубликованную
  • get-published-content-item-variant-version — Получить опубликованную версию варианта элемента контента Kontent.ai. Используйте, когда существует более новая версия черновика, но вам нужен текущий опубликованный (живой) контент
  • get-content-item-translations — Получить все переводы элемента контента Kontent.ai — каждую языковую версию (вариант) конкретного элемента контента
  • list-content-item-variants — Список, фильтрация, поиск элементов контента Kontent.ai с вариантами элементов контента (языковыми версиями/переводами)
  • create-content-item — Создать новый элемент контента Kontent.ai (создаёт только контейнер; используйте create-content-item-variant для добавления языковых версий/переводов)
  • update-content-item — Обновить существующий элемент контента Kontent.ai по ID. Элемент контента должен уже существовать — этот инструмент не создаёт новые элементы
  • delete-content-item — Удалить элемент контента Kontent.ai по ID
  • create-content-item-variant — Создать вариант элемента контента Kontent.ai, назначая текущего пользователя участником. Значения элементов должны соответствовать ограничениям и рекомендациям, определённым в типе контента. Отправляйте только те элементы, которые хотите задать; пропущенные инициализируются пустыми
  • update-content-item-variant — Обновить вариант элемента контента Kontent.ai. Значения элементов должны соответствовать ограничениям и рекомендациям, определённым в типе контента. Отправляйте только те элементы, которые хотите изменить — пропущенные элементы остаются нетронутыми. Для элементов форматированного текста с компонентами отправляйте полный элемент (значение плюс полный массив components, включая компоненты, которые не изменяются)
  • create-new-content-item-variant-version — Создать новую версию варианта элемента контента Kontent.ai. Эта операция создаёт новую версию существующего варианта элемента контента, что полезно для версионирования контента и создания новых черновиков из опубликованного контента
  • delete-content-item-variant — Удалить вариант элемента контента Kontent.ai
  • bulk-get-content-item-variants — Массовое получение элементов контента Kontent.ai с их вариантами по парам ссылок на элемент и язык. Используйте после list-content-item-variants для получения полных данных контента для конкретных пар элемент+язык. Элементы без варианта на запрошенном языке возвращаются без свойства variant. Возвращает постраничные результаты с токеном продолжения
  • search-content-item-variants — ИИ-семантический поиск для нахождения контента по смыслу и концепциям в конкретном варианте элемента контента. Используйте для концептуальных поисков, когда вы не знаете точных ключевых слов. Ограниченные возможности фильтрации (только по ID варианта)

Управление ресурсами

  • get-asset — Получить конкретный ресурс Kontent.ai по ID
  • list-assets — Получить все ресурсы Kontent.ai
  • update-asset — Обновить ресурс Kontent.ai по ID

Управление папками ресурсов

  • list-asset-folders — Список всех папок ресурсов Kontent.ai
  • patch-asset-folders — Изменить папки ресурсов Kontent.ai с помощью операций патча (addInto для добавления новых папок, rename для переименования, remove для удаления папок)

Управление языками

  • list-languages — Получить все языки Kontent.ai (включает как активные, так и неактивные — проверьте свойство is_active)
  • create-language — Создать новый язык Kontent.ai (языки всегда создаются как активные)
  • patch-language — Обновить язык Kontent.ai с помощью операций replace (можно изменять только активные языки — для активации/деактивации используйте веб-интерфейс Kontent.ai)

Управление коллекциями

  • list-collections — Получить все коллекции Kontent.ai. Коллекции задают границы для элементов контента в вашем окружении и помогают организовать контент по командам, брендам или проектам
  • patch-collections — Обновить коллекции Kontent.ai с помощью операций патча (addInto для добавления новых коллекций, move для переупорядочивания, remove для удаления пустых коллекций, replace для переименования)

Управление пространствами

  • list-spaces — Получить все пространства Kontent.ai
  • create-space — Создать новое пространство Kontent.ai для управления веб-сайтом или каналом
  • patch-space — Изменить пространство Kontent.ai с помощью операций replace
  • delete-space — Удалить пространство Kontent.ai

Управление ролями

  • list-roles — Получить все роли Kontent.ai. Требуется тарифный план Enterprise или Flex с разрешением "Управление пользовательскими ролями"

Управление рабочими процессами

  • list-workflows — Получить все рабочие процессы Kontent.ai. Рабочие процессы определяют стадии жизненного цикла контента и переходы между ними
  • create-workflow — Создать новый рабочий процесс Kontent.ai с пользовательскими шагами, переходами, областями действия и разрешениями ролей
  • update-workflow — Обновить существующий рабочий процесс Kontent.ai по ID. Изменяйте шаги, переходы, области действия и разрешения ролей. Нельзя удалить шаги, которые используются
  • delete-workflow — Удалить рабочий процесс Kontent.ai по ID. Рабочий процесс не должен использоваться ни одним элементом контента
  • change-content-item-variant-workflow-step — Изменить шаг рабочего процесса варианта элемента контента в Kontent.ai. Эта операция перемещает вариант элемента контента на другой шаг рабочего процесса, обеспечивая управление жизненным циклом контента, например перемещение контента с черновика на рецензирование, с рецензирования на публикацию и т. д.
  • publish-content-item-variant — Опубликовать или запланировать публикацию варианта элемента контента в Kontent.ai. Эта операция может либо немедленно опубликовать вариант, либо запланировать его публикацию на конкретную дату и время в будущем с возможным указанием часового пояса
  • unpublish-content-item-variant — Снять с публикации или запланировать снятие с публикации варианта элемента контента в Kontent.ai. Эта операция может либо немедленно снять вариант с публикации (сделав его недоступным через Delivery API), либо запланировать снятие с публикации на конкретную дату и время в будущем с возможным указанием часового пояса
  • cancel-scheduled-publishing-content-item-variant — Отменить запланированную публикацию варианта элемента контента в Kontent.ai. Эта операция возвращает вариант, запланированный к публикации, на предыдущий шаг рабочего процесса, позволяя дальнейшее редактирование

⚙️ Конфигурация

Сервер поддерживает два режима, каждый из которых привязан к своему транспорту:

ТранспортРежимАутентификацияСценарий использования
STDIOОднопользовательскийПеременные окруженияЛокальное взаимодействие с одним окружением Kontent.ai
Streamable HTTPМногопользовательскийBearer-токен для каждого запросаУдалённый/общий сервер для нескольких окружений

Однопользовательский режим (STDIO)

Настройте учётные данные через переменные окружения:

ПеременнаяОписаниеОбязательна
KONTENT_API_KEYВаш ключ Kontent.ai
KONTENT_ENVIRONMENT_IDИдентификатор вашего окружения
appInsightsConnectionStringСтрока подключения Application Insights для телеметрии
projectLocationИдентификатор расположения проекта для отслеживания телеметрии
manageApiUrlПользовательский базовый URL (для предварительных окружений)

Многопользовательский режим (Streamable HTTP)

Для транспорта Streamable HTTP учётные данные предоставляются для каждого запроса:

  • Идентификатор окружения как параметр пути URL: /{environmentId}/mcp
  • API-ключ через Bearer-токен в заголовке Authorization: Authorization: Bearer <api-key>

Это позволяет одному экземпляру сервера обрабатывать запросы для нескольких окружений Kontent.ai без необходимости в переменных окружения для учётных данных.

ПеременнаяОписаниеОбязательна
PORTПорт для HTTP-транспорта (по умолчанию 3001)
appInsightsConnectionStringСтрока подключения Application Insights для телеметрии
projectLocationИдентификатор расположения проекта для отслеживания телеметрии
manageApiUrlПользовательский базовый URL (для предварительных окружений)

🔒 Безопасность

Непрямая инъекция промптов

Контент, возвращаемый этим сервером (например, элемент, написанный редактором), может содержать текст, который подключённая LLM интерпретирует как инструкции, — непрямая инъекция промптов. Взломанный агент может быть направлен на деструктивные вызовы инструментов (удаление / снятие с публикации / перезапись) или на утечку неопубликованных черновиков. Это нерешённая проблема всей отрасли, которую сервер не может надёжно устранить, преобразуя возвращаемый контент, поэтому защита многоуровневая:

  • Используйте ключ Management API с минимальными привилегиями. Сервер действует с тем ключом, который ему предоставлен. С ключом только для чтения разрушительный вызов перехваченного агента просто завершится ошибкой на границе API — это самый сильный контроль, поскольку он действует независимо от поведения модели.
  • Держите человека в цикле. Каждый инструмент несёт аннотации MCP — чтения помечены readOnlyHint, инструменты, только создающие данные, являются аддитивными, а инструменты, которые перезаписывают или удаляют данные, помечены destructiveHint — которые соответствующие клиенты используют для автоматического одобрения чтений и запроса подтверждения перед разрушительными вызовами. Запускайте сервер с таким клиентом и избегайте конфигураций с автоматическим одобрением без участия человека при использовании ключа с правом записи.
  • Добавьте клиентский шлюз, если ваш клиент это поддерживает. Некоторые клиенты (например, хуки Claude Code) позволяют детерминированно запрашивать подтверждение перед запуском разрушительного инструмента, независимо от модели. Это настраивается локально; сервер не может это обеспечить.

Это подсказки, а не гарантии. Сообщайте о проблемах безопасности приватно на security@kontent.ai.

🚀 Варианты транспорта

📟 STDIO транспорт

Чтобы запустить сервер с транспортом STDIO, настройте ваш MCP-клиент с:

{
  "kontent-ai-stdio": {
      "command": "npx",
      "args": ["@kontent-ai/mcp-server@latest", "stdio"],
      "env": {
        "KONTENT_API_KEY": "<management-api-key>",
        "KONTENT_ENVIRONMENT_ID": "<environment-id>"
      }
    }
}

🌊 Потоковый HTTP транспорт (мультитенантный)

Потоковый HTTP транспорт обслуживает несколько сред Kontent.ai из одного экземпляра сервера. Каждый запрос предоставляет учетные данные через параметры пути URL и Bearer-аутентификацию.

Сначала запустите сервер:

npx @kontent-ai/mcp-server@latest shttp
VS Code

Создайте файл .vscode/mcp.json в вашем рабочем пространстве:

{
  "servers": {
    "kontent-ai-multi": {
      "uri": "http://localhost:3001/<environment-id>/mcp",
      "headers": {
        "Authorization": "Bearer <management-api-key>"
      }
    }
  }
}

Для безопасной конфигурации с подсказками ввода:

{
  "inputs": [
    {
      "id": "apiKey",
      "type": "password",
      "description": "Kontent.ai API Key"
    },
    {
      "id": "environmentId",
      "type": "text",
      "description": "Environment ID"
    }
  ],
  "servers": {
    "kontent-ai-multi": {
      "uri": "http://localhost:3001/${inputs.environmentId}/mcp",
      "headers": {
        "Authorization": "Bearer ${inputs.apiKey}"
      }
    }
  }
}
Claude Desktop

Обновите файл конфигурации Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Используйте mcp-remote в качестве прокси для добавления заголовков аутентификации:

{
  "mcpServers": {
    "kontent-ai-multi": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:3001/<environment-id>/mcp",
        "--header",
        "Authorization: Bearer <management-api-key>"
      ]
    }
  }
}
Claude Code

Добавьте сервер с помощью CLI:

claude mcp add --transport http kontent-ai-multi \
  "http://localhost:3001/<environment-id>/mcp" \
  --header "Authorization: Bearer <management-api-key>"

Примечание: Вы также можете настроить это в JSON-файле настроек Claude Code с помощью свойств url и headers.

[!ВАЖНО] Замените <environment-id> на ваш ID среды Kontent.ai (GUID) и <management-api-key> на ваш ключ.

💻 Разработка

🛠 Локальная установка

# Clone the repository
git clone https://github.com/kontent-ai/mcp-server.git
cd mcp-server

# Install dependencies
npm ci

# Build the project
npm run build

# Start the server
npm run start:stdio  # For STDIO transport
npm run start:shttp  # For Streamable HTTP transport

# Start the server with automatic reloading (no need to build first)
npm run dev:stdio  # For STDIO transport
npm run dev:shttp  # For Streamable HTTP transport

📂 Структура проекта

  • src/ - Исходный код
    • tools/ - Реализации MCP-инструментов
    • clients/ - Настройка клиента API Kontent.ai
    • schemas/ - Схемы валидации данных
    • utils/ - Утилиты
      • errorHandler.ts - Стандартизированная обработка ошибок для MCP-инструментов
      • throwError.ts - Утилита для выброса общих ошибок
    • server.ts - Основная настройка сервера и регистрация инструментов
    • bin.ts - Единая точка входа, обрабатывающая оба типа транспорта

🔍 Отладка

Для отладки вы можете использовать MCP-инспектор:

npx @modelcontextprotocol/inspector -e KONTENT_API_KEY=<key> -e KONTENT_ENVIRONMENT_ID=<env-id> node path/to/build/bin.js

Или используйте MCP-инспектор на работающем потоковом HTTP-сервере:

npx @modelcontextprotocol/inspector

Это предоставляет веб-интерфейс для проверки и тестирования доступных инструментов.

📦 Процесс выпуска

Чтобы выпустить новую версию:

  1. Увеличьте версию с помощью npm version [patch|minor|major] - это обновит package.json, package-lock.json и синхронизирует с server.json
  2. Отправьте коммит в вашу ветку и создайте pull request
  3. Слейте pull request
  4. Создайте новый релиз GitHub с номером версии в качестве имени и тега, используя автоматически сгенерированные заметки о выпуске
  5. Публикация релиза запускает автоматизированный рабочий процесс, который публикует в npm и реестр MCP GitHub

Лицензия

MIT