mcpField
K
Kontent.ai MCP Server

Kontent.ai MCP Server

本地服务
kontent.ai商业与营销103 周前更新

关于 Kontent.ai MCP Server

Kontent.ai 官方 MCP 服务,让 AI 客户端通过自然语言管理 Kontent.ai 项目中的结构化内容。它涵盖内容模型、内容项、资产和发布工作流,并可将模型可视化。

主要功能

  1. 01管理内容类型与片段
  2. 02创建和更新内容项及语言版本
  3. 03管理分类、资产与语言
  4. 04配置工作流并发布内容
  5. 05语义搜索内容项版本
  6. 06可视化内容模型

适用场景

  1. 01搭建或调整内容模型
  2. 02维护多语言内容项
  3. 03安排内容发布或撤回
  4. 04查找含义相关的内容

MCP 相关

通过 MCP 向 AI 客户端提供 Kontent.ai 内容操作工具。支持 STDIO 单租户连接,以及使用请求凭据的 Streamable HTTP 多租户连接。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kontent-ai": {
"command": "npx",
"args": [
"-y",
"@kontent-ai/mcp-server"
],
"env": {
"KONTENT_API_KEY": "<KONTENT_API_KEY>",
"KONTENT_ENVIRONMENT_ID": "<KONTENT_ENVIRONMENT_ID>",
"PORT": "<PORT>"
}
}
}
}
启动命令npx -y @kontent-ai/mcp-server
需要配置的环境变量
KONTENT_API_KEY密钥Kontent.ai Management API key
KONTENT_ENVIRONMENT_IDKontent.ai environment ID
PORTServer port for HTTP transport (defaults to 3001)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@kontent-ai/mcp-server0.39.0

工具

53

收录的工具列表 · 更新于 3 周前

参数类型必填说明
namestring是项目名称(1~200 个字符)
typeobject是对此项所属内容类型的引用。
type.idstring否
type.external_idstring否
codenamestring否代号(省略时自动生成)
external_idstring否外部 ID
collectionobject否对此项所属集合的引用。
collection.idstring否
collection.external_idstring否

详细介绍

Kontent.ai MCP 服务

NPM Version Contributors Forks Stargazers Issues MIT License Discord

借助专为 Kontent.ai 打造的 AI 工具,革新您的内容运营。在您喜爱的 AI 编辑器中通过自然语言对话,创建、管理和探索结构化内容。

Kontent.ai MCP 服务通过模型上下文协议将 Kontent.ai 项目与 Claude、Cursor 和 VS Code 等 AI 工具连接起来。它让 AI 模型能够理解您的内容结构,并通过自然语言指令执行操作。

✨ 主要功能

  • 🚀 快速原型开发:数秒内将图表转换为实时内容模型
  • 📈 数据可视化:以任意格式可视化您的内容模型

目录

🔌 快速入门

🔑 前提条件

使用 MCP 服务前,您需要:

  1. Kontent.ai 账户 - 如果您还没有账户,请注册。
  2. 项目 - 创建项目以供使用。
  3. Management API 密钥 - 创建密钥,并授予适当的权限。
  4. 环境 ID - 获取您的环境 ID。
🛠 设置选项

您可以使用 npx 运行 Kontent.ai MCP 服务:

STDIO 传输
npx @kontent-ai/mcp-server@latest stdio
Streamable HTTP 传输
npx @kontent-ai/mcp-server@latest shttp

🛠️ 可用工具

Patch 操作指南
  • get-patch-guide – 🚨 执行任何 patch 操作前都必须使用。按实体类型获取 Kontent.ai 的 patch 操作指南
内容类型管理
  • get-content-type – 按 ID 获取 Kontent.ai 内容类型
  • list-content-types – 获取所有 Kontent.ai 内容类型
  • list-content-type-usages – 列出 Kontent.ai 内容类型的使用位置
  • create-content-type – 创建新的 Kontent.ai 内容类型
  • patch-content-type – 使用 patch 操作(move、addInto、remove、replace)按 codename 更新现有 Kontent.ai 内容类型
  • delete-content-type – 按 ID 删除 Kontent.ai 内容类型
