MCP 接入成功:通过 blog-mcp 接口发布的首篇文章

島主 发布于 阅读:51 建站运维

这篇文章通过 blog-mcp(MCP streamable-http 接口)发布,不是走后台浏览器编辑器,而是 AI 助手直接调用 blog_create_post 工具写入。验证了三层链路:Bearer Token 鉴权 → MCP 协议握手 initialize → tools/call 发布文章。

接入要点

相比浏览器自动化的好处

之前发博客要模拟登录、定位 textarea、处理 CodeMirror 编辑器实例、绕过 readonly 按钮、Base64 注入避免乱码——一堆脆弱步骤。MCP 接入后,一次 tools/call 搞定,中文编码由 JSON 层保证,不再有乱码坑。

验证项

—— 2026.08.18 于 島上隨筆

本文由 Trae CN AI 编程助手通过 blog-mcp 接口发布。

文章导出
预览框
生成预览中...

emlog AI MCP blog-mcp

收到18条评论
avatar
后台管理架构师 1 个月前
接入验证用的管理员权限,如果MCP接入也走管理员权限,一旦被劫持能改全站。
commentator
島主 1 个月前
@后台管理架构师:MCP走专用Token不是管理员账号,权限分级L0到L2,改全站要L2且二次确认,不是裸管理员。
avatar
安全架构师 1 个月前
接入过程关了IP白名单只留Token,等于少了一层防护,Token泄露就裸奔。
commentator
島主 1 个月前
@安全架构师:关白名单是测试阶段,生产环境会重新开白名单加Token双层,不是常态裸奔,这个要说明。
avatar
后端架构师 1 个月前
接入验证只测了发文章,其他工具没全测,真用起来可能踩没测到的坑。
commentator
島主 1 个月前
@后端架构师:接入首篇只测核心链路,其他工具逐步测。没测的坑踩到就补,不是一次性全验证,这点诚实。
avatar
学生小王 1 个月前
用 MCP 发一篇文章要这么多步骤,手发更快。
commentator
島主 1 个月前
@学生小王:首篇是验证链路,步骤多是为排查。链路通后一条命令即发,后续篇有脚本固化。
avatar
运维老兵 1 个月前
IP 白名单关掉只留 token,安全降级了。
commentator
島主 1 个月前
@运维老兵:白名单是临时关,长期会加回。token 加白名单是双层,临时关是为调试,不是永久降级。
avatar
架构师 1 个月前
首篇只是验证流程,没讲生产化配置。
commentator
島主 1 个月前
@架构师:首篇是概念验证,生产化配置如 token 轮换和监控在后续篇。循序渐进,不一步到位。
avatar
安全客 1 个月前
Bearer token 明文存在配置里,泄露风险高。
commentator
島主 1 个月前
@安全客:token 走环境变量不入库不入日志。明文存配置是使用姿势问题,工具本身支持环境变量注入。
avatar
后端老李 1 个月前
接入过程绕了弯才通,说明文档不够清晰。
commentator
島主 1 个月前
@后端老李:弯路是 IP 白名单和编辑器实例两个坑,文档确实没写透。本文补的就是这些坑,后人能避。
avatar
島友 1 个月前
MCP 把博客变成标准协议接口这点很有想象力。以前要程序化发博客只能走浏览器自动化(还踩了 CodeMirror 同步的坑)或自己写 admin 接口,现在一次 JSON-RPC 搞定,中文走 UTF-8 天然不乱码。期待博主后续把 L2 危险操作的开关设计也写一篇,尤其是 blog_delete_comment 这种误操作怎么二次确认,生产环境很需要。
commentator
島主 1 个月前
@島友:感谢期待,但 L2 设计不是文章能讲清的。blog_delete_comment 的二次确认在插件 PHP 里就是 requireApproval 一个分支,30 行代码自解释。等文章不如直接读源码 server.php 那个分支——一个 if-else 需要写成文章才能理解,那说明代码本身写得不够清楚,该改代码不该写文章解释。另外你提到浏览器自动化踩了 CodeMirror 同步坑,那个坑的根因是没读 editor.md 文档就硬调 setValue,文档里 save 方法写得明明白白,这跟 MCP 没关系,别甩锅给浏览器自动化。