Kontent.ai
About
Create, manage, and explore your content and content model using natural language in any MCP-compatible AI tool.
Details
- Author
- kontent-ai
- GitHub stars
- 8
- Downloads
- 569
- Categories
- Cloud Service, Infrastructure, Developer Tools, Other
Jump to
- Rapid prototyping: transform diagrams into live content models in seconds
- Data visualization: visualize your content model in any format
- Manage content types, snippets, taxonomies, and languages
- Create, update, and publish content items with variants
- Manage content lifecycle workflows and roles
- Search and bulk retrieve content item variants
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Kontent.aiCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Run the server with npx using the desired transport: npx @kontent-ai/mcp-server@latest stdio for local single‑tenant use, or npx @kontent-ai/mcp-server@latest shttp for a remote multi‑tenant server. For STDIO, configure credentials via environment variables (KONTENT_API_KEY, KONTENT_ENVIRONMENT_ID). For Streamable HTTP, pass the environment ID as a URL path parameter and the API key as a Bearer token.
create-content-item
Create (add) new Kontent.ai content item (creates the container only, use create-content-item-variant to add language versions/translations). Items are language-neutral and hold content item variants for each language.
create-content-type-snippet
Build (upsert) a new Kontent.ai content type snippet from scratch — a reusable set of elements you can include in multiple content types. Use this to add a snippet that does not yet exist.
create-content-type
Build a new Kontent.ai content type (schema/model) from scratch — define its elements, validation rules, and content groups. Use this to add a content type that does not yet exist.
create-language
Create (add) and configure new Kontent.ai language locale for translations and localization. Languages are always created as active.
create-space
Create (add) new Kontent.ai space for managing a website or channel. Spaces provide channel-specific context with their own domain and preview URLs.
create-taxonomy-group
Create (add) new Kontent.ai taxonomy group for content categorization. Taxonomy groups contain hierarchical terms (categories/tags) for classifying content.
create-workflow
Create (add) new Kontent.ai workflow with custom steps. Workflows define content lifecycle stages for review and approval.
bulk-get-content-item-variants
Bulk/batch retrieve full details and content for multiple (2 or more) Kontent.ai content item variants by item and language reference pairs. Fetch full content for several items whose IDs were found via other tools.
cancel-scheduled-publishing-content-item-variant
Cancel scheduled publishing of Kontent.ai content item variant (language version/translation). Reverts variant back to previous workflow step, enabling further edits.
change-content-item-variant-workflow-step
Move Kontent.ai content item variant (language version/translation) to a different workflow step. Transition content between lifecycle stages (e.g., draft to review, review to approved/published, or archive).
create-content-item-variant
Create Kontent.ai content item variant — translate and localize content into a specific language. Adds a new language version (translation) for a content item. Send only the elements you want to set (omitted ones initialize with default value). Element values must fulfill the content type definition.
create-new-content-item-variant-version
Create new draft version of a published Kontent.ai content item variant (language version/translation). Required before editing published content.
delete-content-item
Delete (remove) Kontent.ai content item and all its content item variants.
delete-content-type-snippet
Delete (remove) Kontent.ai content type snippet by ID. Removes the reusable shared element set definition.
delete-content-type
Delete (remove) Kontent.ai content type by ID. Removes the schema/model definition.
delete-content-item-variant
Delete (remove) Kontent.ai content item variant (language version/translation). Removes translated content for a specific language from an item.
delete-space
Delete (remove) Kontent.ai space by ID. Removes the channel/website context.
delete-taxonomy-group
Delete (remove) Kontent.ai taxonomy group by ID. Removes the category/tag group and all its terms.
delete-workflow
Delete (remove) Kontent.ai workflow. Cannot delete the default workflow.
get-asset
Retrieve Kontent.ai asset by ID. Assets are digital media files (images, videos, documents, PDFs) standalone, or referenced from other entities, typically content item variants.
get-content-item
Retrieve (fetch) a single Kontent.ai content item by ID — returns its details: name, codename, and content type. Items are language-neutral containers; one item has multiple content item variants (translations). Do NOT call this in a loop to identify an item among several candidates by name — narrow down first with list-content-item-variants's search_phrase filter.
get-content-type-snippet
Retrieve Kontent.ai content type snippet. Snippets are reusable, shared sets of elements included across multiple content types.
get-content-type
Retrieve (fetch) a single Kontent.ai content type by ID — its schema/model definition. Content types define content structure: elements, field validation rules, and content groups.
get-content-item-translations
Get all Kontent.ai content item translations — every language version (variant) of a specific content item. Returns each language's current version (draft if one exists, otherwise the last one saved), which may differ from the version currently live on the Delivery API. Retrieve translated content across all languages to examine details of a specific item in translation scenarios, rather than to search for items — for finding or disambiguating among candidates, use list-content-item-variants's search_phrase filter.
get-content-item-variant
Retrieve a single Kontent.ai content item variant (language version/translation) by item and language ID. Returns the current version — draft if one exists, otherwise published.
get-patch-guide
REQUIRED before any patch operation. Returns operation constraints and caveats not visible in the patch tool schemas — including unsupported operations, conditions under which operations fail, and ordering rules. Call this before constructing any patch.
get-published-content-item-variant-version
Retrieve the published (live) version and details of a Kontent.ai content item variant, exactly as served on the Delivery API right now, even when a newer draft version exists.
get-taxonomy-group
Retrieve Kontent.ai taxonomy group by ID or codename. Taxonomy groups provide a classification hierarchy of tree-structured terms (categories/tags) that can be nested to any depth for content categorization.
list-asset-folders
List all Kontent.ai asset folders. Folders organize digital media files (images, videos, documents) into a hierarchical directory structure.
list-assets
List all Kontent.ai assets (paginated). Assets are digital media files (images, videos, documents, PDFs) referenced in content items.
list-collections
List all Kontent.ai collections. Collections organize and group content items by team, brand, or project for access control and content separation.
list-content-type-snippets
List all Kontent.ai content type snippets (paginated). Retrieve every content type snippet — reusable, shared sets of elements included across multiple content types.
list-content-types
List all Kontent.ai content types (paginated). Retrieve every content type (schema/model) definition. Get an overview of all content type models, their elements, field validation rules, and content groups.
list-content-item-variants
List, find, filter Kontent.ai content items with content item variants (language versions/translations), returning lightweight item ID + language ID references for further lookup. Filter by content item content type, collection, space, workflow step, taxonomy, contained content component content type, or publishing state. Search items and variants by EXACT keyword matching (terms use OR). Use search-content-item-variants when you know what content is *about* (topic, theme) rather than its name or identity.
list-languages
List all Kontent.ai languages (paginated), including inactive ones - check is_active property. Languages define available locales for translations and localization; each can have fallback language for content inheritance.
list-roles
List all Kontent.ai roles. Roles define user permissions and access control within the environment.
list-spaces
List all Kontent.ai spaces. Spaces provide channel-specific site configuration for managing multiple websites/channels. Each space has its own domain and preview URLs; collections connect to spaces to organize content per channel.
list-taxonomy-groups
List all Kontent.ai taxonomy groups (paginated). Taxonomy groups contain hierarchical tree-structured terms (categories/tags) that can be nested to any depth for content categorization and classification.
list-workflows
List all Kontent.ai workflows and their steps. Workflows define content lifecycle stages: draft, review, approval, published, scheduled, archived.
patch-asset-folders
Update (modify/edit) Kontent.ai asset folders using patch operations. Always call get-patch-guide(entityType='asset-folder') first — it documents constraints not visible in this schema that the API enforces.
patch-collections
Update (modify/edit) Kontent.ai collections using patch operations. Always call get-patch-guide(entityType='collection') first — it documents constraints not visible in this schema that the API enforces.
patch-content-type-snippet
Update (modify/edit) Kontent.ai content type snippet using patch operations (add, move, remove, replace elements/fields). Add new fields to an existing snippet, or rearrange or remove existing elements. Always call get-patch-guide(entityType='snippet') first for operations reference.
patch-content-type
Update (modify/edit) Kontent.ai content type schema using patch operations (add, move, remove, replace elements/fields). Add new fields, rearrange or remove existing elements. Always call get-patch-guide(entityType='content-type') first for operations reference.
patch-language
Update (modify/edit) Kontent.ai language properties using replace patch operations. Always call get-patch-guide(entityType='language') first — it documents constraints and available properties not visible in this schema.
patch-space
Update (modify/edit) Kontent.ai space properties using replace patch operations. Always call get-patch-guide(entityType='space') first for operations reference.
patch-taxonomy-group
Update (modify/edit) and organize Kontent.ai taxonomy group terms using patch operations. Always call get-patch-guide(entityType='taxonomy') first — it documents ordering rules and constraints not visible in this schema.
publish-content-item-variant
Publish or schedule publishing of Kontent.ai content item variant (language version/translation). Transitions content to the published workflow step, making it live. For scheduling, verify current UTC time before using scheduledTo.
search-content-item-variants
AI semantic search for Kontent.ai content items with content item variants (language versions/translations) by topic, theme, or meaning. Use when you know what content is *about* — not when looking for an item by name or title; use list-content-item-variants for that. Returns lightweight references, top 50 results max. This feature may be unavailable.
unpublish-content-item-variant
Unpublish or schedule unpublishing of Kontent.ai content item variant (language version/translation). Takes content offline and archives it. For scheduling, verify current UTC time before using scheduledTo.
update-asset
Update (edit) Kontent.ai asset metadata by ID. Modify asset title, descriptions, or taxonomy-based properties.
update-content-item
Update (edit/rename) Kontent.ai content item metadata: name, collection.
update-content-item-variant
Update Kontent.ai content item variant (language version/translation). Send only the elements you want to change — omitted elements are left untouched on the existing variant. Values must fulfill validation rules defined in the content type.
update-workflow
Update (edit) Kontent.ai workflow steps, transitions, and settings. Modify content lifecycle stages.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"kontent.ai": {
"kontent-ai-stdio": {
"command": "npx",
"args": [
"@kontent-ai/mcp-server@latest",
"stdio"
],
"env": {
"KONTENT_API_KEY": "<management-api-key>",
"KONTENT_ENVIRONMENT_ID": "<environment-id>"
}
}
}
}
}
McpServers
{
"kontent-ai-stdio": {
"command": "npx",
"args": [
"@kontent-ai/mcp-server@latest",
"stdio"
],
"env": {
"KONTENT_API_KEY": "<management-api-key>",
"KONTENT_ENVIRONMENT_ID": "<environment-id>"
}
}
}
Kontent.ai MCP Server
[![NPM Version][npm-shield]][npm-url]
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
[![Discord][discord-shield]][discord-url]
> Transform your content operations with AI-powered tools for Kontent.ai. Create, manage, and explore your structured content through natural language conversations in your favorite AI-enabled editor.
Kontent.ai MCP Server implements the Model Context Protocol to connect your Kontent.ai projects with AI tools like Claude, Cursor, and VS Code. It enables AI models to understand your content structure and perform operations through natural language instructions.
✨ Key Features
🚀 Rapid prototyping: Transform your diagrams into live content models in seconds
📈 Data Visualisation: Visualise your content model in any format you want
Table of Contents
- ✨ Key Features
- 🔌 Quickstart
- 🛠️ Available Tools
- ⚙️ Configuration
- 🔒 Security
- 🚀 Transport Options
- 💻 Development
- 🛠 Local Installation
- 📂 Project Structure
- 🔍 Debugging
- 📦 Release Process
- License
🔌 Quickstart
🔑 Prerequisites
Before you can use the MCP server, you need:
1. A Kontent.ai account - Sign up if you don't have an account.
1. A project - Create a project to work with.
1. Management API key - Create a key with appropriate permissions.
1. Environment ID - Get your environment ID.
🛠 Setup Options
You can run the Kontent.ai MCP Server with npx:
STDIO Transport
npx @kontent-ai/mcp-server@latest stdio
Streamable HTTP Transport
npx @kontent-ai/mcp-server@latest shttp
🛠️ Available Tools
Patch Operations Guide
get-patch-guide – 🚨 REQUIRED before any patch operation. Get patch operations guide for Kontent.ai by entity type
Content Type Management
get-content-type – Get Kontent.ai content type by ID
list-content-types – Get all Kontent.ai content types
create-content-type – Create new Kontent.ai content type
patch-content-type – Update an existing Kontent.ai content type by codename using patch operations (move, addInto, remove, replace)
delete-content-type – Delete a Kontent.ai content type by ID
Content Type Snippet Management
get-content-type-snippet – Get Kontent.ai content type snippet by ID
list-content-type-snippets – Get all Kontent.ai content type snippets
create-content-type-snippet – Create new Kontent.ai content type snippet
patch-content-type-snippet – Update an existing Kontent.ai content type snippet by ID using patch operations (move, addInto, remove, replace)
delete-content-type-snippet – Delete a Kontent.ai content type snippet by ID
Taxonomy Management
get-taxonomy-group – Get Kontent.ai taxonomy group by ID
list-taxonomy-groups – Get all Kontent.ai taxonomy groups
create-taxonomy-group – Create new Kontent.ai taxonomy group
patch-taxonomy-group – Update Kontent.ai taxonomy group using patch operations (addInto, move, remove, replace)
delete-taxonomy-group – Delete Kontent.ai taxonomy group by ID
Content Item Management
get-content-item – Get Kontent.ai content item by ID
get-content-item-variant – Retrieve Kontent.ai content item variant (language version/translation). Returns the current version — draft if one exists, otherwise published
get-published-content-item-variant-version – Retrieve the published version of a Kontent.ai content item variant. Use when a newer draft version exists but you need the currently published (live) content
get-content-item-translations – Get all Kontent.ai content item translations — every language version (variant) of a specific content item
list-content-item-variants – List, filter, search Kontent.ai content items with content item variants (language versions/translations)
create-content-item – Create new Kontent.ai content item (creates the container only, use create-content-item-variant to add language versions/translations)
update-content-item – Update existing Kontent.ai content item by ID. The content item must already exist - this tool will not create new items
delete-content-item – Delete Kontent.ai content item by ID
create-content-item-variant – Create Kontent.ai content item variant assigning current user as contributor. Element values must fulfill limitations and guidelines defined in content type. Send only the elements you want to set; omitted ones initialize empty
update-content-item-variant – Update Kontent.ai content item variant of a content item. Element values must fulfill limitations and guidelines defined in content type. Send only the elements you want to change — omitted elements are left untouched. For rich-text elements with components, submit the full element (value plus the complete components array, including components that are left untouched)
create-new-content-item-variant-version – Create new version of Kontent.ai content item variant. This operation creates a new version of an existing content item variant, useful for content versioning and creating new drafts from published content
delete-content-item-variant – Delete Kontent.ai content item variant
bulk-get-content-item-variants – Bulk get Kontent.ai content items with their content item variants by item and language reference pairs. Use after list-content-item-variants to retrieve full content data for specific item+language pairs. Items without a variant in the requested language return the item without the variant property. Returns paginated results with continuation token
search-content-item-variants – AI-powered semantic search for finding content by meaning and concepts in a specific content item variant. Use for: conceptual searches when you don't know exact keywords. Limited filtering options (variant ID only)
Asset Management
get-asset – Get a specific Kontent.ai asset by ID
list-assets – Get all Kontent.ai assets
update-asset – Update Kontent.ai asset by ID
Asset Folder Management
list-asset-folders – List all Kontent.ai asset folders
patch-asset-folders – Modify Kontent.ai asset folders using patch operations (addInto to add new folders, rename to change names, remove to delete folders)
Language Management
list-languages – Get all Kontent.ai languages (includes both active and inactive - check is_active property)
create-language – Create new Kontent.ai language (languages are always created as active)
patch-language – Update Kontent.ai language using replace operations (only active languages can be modified - to activate/deactivate, use the Kontent.ai web UI)
Collection Management
list-collections – Get all Kontent.ai collections. Collections set boundaries for content items in your environment and help organize content by team, brand, or project
patch-collections – Update Kontent.ai collections using patch operations (addInto to add new collections, move to reorder, remove to delete empty collections, replace to rename)
Space Management
list-spaces – Get all Kontent.ai spaces
create-space – Create new Kontent.ai space for managing a website or channel
patch-space – Patch Kontent.ai space using replace operations
delete-space – Delete Kontent.ai space
Role Management
list-roles – Get all Kontent.ai roles. Requires Enterprise or Flex plan with "Manage custom roles" permission
Workflow Management
list-workflows – Get all Kontent.ai workflows. Workflows define the content lifecycle stages and transitions between them
create-workflow – Create new Kontent.ai workflow with custom steps, transitions, scopes, and role permissions
update-workflow – Update an existing Kontent.ai workflow by ID. Modify steps, transitions, scopes, and role permissions. Cannot remove steps that are in use
delete-workflow – Delete a Kontent.ai workflow by ID. The workflow must not be in use by any content items
change-content-item-variant-workflow-step – Change the workflow step of a content item variant in Kontent.ai. This operation moves a content item variant to a different step in the workflow, enabling content lifecycle management such as moving content from draft to review, review to published, etc.
publish-content-item-variant – Publish or schedule a content item variant of a content item in Kontent.ai. This operation can either immediately publish the variant or schedule it for publication at a specific future date and time with optional timezone specification
unpublish-content-item-variant – Unpublish or schedule unpublishing of a content item variant of a content item in Kontent.ai. This operation can either immediately unpublish the variant (making it unavailable through the Delivery API) or schedule it for unpublishing at a specific future date and time with optional timezone specification
⚙️ Configuration
The server supports two modes, each tied to its transport:
| Transport | Mode | Authentication | Use Case |
|-----------|------|----------------|----------|
| STDIO | Single-tenant | Environment variables | Local communication with a single Kontent.ai environment |
| Streamable HTTP | Multi-tenant | Bearer token per request | Remote/shared server handling multiple environments |
Single-Tenant Mode (STDIO)
Configure credentials via environment variables:
| Variable | Description | Required |
|----------|-------------|----------|
| KONTENT_API_KEY | Your Kontent.ai key | ✅ |
| KONTENT_ENVIRONMENT_ID | Your environment ID | ✅ |
| appInsightsConnectionString | Application Insights connection string for telemetry | ❌ |
| projectLocation | Project location identifier for telemetry tracking | ❌ |
| manageApiUrl | Custom base URL (for preview environments) | ❌ |
Multi-Tenant Mode (Streamable HTTP)
For the Streamable HTTP transport, credentials are provided per request:
- Environment ID as a URL path parameter: /{environmentId}/mcp
- API Key via Bearer token in the Authorization header: Authorization: Bearer <api-key>
This allows a single server instance to handle requests for multiple Kontent.ai environments without requiring credential environment variables.
| Variable | Description | Required |
|----------|-------------|----------|
| PORT | Port for HTTP transport (defaults to 3001) | ❌ |
| appInsightsConnectionString | Application Insights connection string for telemetry | ❌ |
| projectLocation | Project location identifier for telemetry tracking | ❌ |
| manageApiUrl | Custom base URL (for preview environments) | ❌ |
🔒 Security
Indirect prompt injection
Content returned by this server (for example, an element written by an editor) can contain text that a connected LLM interprets as instructions — indirect prompt injection. A hijacked agent could be steered into destructive tool calls (delete / unpublish / overwrite) or into leaking unpublished drafts. This is an industry-wide, unsolved problem that the server cannot reliably fix by transforming the content it returns, so defense is layered:
- Use a least-privilege Management API key. The server acts with whatever key it is given. With a read-only key, a hijacked agent's destructive call simply fails at the API boundary — the strongest control, since it holds regardless of model behaviour.
- Keep a human in the loop. Every tool carries MCP annotations — reads are readOnlyHint, create-only tools are additive, and tools that overwrite or remove data are destructiveHint — which compliant clients use to auto-approve reads and prompt before destructive calls. Run the server with such a client and avoid headless auto-approve setups against a write-capable key.
- Add a client-side gate if your client supports one. Some clients (for example, Claude Code hooks) let you deterministically prompt before a destructive tool runs, independent of the model. This is configured locally; a server cannot enforce it.
These are hints, not guarantees. Report security issues privately to security@kontent.ai.
🚀 Transport Options
📟 STDIO Transport
To run the server with STDIO transport, configure your MCP client with:
{
"kontent-ai-stdio": {
"command": "npx",
"args": ["@kontent-ai/mcp-server@latest", "stdio"],
"env": {
"KONTENT_API_KEY": "<management-api-key>",
"KONTENT_ENVIRONMENT_ID": "<environment-id>"
}
}
}
🌊 Streamable HTTP Transport (Multi-Tenant)
Streamable HTTP transport serves multiple Kontent.ai environments from a single server instance. Each request provides credentials via URL path parameters and Bearer authentication.
First start the server:
npx @kontent-ai/mcp-server@latest shttp
<details>
<summary><strong>VS Code</strong></summary>
Create a .vscode/mcp.json file in your workspace:
{
"servers": {
"kontent-ai-multi": {
"uri": "http://localhost:3001/<environment-id>/mcp",
"headers": {
"Authorization": "Bearer <management-api-key>"
}
}
}
}
For secure configuration with input prompts:
{
"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}"
}
}
}
}
</details>
<details>
<summary><strong>Claude Desktop</strong></summary>
Update your Claude Desktop configuration file:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%\Claude\claude_desktop_config.json
- Linux: ~/.config/Claude/claude_desktop_config.json
Use mcp-remote as a proxy to add authentication headers:
{
"mcpServers": {
"kontent-ai-multi": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:3001/<environment-id>/mcp",
"--header",
"Authorization: Bearer <management-api-key>"
]
}
}
}
</details>
<details>
<summary><strong>Claude Code</strong></summary>
Add the server using the CLI:
claude mcp add --transport http kontent-ai-multi \
"http://localhost:3001/<environment-id>/mcp" \
--header "Authorization: Bearer <management-api-key>"
> Note: You can also configure this in your Claude Code settings JSON with the url and headers properties.
</details>
> [!IMPORTANT]
> Replace <environment-id> with your Kontent.ai environment ID (GUID) and <management-api-key> with your key.
💻 Development
🛠 Local Installation
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