内容类型片段管理
  • get-content-type-snippet – 按 ID 获取 Kontent.ai 内容类型片段
  • list-content-type-snippets – 获取所有 Kontent.ai 内容类型片段
  • create-content-type-snippet – 创建新的 Kontent.ai 内容类型片段
  • patch-content-type-snippet – 使用 patch 操作(move、addInto、remove、replace)按 ID 更新现有 Kontent.ai 内容类型片段
  • delete-content-type-snippet – 按 ID 删除 Kontent.ai 内容类型片段
分类管理
  • get-taxonomy-group – 按 ID 获取 Kontent.ai 分类组
  • list-taxonomy-groups – 获取所有 Kontent.ai 分类组
  • create-taxonomy-group – 创建新的 Kontent.ai 分类组
  • patch-taxonomy-group – 使用 patch 操作(addInto、move、remove、replace)更新 Kontent.ai 分类组
  • delete-taxonomy-group – 按 ID 删除 Kontent.ai 分类组
内容项管理
  • get-content-item – 根据 ID 获取 Kontent.ai 内容项
  • 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 – 根据 ID 更新现有 Kontent.ai 内容项。内容项必须已存在 — 此工具不会创建新项
  • delete-content-item – 根据 ID 删除 Kontent.ai 内容项
  • create-content-item-variant – 创建 Kontent.ai 内容项变体,并将当前用户指定为贡献者。元素值必须符合内容类型定义的限制和指南。仅发送要设置的元素;未发送的元素将初始化为空
  • update-content-item-variant – 更新内容项的 Kontent.ai 内容项变体。元素值必须符合内容类型定义的限制和指南。仅发送要更改的元素 — 未发送的元素保持不变。对于包含组件的富文本元素,请提交完整元素(值以及完整的组件数组,包括保持不变的组件)
  • 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 – 通过 AI 语义搜索,在特定内容项变体中按含义和概念查找内容。适用于:不知道确切关键词时进行概念搜索。筛选选项有限(仅限变体 ID)
资源管理
  • get-asset – 根据 ID 获取指定的 Kontent.ai 资源
  • list-assets – 获取所有 Kontent.ai 资源
  • update-asset – 根据 ID 更新 Kontent.ai 资源
资源文件夹管理
  • list-asset-folders – 列出所有 Kontent.ai 资源文件夹
  • patch-asset-folders – 使用 patch 操作修改 Kontent.ai 资源文件夹(addInto 用于添加新文件夹,rename 用于更改名称,remove 用于删除文件夹)
语言管理
  • list-languages – 获取所有 Kontent.ai 语言(包括启用和未启用的语言 — 检查 is_active 属性)
  • create-language – 创建新的 Kontent.ai 语言(语言始终以启用状态创建)
  • patch-language – 使用 replace 操作更新 Kontent.ai 语言(只能修改启用的语言 — 如需启用或停用语言,请使用 Kontent.ai 网页界面)
集合管理
  • list-collections – 获取所有 Kontent.ai 集合。集合用于划定环境中内容项的边界,并帮助按团队、品牌或项目整理内容。
  • patch-collections – 使用补丁操作更新 Kontent.ai 集合(使用 addInto 添加新集合,使用 move 调整顺序,使用 remove 删除空集合,使用 replace 重命名)。
空间管理
  • list-spaces – 获取所有 Kontent.ai 空间。
  • create-space – 创建新的 Kontent.ai 空间,用于管理网站或渠道。
  • patch-space – 使用 replace 操作修补 Kontent.ai 空间。
  • delete-space – 删除 Kontent.ai 空间。
角色管理
  • list-roles – 获取所有 Kontent.ai 角色。需要 Enterprise 或 Flex 计划,并具有“Manage custom roles”权限。
工作流管理
  • list-workflows – 获取所有 Kontent.ai 工作流。工作流定义内容生命周期阶段及其间的转换。
  • create-workflow – 创建新的 Kontent.ai 工作流,并设置自定义步骤、转换、范围和角色权限。
  • update-workflow – 按 ID 更新现有的 Kontent.ai 工作流。可修改步骤、转换、范围和角色权限。无法移除正在使用的步骤。
  • delete-workflow – 按 ID 删除 Kontent.ai 工作流。该工作流不得被任何内容项使用。
  • 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您的环境 ID✅
