io.github.kontent-ai/mcp-server

平台与服务

by kontent-ai

连接 Kontent.ai,通过自然语言管理内容、内容类型、taxonomy 与 workflow。

什么是 io.github.kontent-ai/mcp-server

连接 Kontent.ai,通过自然语言管理内容、内容类型、taxonomy 与 workflow。

README

Kontent.ai MCP Server

NPM Version Contributors Forks Stargazers Issues MIT License Discord

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

🔌 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.
  2. A project - Create a project to work with.
  3. Management API key - Create a key with appropriate permissions.
  4. Environment ID - Get your environment ID.

🛠 Setup Options

You can run the Kontent.ai MCP Server with npx:

STDIO Transport

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

Streamable HTTP Transport

bash
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:

TransportModeAuthenticationUse Case
STDIOSingle-tenantEnvironment variablesLocal communication with a single Kontent.ai environment
Streamable HTTPMulti-tenantBearer token per requestRemote/shared server handling multiple environments

Single-Tenant Mode (STDIO)

Configure credentials via environment variables:

VariableDescriptionRequired
KONTENT_API_KEYYour Kontent.ai key
KONTENT_ENVIRONMENT_IDYour environment ID
appInsightsConnectionStringApplication Insights connection string for telemetry
projectLocationProject location identifier for telemetry tracking
manageApiUrlCustom 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.

VariableDescriptionRequired
PORTPort for HTTP transport (defaults to 3001)
appInsightsConnectionStringApplication Insights connection string for telemetry
projectLocationProject location identifier for telemetry tracking
manageApiUrlCustom 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:

json
{
  "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:

bash
npx @kontent-ai/mcp-server@latest shttp
<details> <summary><strong>VS Code</strong></summary>

Create a .vscode/mcp.json file in your workspace:

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

For secure configuration with input prompts:

json
{
  "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:

json
{
  "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:

bash
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
# 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

📂 Project Structure

  • src/ - Source code
    • tools/ - MCP tool implementations
    • clients/ - Kontent.ai API client setup
    • schemas/ - Data validation schemas
    • utils/ - Utility functions
      • errorHandler.ts - Standardized error handling for MCP tools
      • throwError.ts - Generic error throwing utility
    • server.ts - Main server setup and tool registration
    • bin.ts - Single entry point that handles both transport types

🔍 Debugging

For debugging, you can use the MCP inspector:

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

Or use the MCP inspector on a running streamable HTTP server:

bash
npx @modelcontextprotocol/inspector

This provides a web interface for inspecting and testing the available tools.

📦 Release Process

To release a new version:

  1. Bump the version using npm version [patch|minor|major] - this updates package.json, package-lock.json, and syncs to server.json
  2. Push the commit to your branch and create a pull request
  3. Merge the pull request
  4. Create a new GitHub release with the version number as both name and tag, using auto-generated release notes
  5. Publishing the release triggers an automated workflow that publishes to npm and GitHub MCP registry

License

MIT

常见问题

io.github.kontent-ai/mcp-server 是什么?

连接 Kontent.ai,通过自然语言管理内容、内容类型、taxonomy 与 workflow。

相关 Skills

Slack动图

by anthropics

Universal
热门

面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。

帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。

平台与服务
未扫描165.3k

MCP构建

by anthropics

Universal
热门

聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。

想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。

平台与服务
未扫描165.3k

接口测试套件

by alirezarezvani

Universal
热门

扫描 Next.js、Express、FastAPI、Django REST 的 API 路由,自动生成覆盖鉴权、参数校验、错误码、分页、上传与限流场景的 Vitest 或 Pytest 测试套件。

帮你把API与集成测试自动化跑顺,减少回归漏测;能力全面,尤其适合复杂接口场景的QA团队。

平台与服务
未扫描23.5k

相关 MCP Server

Slack 消息

编辑精选

by Anthropic

热门

Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。

这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。

平台与服务
89.1k

by netdata

热门

io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。

这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。

平台与服务
79.9k

by d4vinci

热门

Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。

这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。

平台与服务
71.9k

评论