EmDash 有一个内置的 Model Context Protocol (MCP) 服务器,让 AI 助手可以直接处理站点内容。你可以要求 Claude、ChatGPT 或其他工具起草文章、更新页面、管理媒体、搜索内容等——全部通过自然对话完成。
站点的 MCP 服务器
MCP 服务器默认启用。除非你关闭它,EmDash 会挂载 /_emdash/api/mcp。端点接受 OAuth 或个人访问令牌;管理员浏览器会话本身不会认证 MCP 请求。OAuth 允许连接客户端的人在 EmDash 发放令牌前选择权限范围。
要禁用它,在 Astro 配置中设置 mcp: false:
emdash({
mcp: false,
});
连接 AI 客户端
站点的 MCP 服务器 URL 为:
https://example.com/_emdash/api/mcp
将 example.com 替换为你的域名。本地开发使用 http://localhost:4321/_emdash/api/mcp。
Claude
将 URL 添加为远程自定义连接器。Claude 会打开 EmDash OAuth 流程,以便你登录并选择权限。Anthropic 独立于 EmDash 更改连接器界面,因此请遵循其当前自定义连接器说明了解确切的控制和计划要求。
ChatGPT
ChatGPT 开发者模式可以连接远程 MCP 服务器并支持 OAuth 认证的工具。资格和设置界面可能会更改,因此请遵循 ChatGPT 开发者模式官方指南并在创建应用时使用你站点的 MCP URL。在批准前审查每个写入调用。
Codex
从 Codex CLI 添加远程服务器,然后启动 OAuth 登录:
codex mcp add emdash-site --url https://example.com/_emdash/api/mcp
codex mcp login emdash-siteChatGPT 桌面应用、Codex CLI 和 IDE 扩展共享同一 Codex 主机的 MCP 配置。有关配置文件、OAuth 和支持的传输,请参阅 Codex 官方 MCP 文档。
处理站点内容
连接后,你可以用自然语言要求 AI 助手执行以下任何操作。你不需要知道工具名称——只需描述你想要什么。
内容
- 浏览内容 — “显示最新的 10 篇博客文章”或”找到所有草稿页面”
- 阅读内容 — “获取名为 ‘hello-world’ 的文章并总结”
- 创建内容 — “写一篇关于我们夏季促销的新博客文章”或”为关于部分创建一个页面草稿”
- 编辑内容 — “更新定价页面以提及新计划”或”修复 FAQ 文章中的错别字”
- 发布和排程 — “发布夏季促销文章”、“将公告排程到6月1日上午9点”或”取消发布文章的排程”
- 比较版本 — “显示首页自上次发布以来的变化”
- 管理草稿 — “丢弃关于页面的草稿更改”或”复制新闻通讯模板”
- 翻译 — “欢迎文章有哪些翻译?“或”创建一个与这篇英文文章链接的法语草稿”(当 i18n 启用时)
署名
- 浏览署名 — “列出名字包含 ‘Lee’ 的客座贡献者”
- 标注内容 — “将 Priya Shah 添加为这篇文章的主要署名”
- 管理署名 — “为 Sam Rivera 创建一个客座署名”或”更新这位贡献者的简介”
- 翻译署名 — “显示此署名的语言变体”
创建、更新、删除和翻译署名需要编辑者角色。内容写入工具在调用者有权创建或编辑该内容时接受现有署名 ID。
媒体
- 浏览媒体 — “列出所有上传的图片”或”显示媒体库中的 PDF”
- 查看详情 — “获取此媒体项的详情”
- 上传文件 — “将此 base64 图片上传为
banner.png”或”从此公共 URL 导入图片” - 注册现有存储对象 — “将
media/2026/banner.png注册为媒体项” - 更新元数据 — “将主图的 alt 文本设置为 ‘山间日落’”
- 删除文件 — “删除旧的横幅图片”
media_upload 接受 base64 编码的字节或公共 HTTP(S) URL。它存储文件、注册媒体项并返回 ID 和 URL。media_create 仅注册已在存储中的文件的元数据。URL 导入拒绝私有网络目标并重新检查重定向;两个路径都强制执行站点的 MIME 类型和上传大小限制。
贡献者可以使用 media_upload。使用 media_create 注册现有存储对象需要作者或更高角色。
搜索
- 查找内容 — “搜索提及’无障碍’的文章”或”在所有集合中查找关于 TypeScript 的所有内容”
分类法
- 浏览 — “列出所有分类”或”显示标签”
- 创建术语 — “添加一个’教程’标签”或”在’工程’下创建一个’前端’子分类”
- 重命名术语 — “将’前端’分类重命名为’Web 前端’”
- 移动术语 — “将’教程’标签移到’指南’分类下”或”将 ‘react’ 从其父级分离”
- 删除术语 — “删除未使用的’归档’标签”
菜单
- 查看菜单 — “显示主导航菜单”或”页脚菜单里有什么?”
- 创建菜单 — “创建一个新的 ‘sidebar’ 菜单”
- 编辑菜单 — “将 ‘main’ 菜单重命名为’主导航’”
- 设置项目 — “将主菜单的项目替换为首页、博客、关于和联系”
- 删除菜单 — “删除未使用的 ‘mobile’ 菜单”
站点设置
- 检查 — “当前站点标题是什么?“或”显示社交链接”
- 更新身份 — “将站点标题设为 ‘Acme Blog’,标语设为’团队故事’”
- 设置 Logo / Favicon — “使用这张图片作为站点 Logo”(用
media_upload上传后) - SEO 默认值 — “将默认 OG 图片设为新横幅”或”将标题分隔符更新为竖线”
- 社交账号 — “将我们的 GitHub 和 YouTube 链接添加到社交设置”
架构(仅管理员)
- 检查 — “存在哪些集合?“或”显示 posts 集合的字段”
- 创建集合 — “创建一个包含名称和引用字段的新 ‘testimonials’ 集合”
- 修改架构 — “向 posts 添加一个 ‘featured’ 布尔字段”
修订版本
- 查看历史 — “显示这篇文章的修订历史”
- 恢复 — “将文章恢复到之前的版本”
权限
当 MCP 客户端打开 OAuth 同意页面时,请求的每个权限默认被选中。在批准访问前清除客户端不需要的任何权限。生成的令牌限于你保持选中的权限和你的 EmDash 角色允许的权限,因此授予更少的权限永远不会增加客户端能做的事情。
| 角色 | AI 能做什么 |
|---|---|
| 管理员 | 所有操作,包括架构更改和更新站点设置 |
| 编辑者 | 管理所有内容、媒体、署名、分类法和菜单。查看架构和读取设置。 |
| 作者 | 创建内容;编辑和发布自有内容;上传媒体和管理自有媒体。 |
| 贡献者 | 创建草稿内容和上传媒体,不能发布。 |
当令牌范围或用户角色不足时,EmDash 会拒绝工具调用。客户端可以解释该错误,但 EmDash 始终是执行权限的权威。
提示
- 对集合要具体。 如果有多个集合,说”创建一篇博客文章”而不是”创建一篇文章”。
- 先询问架构。 如果不确定集合有哪些字段,在创建或编辑内容前先问”posts 集合有哪些字段?”
- 发布前审查。 要求 AI 将内容创建为草稿,在管理面板中审查,然后要求 AI 发布——或自己发布。
- 使用比较进行审查。 发布前,问”比较这篇文章的已发布版本和草稿版本”来查看确切的变化。
- 富文本字段使用 Portable Text。 AI 可以为富文本字段编写内容,但复杂格式最好在管理编辑器中完成。
面向开发者
MCP 服务器端点、认证方法、OAuth 发现、工具参数和错误处理记录在 MCP 服务器参考中。