关于 GoodSender
GoodSender 是供 AI 客户端管理博客和邮件的 MCP 服务,支持撰写、预览及分发文章;默认要求确认后才发布或发送。
主要功能
- 01创建和编辑博客文章
- 02发布前预览
- 03发布文章并发送新闻邮件
- 04管理博客域名和设计
- 05发送邮件并管理模板
适用场景
- 01撰写并发布产品公告
- 02向订阅者发送已发布文章
- 03连接自定义博客域名
- 04准备并预览邮件模板
MCP 相关
通过 MCP 工具提供 GoodSender 的博客、新闻邮件、邮件、收件人和设计操作。可通过托管 OAuth 端点连接,也可使用 API key 本地运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.goodsender.com/claude mcp add --transport http good-sender-goodsender https://mcp.goodsender.com/{"mcpServers":{"good-sender-goodsender":{"type":"http","url":"https://mcp.goodsender.com/"}}}在 Cursor 中打开{"servers":{"good-sender-goodsender":{"type":"http","url":"https://mcp.goodsender.com/"}}}在 VS Code 中打开{"mcpServers":{"good-sender-goodsender":{"type":"http","url":"https://mcp.goodsender.com/"}}}{"mcpServers":{"good-sender-goodsender":{"serverUrl":"https://mcp.goodsender.com/"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
GoodSender MCP 服务
从 Claude、Claude Code、Codex 或 ChatGPT 发布博客文章到你自己的域名,并将其作为电子报发送。 通过 OAuth 连接托管服务,无需安装任何内容;也可以使用 API 密钥在本地运行。
你可以做什么
你可以向助手提出这样的请求:
- “写一篇介绍我们新版本的文章,发布到我的博客,并通过电子邮件发送给订阅者。”
- “根据这些笔记起草一篇文章,在正式发布前先向我展示预览。”
- “将 blog.example.com 连接到我的博客,并告诉我需要添加哪些 DNS 记录。”
- “为我的博客创建一个与我们徽标相匹配的自定义设计,并先向我展示预览。”
文章始终会先创建为草稿。发布前,助手会展示文章的发布位置(你的博客、电子报、已连接的社交账号),并要求你确认,除非你已关闭操作确认。 电子报邮件会包含主题、已设置时的封面图片、摘要和已发布文章的链接,而不会包含文章全文。
快速开始(托管服务,OAuth)
托管服务 URL:
https://mcp.goodsender.com/
客户端首次连接时,你需要在浏览器中登录 GoodSender。要使用博客工具,你需要拥有一个包含博客的 GoodSender 工作区。要发送可选的电子报,请先设置发件人身份和公开的博客地址。
Claude Desktop
使用 Free、Pro 或 Max 套餐:打开 Customize → Connectors,选择 Add → Add custom connector,然后输入 https://mcp.goodsender.com/。保留登录选项,以便首次使用连接器时运行 OAuth 流程。
使用 Team 或 Enterprise 套餐时,组织所有者需先在 Organization settings → Connectors → Add → Custom → Web 中添加 GoodSender。之后,成员即可连接。
Claude Code
claude mcp add --transport http goodsender https://mcp.goodsender.com/
claude mcp login goodsender
在浏览器中完成 OAuth 流程。使用 claude mcp get goodsender 检查连接,或在交互式会话中运行 /mcp。
Codex
codex mcp add goodsender --url https://mcp.goodsender.com/
codex mcp login goodsender
Codex CLI 和 IDE 扩展共用此配置。登录命令会完成浏览器流程。
ChatGPT
在 Settings → Apps & Connectors → Advanced settings 下启用开发者模式。使用服务器 URL https://mcp.goodsender.com/ 和 OAuth 身份验证创建应用,然后按提示登录 GoodSender。在新聊天中从 + 菜单选择该应用。
发布需要支持写入操作的 MCP 应用。OpenAI 在 Business、Enterprise 和 Edu 工作区中以 Beta 形式提供这些应用,管理员可能需要允许开发者模式。其他套餐可能只能进行只读连接。ChatGPT 不同版本的菜单名称可能会有所变化。
完整指南:goodsender.com/docs/mcp。
本地安装
本地服务使用 API 密钥。请在 GoodSender 控制面板的 API keys 页面创建密钥。请将密钥视为机密:切勿提交或分享。
MCP Bundle(`.mcpb` 文件,最简单)
-
从最新版本下载
goodsender.mcpb文件。 -
双击
goodsender.mcpb文件,在 AI 客户端中打开。注意: 并非所有 AI 客户端都已支持 MCP bundles 或本地 MCP 服务。 如果双击后没有反应,请使用其他安装方式。
Docker 镜像 / 自托管
通过以下方式运行
docker run -d -e GOODSENDER_API_KEY=<Your API Key> -v goodsender-mcp-data:/data ghcr.io/good-sender/mcp:latest
如果你希望使用此 MCP 完全自主地运行 Agent,请设置 GOODSENDER_DISABLE_ACTION_GUARDS=true,以完全跳过所有操作确认。请参阅操作确认。
或者添加到家用服务端的 docker-compose.yaml
services:
goodsender-mcp:
image: ghcr.io/good-sender/mcp:latest
ports:
- "9889:9889"
environment:
GOODSENDER_API_KEY: <Your API Key>
# GOODSENDER_DISABLE_ACTION_GUARDS: "true" # skip all action confirmations
volumes:
- goodsender-mcp-data:/data
restart: unless-stopped
volumes:
goodsender-mcp-data:
并通过以下方式运行
docker compose up -d
手动配置(JSON)
-
从最新版本下载
binaries.zip文件(包含 MCPgoodsender-mcp-*和 CLIgoodsender-*二进制文件)。 -
将其解压到方便引用的位置。
-
修改 AI 客户端配置文件,添加 MCP 服务配置(以下示例适用于 macOS 上的 Claude Desktop 和 Cursor):
{ ... "mcpServers": { "GoodSender": { "command": "<path to the unzipped binaries>/goodsender-mcp-darwin-arm64", "env": { "GOODSENDER_API_KEY": "<Your API key>" } } } ... }对于其他平台,必须引用对应的二进制文件,而不是
darwin(macOS)如果你希望使用此 MCP 完全自主地运行 Agent,请设置
GOODSENDER_DISABLE_ACTION_GUARDS=true,以完全跳过所有操作确认。请参阅操作确认。
环境变量
| 变量 | 必填 | 含义 |
|---|---|---|
GOODSENDER_API_KEY | 是 | 你的 GoodSender API 密钥。 |
GOODSENDER_DISABLE_ACTION_GUARDS | 否 | true 表示变更类工具无需确认即可运行。请参阅操作确认。 |
GOODSENDER_TELEMETRY | 否 | false 表示选择退出使用情况和可靠性遥测。请参阅遥测与隐私。 |
操作确认
默认情况下,发布、发送、删除或更改线上博客设计的工具不会立即运行,而是会返回确认令牌。你批准后,Agent 必须调用 confirm_action。
在 MCP 服务环境中设置 GOODSENDER_DISABLE_ACTION_GUARDS=true,即可跳过此步骤。之后,客户端调用工具时,工具便会运行。无人值守循环(定时 Agent、CI)可使用此设置。如果希望每次发送和发布都在聊天中等待你批准,请不要设置此变量。
工具
博客文章和新闻简报
| 工具 | 功能说明 |
|---|---|
list_posts | 列出所有文章,包括草稿和已发布文章,以及博客的署名和分类体系。 |
get_post | 获取一篇文章,包括其 Markdown 正文。 |
create_post | 创建文章草稿。不会发布或发送。 |
edit_post | 修改草稿或已发布文章。 |
delete_post | 永久删除一篇文章。 |
create_post_preview | 为草稿或已发布文章创建带签名的预览 URL。 |
upload_post_image | 为文章上传图片(JPEG、PNG、GIF 或 WebP),并获取其 URL。 |
get_post_distribution | 显示文章发布后的分发去向:新闻简报,以及 dev.to、X、LinkedIn、Bluesky 和 Mastodon。 |
set_post_distribution | 选择上述分发目的地,并查看对应文案、新闻简报主题和摘要。 |
publish_post | 将文章发布到公开博客,然后按照其分发计划执行操作。 |
send_post_test | 将文章的测试邮件发送到一个收件箱。 |
broadcast_post | 向已同意接收的订阅者发送已发布文章的新闻简报;每篇文章最多发送一次。 |
reannounce_post | 将已发布的文章再次发布到一个公告平台(X、LinkedIn、Bluesky 或 Mastodon)。 |
博客设置和自定义域名
| 工具 | 功能说明 |
|---|---|
get_blog | 获取博客设置(标题、描述、发件人、主题、自定义域名),并查看是否已启用自定义设计。 |
update_blog | 创建或修改博客设置,包括 SEO 标题和描述。 |
connect_blog_domain | 为博客绑定自定义主机名,并获取需要添加的 DNS 记录。 |
get_blog_custom_domain | 检查自定义域名状态和 DNS 目标。 |
remove_blog_custom_domain | 移除博客的自定义域名。 |
博客设计
| 工具 | 功能说明 |
|---|---|
blog_design_template_format | 查看博客设计模板格式的文档。 |
blog_design_list | 列出已保存的设计,并标明当前启用的设计和默认设计。 |
blog_design_create | 使用模板和图片创建新设计。 |
blog_design_edit | 编辑设计模板。 |
blog_design_get_latest_checkpoint | 获取设计的最新版本。 |
blog_design_checkpoint_list | 列出设计的各个版本。 |
blog_design_checkpoint_restore | 恢复到较早的版本,并删除较新的版本。 |
blog_design_save | 保留一个版本,并删除较早的版本。 |
blog_design_activate | 将已保存的设计设为博客的当前设计。 |
blog_design_image_upload_url | 获取徽标或网站图标的上传 URL。 |
电子邮件
| 工具 | 功能说明 |
|---|---|
enqueue_email | 将纯文本、HTML 或 Markdown 格式的电子邮件加入发送队列。收件人同意接收后才会发送。 |
enqueue_template_email | 将基于模板的电子邮件加入发送队列。收件人同意接收后才会发送。 |
send_consentless_email | 立即发送内置的事务类模板邮件(一次性密码、多重身份验证、订单完成通知等)。 |
send_template_draft_test_email | 将模板草稿的测试邮件发送给一位收件人。 |
电子邮件模板
| 工具 | 功能说明 |
|---|---|
template_format | 查看电子邮件模板格式的文档。 |
create_template_draft | 新建模板草稿。 |
edit_template | 使用查找和替换修改模板或草稿。 |
get_template | 按名称获取已保存的模板。 |
get_template_content | 获取模板的当前内容,包括尚未保存的编辑。 |
render_template_preview | 使用示例数据渲染模板预览。 |
save_template | 保存模板草稿。 |
list_templates | 列出电子邮件模板。 |
delete_template | 删除模板及使用该模板创建的邮件。 |
收件人、群组和发件人
| 工具 | 功能 |
|---|---|
create_recipients | 添加收件人并征求其同意。 |
list_recipients | 列出收件人及其所属群组和同意状态。 |
edit_recipient | 更改收件人的显示名称。 |
delete_recipients | 永久删除收件人及其邮件。 |
create_group | 创建收件人群组。 |
list_groups | 列出收件人群组。 |
add_group_members | 将收件人添加到群组。 |
remove_group_members | 从群组中移除收件人。 |
create_sender_identity | 在已验证的域名上创建 From: 身份。 |
edit_sender_identity | 更改发件人身份的显示名称。 |
list_sender_identities | 列出发件人身份,以及各域名是否已验证。 |
check_sender_domain_stats | 显示各发件人域名的邮件健康指标。 |
确认
| 工具 | 功能 |
|---|---|
confirm_action | 执行你已批准的操作。仅在启用操作确认时显示。 |
常见问题
有提供官方 MCP 服务的博客平台吗?
有。GoodSender 为其博客平台提供此服务。通过 OAuth 连接托管服务 https://mcp.goodsender.com/,或在本地运行。请参阅 MCP 连接指南。
如何通过 Claude Code 发布博客文章?
使用 claude mcp add --transport http goodsender https://mcp.goodsender.com/ 添加服务,并使用 claude mcp login goodsender 登录。然后让 Claude Code 起草文章、显示预览并发布。MCP 连接指南介绍了首次发布的操作步骤。
Codex 能否将文章发布到我自己的域名上的博客?
可以。使用 codex mcp add goodsender --url https://mcp.goodsender.com/ 连接 Codex,然后让它连接你的域名。它会返回你需要在 DNS 服务商处添加的 DNS 记录,发布的文章将显示在该地址下。设置步骤请参阅 MCP 连接指南。
能否同时将文章作为简报发送?
可以。在文章的分发设置中选择简报,发布时便会将文章通过邮件发送给已同意接收的订阅者。博客需要先设置发送域名、From: 地址和公开地址。邮件包含主题、设置的封面图片、摘要和文章链接,不包含全文。请参阅通过 Claude 和 ChatGPT 发布的工作方式。
对比
如需与其他博客和简报平台进行并排比较,请参阅 GoodSender 与 WordPress、Ghost、beehiiv 和 Hashnode 的对比。
邮件发送
GoodSender 除了博客新闻简报,也支持发送其他邮件。获得许可有助于确保送达率,因此不支持冷邮件开发。
- 🤝 许可管理。 添加收件人后,系统会通过邮件征求他们的许可。自定义邮件会在队列中等待,直到收件人授予许可后才会发送。
- ✅ 事务性模板。 内置模板(OTP、MFA、订单完成等)会立即发送,无需征求许可。
- ✉️ 格式。 可向一个或多个收件人发送纯文本、HTML 或 Markdown。
- 📝 自定义模板。 创建和编辑带动态变量的模板,在聊天中预览并发送测试邮件。
- 👥 收件人组。 将收件人整理到各个组中,并按组名向整个组发送邮件。
- 🏷️ 发件人身份。 管理
From:身份,并通过名称引用它们。 - 📊 健康指标。 查看每个发件人域名的送达统计数据。
- 🛡️ 数据存储位置。 待处理邮件、自定义模板、收件人组和发件人身份存储在 MCP 服务的数据库中:本地服务会存储在你的设备上,托管连接则存储在服务主机上。博客文章、设置和设计存储在 GoodSender 服务器上。
邮件提示词示例
将 'John Doe <[email protected]>' 和 'Jane Doe <[email protected]>' 添加到 AI newsletter subscribers 组
ℹ️ 这将:
- 在数据库中创建或更新收件人
- 将他们添加到“AI newsletter subscribers”收件人组;如果该组不存在,则创建该组
为发送给 AI newsletter subscribers 组的每周 AI 新闻摘要创建一个 GoodSender 模板
ℹ️ 这将:
- 按照邮件模板创建最佳实践,创建一个 GoodSender 格式的邮件模板草稿
- 显示该模板草稿的交互式预览(如果 AI 客户端支持)
将摘要中的新闻数量增加到 5 条
ℹ️ 在创建或编辑模板草稿时执行,这将:
- 相应地修改模板
- 显示该模板草稿的交互式预览(如果 AI 客户端支持)
给我发送一封测试邮件:'Good Sender <[email protected]>'
ℹ️ 在创建或编辑模板草稿时执行,这将:
- 仅向你发送一封邮件,其中包含根据当前模板草稿生成的模拟数据
将模板保存为 "Weekly AI news"
ℹ️ 在创建或编辑模板草稿时执行,这将:
- 将当前模板草稿转换为持久模板,并存储在 MCP 服务的数据库中
- 只需提及模板名称即可发送邮件
收集本周的 AI 新闻,并使用 "Weekly AI news" 模板发送
ℹ️ 这将:
- 为 AI newsletter subscribers 组中的每位收件人创建并加入队列一封个性化的模板邮件
- 对于尚未收到许可请求邮件的所有收件人,请求他们授予接收你所发邮件的许可
- 向所有已授予邮件接收许可的收件人发送邮件
- 跟踪所有尚待授予许可的收件人,并在他们授予许可后立即发送邮件
默认启用遥测。MCP 服务会向 GoodSender 发送汇总的使用情况和可靠性指标,以帮助改进产品。
典型信号包括:
- MCP 工具名称、调用次数和延迟。
- 成功率和错误率。
- 失败时的简短错误摘录。
- 后台任务的错误代码和发生频率。
我们不会有意将电子邮件正文、收件人地址或模板内容作为遥测数据收集。
你可以在 MCP 服务环境中设置 GOODSENDER_TELEMETRY=false,以选择退出遥测数据收集。
请参阅 GoodSender 隐私政策,了解该服务如何处理个人数据。
链接
- MCP 连接指南
- 来自 Claude 和 ChatGPT 的博客:演练指南
- GoodSender
- 隐私政策
- 遥测:默认开启,可通过
GOODSENDER_TELEMETRY=false选择退出 - 问题反馈
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。