Contentful MCP Server
Notice
这是一个社区驱动的服务器!Contentful 发布了一个官方服务器,您可以在 这里 找到它
一个与 Contentful 内容管理 API 集成的 MCP 服务器实现,提供全面的内容管理功能。
- 请注意 *;如果您对代码不感兴趣,只想在 Claude Desktop(或其他能够使用 MCP 服务器的工具)中使用这个 MCP,您不必克隆这个仓库,只需在 Claude Desktop 中设置它,有关如何安装它的说明,请参考“与 Claude Desktop 一起使用”部分。
Features
- 内容管理:条目和资产的完整 CRUD 操作
- 评论管理:创建、检索和管理条目上的评论,支持纯文本和富文本格式,包括线程式对话
- 空间管理:创建、更新和管理空间和环境
- 内容类型:管理内容类型定义
- 本地化:支持多个区域设置
- 发布:控制内容发布工作流
- 批量操作:跨多个条目和资产执行批量发布、下线发布和验证
- 智能分页:列表操作每个请求最多返回 3 个项目,以防止上下文窗口溢出,并内置分页支持
Pagination
为了防止在 LLM 中上下文窗口溢出,列表操作(如 search_entries 和 list_assets)每个请求限制为 3 个项目。每个响应包括:
- 可用项目的总数
- 当前项目页(最多 3 个)
- 剩余项目数量
- 下一页的跳过值
- 提示 LLM 提供检索更多项目的消息
这种分页系统允许 LLM 在保持上下文窗口限制的同时高效处理大型数据集。
Bulk Operations
批量操作功能可同时高效管理多个内容项目:
- 异步处理:操作异步运行并提供状态更新
- 高效内容管理:通过单个 API 调用处理多个条目或资产
- 状态跟踪:通过成功和失败计数监控进度
- 资源优化:减少 API 调用并提高批量操作的性能
这些批量操作工具非常适合内容迁移、批量更新或批量发布工作流。
Tools
Entry Management
- search_entries:使用查询参数搜索条目
- create_entry:创建新条目
- get_entry:检索现有条目
- update_entry:更新条目字段
- delete_entry:删除条目
- publish_entry:发布条目
- unpublish_entry:下线条目
Comment Management
- get_comments:检索条目的评论,可按状态(活跃、已解决、全部)过滤
- create_comment:在条目上创建新评论,支持纯文本和富文本格式。通过提供父评论 ID 支持线程式对话,以回复现有评论
- get_single_comment:通过其 ID 检索条目的特定评论
- delete_comment:从条目中删除特定评论
- update_comment:使用新的正文内容或状态更改更新现有评论
Threaded Comments
评论支持线程功能,以实现结构化对话并绕过 512 字符限制:
- 回复评论:在
create_comment中使用parent参数回复现有评论 - 线程式对话:通过回复特定评论构建对话树
- 扩展讨论:通过创建线程式回复来继续较长的消息,以绕过 512 字符限制
- 对话上下文:通过组织相关评论在线程中,以在讨论中保持上下文
示例用法:
- 创建主评论:
create_comment使用entryId、body和status - 回复该评论:
create_comment使用entryId、body、status和parent(您要回复的评论的 ID) - 继续线程:通过使用其 ID 作为
parent回复线程中的任何评论
Bulk Operations
- bulk_publish:通过单个操作批量发布条目和资产。接受实体数组(条目和资产),并将它们的发布作为批量处理
- bulk_unpublish:通过单个操作批量下线条目和资产。与 bulk_publish 类似,但会从交付 API 中移除内容
- bulk_validate:验证多个条目的内容一致性、引用和必填字段。返回验证结果,但不修改内容
Asset Management
- list_assets:分页列出资产(每页 3 个项目)
- upload_asset:上传新资产并添加元数据
- get_asset:检索资产详情和信息
- update_asset:更新资产元数据和文件
- delete_asset:从空间中删除资产
- publish_asset:将资产发布到交付 API
- unpublish_asset:从交付 API 下线资产
Space & Environment Management
- list_spaces:列出可用空间
- get_space:获取空间详情
- list_environments:列出空间中的环境
- create_environment:创建新环境
- delete_environment:删除环境
Content Type Management
- list_content_types:列出可用内容类型
- get_content_type:获取内容类型详情
- create_content_type:创建新内容类型
- update_content_type:更新内容类型
- delete_content_type:删除内容类型
- publish_content_type:发布内容类型
Development Tools
MCP Inspector
该项目包含一个 MCP Inspector 工具,有助于开发和调试:
- 检查模式:运行
npm run inspect启动检查器,您可以通过访问 http://localhost:5173 打开检查器 - 监视模式:使用
npm run inspect:watch在文件更改时自动重新启动检查器 - 可视化界面:检查器提供了一个 Web 界面来测试和调试 MCP 工具
- 实时测试:立即尝试工具并查看它们的响应
- 批量操作测试:测试和监控批量操作,并提供进度和结果的视觉反馈
该项目还包含一个 npm run dev 命令,该命令在每次更改时重新构建并重新加载 MCP 服务器。
Configuration
Prerequisites
- 在 Contentful 创建一个 Contentful 账户
- 从您的账户设置中生成一个内容管理 API 令牌
Environment Variables
这些变量也可以作为参数设置
CONTENTFUL_HOST/--host:Contentful 内容管理 API 端点(默认为 https://api.contentful.com)CONTENTFUL_MANAGEMENT_ACCESS_TOKEN/--management-token:您的内容管理 API 令牌ENABLE_HTTP_SERVER/--http:设置为“true”以启用 HTTP/SSE 模式HTTP_PORT/--port:HTTP 服务器的端口(默认:3000)HTTP_HOST/--http-host:HTTP 服务器的主机(默认:localhost)DISABLE_AI_ACTIONS:设置为“true”以禁用启动时获取 AI 操作(如果您没有访问此功能,则很有用)
Space and Environment Scoping
您可以将 spaceId 和 EnvironmentId 限定为确保 LLM 仅在定义的 space/env ID 上执行操作。
这主要是为了支持要在特定空间中操作的代理。如果同时设置了 SPACE_ID 和 ENVIRONMENT_ID 环境变量,工具将不会报告需要这些值,并且处理程序将使用环境变量执行 CMA 操作。
您也将失去对空间处理程序中工具的访问权限,因为这些工具跨空间。
您也可以通过使用参数 --space-id 和 --environment-id 添加 SPACE_ID 和 ENVIRONMENT_ID
Using App Identity
除了提供管理令牌外,您还可以利用 App Identity 来处理身份验证。您需要设置并安装一个 Contentful 应用程序,并在调用 MCP 服务器时设置以下参数:
--app-id= 提供 Apptoken 的应用 ID--private-key= 您在用户界面中为应用程序创建的私钥,与app_id关联--space-id= 应用程序安装的空间 ID--environment-id= 应用程序安装的环境 ID(在空间内)
使用这些值后,MCP 服务器将请求临时 AppToken 以在定义的空间/环境 ID 中执行内容操作。这在将此 MCP 服务器用于作为 MCP 客户端的后端系统(如聊天代理)时特别有用
Usage with Claude Desktop
您不需要克隆此仓库来使用此 MCP,只需将其添加到您的 claude_desktop_config.json:
添加或编辑 ~/Library/Application Support/Claude/claude_desktop_config.json
并添加以下行:
{
"mcpServers": {
"contentful": {
"command": "npx",
"args": ["-y", "@ivotoby/contentful-management-mcp-server"],
"env": {
"CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<Your CMA token>"
}
}
}
}
如果您的 MCPClient 不支持设置环境变量,您也可以像这样使用参数设置管理令牌:
{
"mcpServers": {
"contentful": {
"command": "npx",
"args": [
"-y",
"@ivotoby/contentful-management-mcp-server",
"--management-token",
"<your token>",
"--host",
"http://api.contentful.com"
]
}
}
}
Installing via Smithery
要通过 Smithery 自动安装 Claude Desktop 的 Contentful 管理服务器:
npx -y @smithery/cli install @ivotoby/contentful-management-mcp-server --client claude
Developing and using Claude desktop
如果您想贡献并测试 Claude 对您的贡献的处理方式;
- 运行
npm run dev,这将启动监视器,在每次更改时重新构建 MCP 服务器 - 更新
claude_desktop_config.json以直接引用项目,即:
{
"mcpServers": {
"contentful": {
"command": "node",
"args": ["/Users/ivo/workspace/contentful-mcp/bin/mcp-server.js"],
"env": {
"CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<Your CMA Token>"
}
}
}
}
这将允许您直接使用 Claude 测试 MCP 服务器的任何修改,但是;如果您添加了新的工具/资源,您将需要重新启动 Claude Desktop
Transport Modes
MCP 服务器支持两种传输模式:
stdio Transport
默认传输模式使用标准输入/输出流进行通信。这对于支持 stdio 传输模式的 MCP 客户端(如 Claude Desktop)是理想的。
要使用 stdio 模式,只需运行服务器而不带 --http 标志:
npx -y contentful-mcp --management-token YOUR_TOKEN
# 或者
npx -y @ivotoby/contentful-management-mcp-server --management-token YOUR_TOKEN
StreamableHTTP Transport
服务器还支持 MCP 协议中定义的 StreamableHTTP 传输模式。这种模式适用于基于 Web 的集成或在作为独立服务运行服务器时。
要使用 StreamableHTTP 模式,运行带有 --http 标志:
npx -y contentful-mcp --management-token YOUR_TOKEN --http --port 3000
# 或者
npx -y @ivotoby/contentful-management-mcp-server --management-token YOUR_TOKEN --http --port 3000
StreamableHTTP Details
- 使用官方 MCP StreamableHTTP 传输
- 支持标准 MCP 协议操作
- 包含会话管理以维护状态
- 正确处理 initialize/notify 模式
- 与标准 MCP 客户端兼容
- 用现代方法替换已弃用的 SSE 传输
实现遵循标准 MCP 协议规范,允许任何 MCP 客户端无需特殊处理即可连接到服务器。
Error Handling
服务器实现了全面的错误处理,用于:
- 身份验证失败
- 速率限制
- 无效请求
- 网络问题
- API 特定错误
License
MIT License
Fine print
此 MCP 服务器使 Claude(或其他可以消费 MCP 资源的代理)能够更新、删除内容、空间和内容模型。因此,请务必确保您允许 Claude 对您的 Contentful 空间做什么!
此 MCP-server 尚未得到 Contentful 的官方支持
