CatchCMS 通过 MCP(Model Context Protocol)向 AI 客户端开放后台操作。企业官网团队可以把一次内容维护拆成可复核的步骤:连接客户端,确认站点与内容,保存原值,提交指定字段,回读并检查公开页面。本教程以官网这条教程本身的中英文更新为实例,展示实际参数结构。
1. 签发访问令牌并连接客户端
超级管理员进入「内容管理 → MCP 访问令牌」,选择启用的后台账号,填写名称和有效天数后创建。有效期支持 1–365 天,默认 90 天。完整 Token 仅在创建结果中显示一次,应立即保存到客户端的安全凭据配置。令牌列表可查看所属账号、创建时间、最近使用时间和到期时间。
在支持 Streamable HTTP 与 Bearer 配置的 MCP 客户端中填写:
- 传输:
Streamable HTTP。 - 端点:
https://你的域名/api/mcp,域名替换为自己的 CatchCMS 服务地址。 - Authorization:
Bearer <创建时复制的完整 Token>。
连接后确认服务信息,以及 search、execute 两个工具可用。令牌沿用所属账号的功能权限与站点授权;到期、撤销或账号停用、删除后访问失效。任务结束或人员权限调整时按实际需要撤销令牌。
2. 先用 search 获取当前操作与 schema
每个待执行操作先交给 search 查找,读取返回的 operation_id、site_required 和 input_schema。下面是调用 search 的参数,查找内容列表操作:
{
"query": "cmsContentsIndex",
"limit": 1
}
然后用 execute 执行已查到的固定 operationId。operation_id、site_id、language、path、query、body 按对应 schema 放在 execute 参数的顶层。这些字段直接组成 execute 工具的参数对象。在这个对象内部额外嵌套 parameters、arguments 或 input 会造成结构错误;原始 MCP JSON-RPC tools/call 请求按协议使用 params.arguments 承载整个工具参数对象。操作目录中的 input_schema 描述 path、query 与 body,site_required=true 的操作必须传顶层 site_id;为 false 时按具体操作规则判断可选上下文。站点列表等平台操作使用其业务参数,省略顶层 site_id 和 language。顶层 language 是请求语言上下文,英文持久更新使用 body.translations.en。本例 en 来自官网绑定英文的实际 code/locale;其他站点使用自身已绑定且启用的实际语言键。当前 schema 是实际执行依据。
3. 读取真实站点、模型与目标内容
先 search 查找 cmsSitesIndex,再 execute 列出当前账号可访问的站点:
{
"operation_id": "cmsSitesIndex"
}
2026 年 10 月 6 日读取的官网记录为 site_id=1,域名为 cms.catchadmin.vip,已绑定中文与英文。随后查找并执行 cmsContentsSchema,传入顶层 site_id: 1 和 query: {"model_id": 1},核对模型 1「官网内容」与栏目 1「产品功能」。这些数字来自本次官网记录;在自己的站点操作时使用查询返回的实际 ID。
查找 cmsContentsIndex 后,用模型、栏目和已有 slug 定位本教程:
{
"operation_id": "cmsContentsIndex",
"site_id": 1,
"query": {
"model_id": 1,
"category_id": 1,
"slug": "mcp-admin-operation-guide"
}
}
列表返回的目标内容 ID 为 53,标题为「CatchCMS MCP 使用教程:连接 AI 并完成内容更新」。slug 属于模糊查询条件,仍需核对每条结果。内容列表要求 query.model_id;使用列表返回的真实内容 ID 作为 path.content。查找 cmsContentsShow 后读取详情:
{
"operation_id": "cmsContentsShow",
"site_id": 1,
"path": {
"content": 53
}
}
把本次请求、原始响应及中文正文、描述、英文翻译保存为任务备份。同时保留标题、slug、发布状态、published_at、模型、栏目与 field_values.schema_type 等原值,便于更新后比较。详情目标由请求中的 site_id 和 path.content,以及返回的 slug、title 共同核对;本次详情的 data 未包含内容 ID。
4. 审核文案并更新中英文指定字段
先核对正文中的产品能力、操作参数与内链,再核对英文是否完整对应中文。明确允许修改的字段后,查找 cmsContentsUpdate,阅读局部更新与翻译合并规则。下例仅提交中文和英文 SEO 描述,文字与本教程这次更新使用的描述一致:
{
"operation_id": "cmsContentsUpdate",
"site_id": 1,
"path": {
"content": 53
},
"body": {
"seo_description": "CatchCMS MCP 实操教程:签发访问令牌,以 Streamable HTTP 与 Bearer 接入客户端,通过 search 获取 schema,在真实官网内容中更新中英文正文和 SEO 描述,保存原值、回读比对并验收公开页面。",
"translations": {
"en": {
"seo_description": "Connect an MCP client to CatchCMS with Streamable HTTP and Bearer authentication. Follow a real bilingual tutorial update: discover schemas, back up content, update copy and SEO descriptions, read back, and check public pages."
}
}
}
}
这段描述示例是本次完整更新参数的子集。本教程的完整更新还在 body.content 提交中文正文,在 body.translations.en.content 提交英文正文;任务范围为两种语言的正文和描述。原有中英文标题、slug、关键词、发布时间、发布状态和 schema_type=TechArticle 保留。局部更新按字段合并,省略字段保留已有值,显式 null 或空字符串按提交值保存。
对自己的内容,可先使用这类描述更新完成练习。每次准备确切文案与目标记录,按照用户已授权的范围执行;产品资料、部署要求和客户案例由业务负责人提供并审核。
5. 回读比对并验收公开页面
先检查 MCP 返回的 isError 与 structuredContent:业务错误也可能出现在 HTTP 200 响应中。内容更新成功时返回的 data 为 true,随后再次执行第 3 步同一个 cmsContentsShow 请求,比对中文正文、seo_description、translations.en.content 和英文描述是否与提交值逐项一致,再核对需要保留的字段。把确切更新参数、执行响应和回读结果连同原值保存。
本教程的公开地址为 中文教程与 英文教程。执行更新后,在匿名访问环境中按以下清单验收:
- 两页 HTTP 状态为 200,标题沿用原值,页面 meta description 与对应语言的新描述一致,正文显示本次修改。
- 每页 canonical 指向本语言的实际地址,语言链接可打开对应中英文页,页面语言与正文一致。
- 正文相关内链可访问,链接语言与上下文相符;本教程的结构化数据类型保持 TechArticle,并检查 BreadcrumbList 等运行时输出的适用数据。
- 在约 390 像素宽的移动端检查段落、代码块、链接与页面宽度,确认 JSON 可读、页面整体横向溢出可控。代码块已经允许换行与独立横向滚动。
内容保存、回读一致和公开页面可访问分别留存验证记录。搜索收录、排名、AI 回答中的实际引用以及咨询线索在上线后单独观察;这些效果需要真实测量与引用证据。
6. 权限与错误处理
search 返回账号有权使用的操作,execute 每次重新检查功能权限与站点范围,写操作留下 MCP 操作日志。出现权限或校验错误时,保留错误信息,核对令牌所属账号、站点分配与 schema 后修正请求。主题上传属于可信代码部署能力,应交给负责开发和部署的人员。
7. 从一次更新扩展到日常维护
本页提供连接、参数与验收步骤;MCP 内容管理介绍适用任务与产品能力。可继续阅读MCP 数据范围、权限与安全、AI 主题开发与AI 主题工具。先完成一条内容的读取、备份、更新、回读与公开验收,再将同样流程用于企业官网的持续内容维护。