appInsightsConnectionString用于遥测的 Application Insights 连接字符串❌
projectLocation用于遥测跟踪的项目位置标识符❌
manageApiUrl自定义基础 URL(用于预览环境)❌
多租户模式(Streamable HTTP)

对于 Streamable HTTP 传输,每个请求都会提供凭据:

  • Environment ID 作为 URL 路径参数:/{environmentId}/mcp
  • API Key 通过 Authorization 标头中的 Bearer 令牌提供:Authorization: Bearer <api-key>

这样,单个服务实例就能处理来自多个 Kontent.ai 环境的请求,而无需设置凭据环境变量。

在此传输方式下,KONTENT_API_KEY 和 KONTENT_ENVIRONMENT_ID 会被忽略,即使它们恰好已在服务的环境中设置。每个请求都必须携带自己的凭据;未携带凭据的请求会被拒绝,而不会使用服务自身的凭据处理。

变量描述必需
PORTHTTP 传输端口(默认为 3001)❌
appInsightsConnectionString用于遥测的 Application Insights 连接字符串❌
projectLocation用于遥测跟踪的项目位置标识符❌
manageApiUrl自定义基础 URL(用于预览环境)❌

🔒 安全

间接提示词注入

此服务返回的内容(例如编辑人员撰写的元素)可能包含被已连接的大模型解释为指令的文本,即间接提示词注入。被劫持的 Agent 可能会被引导执行破坏性工具调用(删除/取消发布/覆盖),或泄露未发布的草稿。这是整个行业尚未解决的问题,服务无法通过转换返回的内容来可靠地消除风险,因此需要分层防御:

  • 使用遵循最小权限原则的 Management API 密钥。 服务会使用提供给它的任何密钥。使用只读密钥时,被劫持的 Agent 发出的破坏性调用会直接在 API 边界处失败——这是最有力的控制措施,因为无论模型行为如何,它都能生效。
  • 让人工参与处理流程。 每个工具都带有 MCP 注释——读取操作标记为 readOnlyHint,仅创建工具只会添加数据,覆盖或删除数据的工具标记为 destructiveHint——兼容的客户端会据此自动批准读取操作,并在破坏性调用前提示确认。请将服务与此类客户端搭配使用,并避免在具备写入权限的密钥下采用无头自动批准配置。
  • 如果客户端支持,请添加客户端侧防护。 某些客户端(例如 Claude Code 钩子)支持在破坏性工具运行前确定性地提示确认,而不受模型影响。此配置在本地完成,服务无法强制执行。

这些只是提示,并非保证。请通过 [email protected] 私下报告安全问题。

🚀 传输选项

📟 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>"
      }
    }
}
🌊 Streamable HTTP 传输(多租户)

Streamable 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>"

注意:你也可以在 Claude Code 设置 JSON 中通过 url 和 headers 属性进行配置。

重要

将 <environment-id> 替换为你的 Kontent.ai 环境 ID(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/ - Kontent.ai API 客户端设置
    • schemas/ - 数据验证架构
    • utils/ - 实用函数
      • errorHandler.ts - MCP 工具的标准化错误处理
      • throwError.ts - 通用错误抛出工具
    • app.ts - 用于 Streamable HTTP 传输的 Express 应用工厂
    • 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

也可以在运行中的 Streamable HTTP 服务上使用 MCP 检查器:

npx @modelcontextprotocol/inspector

这会提供一个 Web 界面,用于检查和测试可用工具。

📦 发布流程

要发布新版本:

  1. 使用 npm version [patch|minor|major] 更新版本 - 这会更新 package.json、package-lock.json,并同步到 server.json
  2. 将提交推送到你的分支并创建拉取请求
  3. 合并拉取请求
  4. 使用版本号作为名称和标签,创建新的 GitHub 发布,并使用自动生成的发布说明
  5. 发布会触发自动化工作流,将包发布到 npm 和 GitHub MCP 注册表

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。