我不想再在自己的网站上“硬挂”另一个通用型 CMS。以我的经验,这种搭建方式总会带来摩擦。我想要的是一种 mcp cms:它感觉像产品的一部分,而不是每天都要跟它“对抗”的外部系统。
本文解释了我如何用 mcp cms(Next.js、Supabase、MCP 和 agent flows)来构建系统。我会讲清架构、工具层、管理后台,以及内容流水线,让你看到整个系统在实践中如何运作。
为什么我选择构建 MCP CMS,而不是使用通用的无头栈
我把网站和 CMS 放在同一个 Next.js 应用里构建,因为我想要一个代码库、一个数据模型、以及一个发布流程。我已经用过足够多彼此割裂的技术栈,知道它们会多快地变成维护债务。当你的前端、CMS 和自动化层分别部署在不同地方时,每一次改动都会比应该花的时间更多。
我的 mcp cms 把公开站点、管理 UI、API 路由以及 AI 工具都放在同一个产品边界内。这意味着我可以在不跨越三个系统的情况下,修改 SEO 元数据、本地化或文章逻辑。我也避免了常见的“同步问题”:内容在一个工具里,而真正的逻辑却在另一个地方。
在实践中,这让我迭代更快、边角处更少出错。它也更容易观察,因为每一次写入动作都会流经同一层。如果你想了解我如何思考面向运营的内容系统,我关于 在 Next.js 中使用带 Search Console 的多智能体内容流水线(Multi-Agent Content Pipeline in Next.js With Search Console) 的文章展示了该工作流的研究侧。
系统背后的核心想法
核心想法很简单:CMS 应该像产品一样工作,而不是像表单搭建器。我想要的是类型化内容、可控的写入,以及一层自动化,能让我更快发布,同时不丢失监督能力。这就是为什么我把架构保持得严格、边界保持得清晰。
我从传统 CMS 改了什么
传统 CMS 通常会把内容编辑和产品代码库分开。听起来很灵活,但当网站变得更“定制化”之后,它往往会拖慢团队。我的 mcp cms 移除了这种拆分。我现在可以在一个地方管理内容、SEO 和工作流逻辑,从而在更少的开销下获得更大的杠杆。
MCP CMS 如何使用 MCP 作为控制层
最重要的决定是把 MCP 放在系统中间。我不想让 AI 功能被困在某一个聊天窗口或某一个仪表盘里。我想要一个可复用的命令层,它能从不同客户端与同一套后端规则通信。
因此我同时构建了一个独立的 MCP 服务器,以及一个应用内的 MCP 路由。通过 mcp cms 暴露出来的工具包括:博客 CRUD、发布、SEO 分析、文章生成、研究、图片生成,以及站点地图检查。换句话说,agent 层不会“猜”该做什么。它会调用真正的工具,并带着真正的状态。
这种做法与 Model Context Protocol specification 相一致,也符合我喜欢的内部系统组织方式:一个契约、多个客户端、没有重复。它也让在管理后台和外部 MCP 客户端中复用同一套动作变得很容易。
我通过 MCP 暴露的工具
工具面板的覆盖范围是刻意设计的。我希望智能体去做有用的工作,而不仅仅是聊天。
这种工具设计就是 mcp cms 的骨架。它让系统保持可组合,并让每一次操作都可被观察。
为什么这种架构在真实工作中很重要
在我构建网站和内容系统的过程中,最大的瓶颈通常不是“写”。瓶颈是协调。MCP 会降低这种协调成本,因为同一个动作可以从仪表盘调用,也可以从聊天界面调用,或者从另一个 agent flow 调用。结果就是:我花更少时间重复步骤,把更多时间用于提升产出质量。
管理后台把 MCP CMS 变成一间控制室
我不想让管理区域看起来像无聊的 CRUD 页面。我把它做成了一间控制室。它包含草稿管理、翻译、图片、SEO 和发布的功能;同时还有一层运营能力,让我可以运行 AI 工作流并观察它们如何推进。
在后台内部,MCP 聊天会像系统其他部分一样暴露相同的内容工具。我可以列出文章、检查草稿、触发 SEO 分析、发起研究,或用自然语言请求来运行完整流水线。关键在于:聊天并不是“魔法”。它基于与其余 mcp cms 相同的类型化动作。
这种设计在实践中节省了时间。我不需要为每一个新工作流重建界面。我只需要再暴露一个工具,或再提供一条控制路径。如果你想看看我如何从系统层面思考自动化,How I Built My CMS With MCP and Agent Flows 是围绕这个设置的更完整文章。
我可以从后台做什么
后台让我能快速推进,同时不失去控制。
为什么我用控制室而不是简单编辑器
当你只需要编写并发布时,简单编辑器就够了。但我需要更多。我想要一个地方:我可以观察工作流、批准变更,并在模型偏离轨道时进行介入。mcp cms 的真正价值在于:它给我的不仅是内容录入,而是运营层面的控制能力。
MCP CMS 的 Agent Flow 实际是如何工作的
agent flow 并不是一个巨大的单次提示词。我把它拆成多个阶段,这样我能在每一步控制质量。这很重要,因为内容工作本来就很“乱”。研究、SEO、结构和编辑每一步都需要不同的推理方式。
下面是我最常用的流程:
我反复测试了这个流程,因为我不想要一个“假”的演示流水线。我想要的是:某个阶段可以把反馈推回给另一个阶段。这个反馈闭环也是 mcp cms 比单次写作助手更好用的原因之一。
为什么我把流程拆成阶段
每个阶段解决的是不同的问题。研究减少幻觉。SEO 让结构更精准。编辑保护质量。发布清理最终输出。把这些任务拆开后,整个系统会更可靠,也更容易在之后持续改进。
我如何防止智能体漂移
我用类型化输入、明确输出以及质量检查,让智能体保持在“短链条”上。这比一串含糊的提示词链条能带来更好的结果。它也让失败更容易诊断——当你依赖自动化来做生产工作时,这一点尤其重要。
Search Console 让 MCP CMS 更聪明
系统最强的部分之一在于:我并不只依赖提示词。我把 Search Console 的数据接入研究流程,让智能体基于真实的需求信号工作,而不是基于假设。这会改善主题选择步骤,并帮助我优先处理那些确实有机会获得排名的内容。
Search Console 层会把快照存入 Supabase,并计算关键词机会、低 CTR 页面以及内容空白。我会把这些洞察用于 mcp cms,来引导研究与 SEO。也就是说,这个系统不只是生成文章,它还在帮助我做更好的发布决策。
Google 官方的 Search Console 文档 也印证了为什么这很重要:搜索表现数据应该指导优化,而不应仅凭直觉。我的流水线里直接采用了这一原则。
数据层能给我什么
为什么数据在这里胜过直觉
我喜欢创意工作,但内容策略需要证据。当我使用 Search Console 信号时,我能看到哪些页面需要帮助、哪些主题值得新增文章。这让 mcp cms 比静态的管理面板更有用。
为什么我拆分了读取路径与写入路径
我有意把博客的读取端和写入端分开。公开页面只通过内容层读取;而管理操作则通过变更(mutation)层写入。这样能让渲染更快,也让发布更安全。
这种拆分之所以重要,是因为每一侧的工作不同。读取层需要缓存、元数据以及干净的兜底行为。写入层需要认证、校验以及可控的变更。在 mcp cms 中,这两层共享同一套契约,但它们从不混在一起。
这种分离也让未来添加新界面更容易。如果我再做一个后台,或者我连接另一个 MCP 客户端,我不需要重新设计整个系统。我只需要把新工具指向同一条写入边界。
这种分离保护了什么
为什么我更喜欢这种结构
我见过系统因为“所有东西都在互相通信”而失败。这种架构降低了这种风险。它让 mcp cms 拥有稳定的核心,并保持产品易于演进。
真实结果与实际权衡
最大的结果并不是一个花哨的后台,而是杠杆。我现在可以从想法出发,经过调研大纲,再到草稿,再到 SEO 审核,而不需要在不同工具之间来回跳转。这节省了时间,也让上下文保持完整。
我也获得了对系统运行情况更好的可视性。我可以观察流水线、检查智能体的决策,并在需要时调整流程。这比“纯粹的自动化速度”更重要。一个好的 mcp cms 应该让你的流程更强,而不是让它更不透明。
不过也有权衡。定制系统比现成 CMS 需要更多工程投入。你要自己承担 bug、功能以及维护成本。对我来说,这个成本是值得的,因为工作流适配我的网站和内容策略。
我获得了什么
我仍需要管理什么
我现在如何思考内容操作系统
这个项目改变了我对内容基础设施的看法。我不再把 CMS 软件仅仅当作存放文章的地方。我把它视为内容创建、审阅与发布的操作系统。这种思维转变也是为什么我的 mcp cms 感觉是有用的,而不是装饰性的。
如果你也在构建类似的东西,先从工作流开始。然后定义写入边界。之后,只为那些值得自动化的动作添加 MCP 工具。这样的顺序能让系统保持清醒。
我也建议你阅读我相关的文章:AI agents、用 Next.js 扩展电商、以及我的 SEO 仪表盘。这些内容解释了搭建这个设置背后的构建模块,并展示了各部分如何连接。
结论
这次构建带来的主要经验很简单:
我构建这个 mcp cms 是为了给自己更多杠杆、更好的可视性,以及更清洁的发布流程。如果你在设计自己的内容系统,请先从工作流开始,然后再围绕它塑造工具。
如果你愿意,阅读上面相关的文章,或者留言说说你会如何组织你自己的 CMS。