关于 AhaSend
AhaSend 是面向使用 AhaSend 管理邮件的团队的 Go MCP 服务模块,可让 AI Agent 操作邮件流程。工具涵盖发送、诊断、域名、营销活动、联系人和账户管理,访问权限由 API 密钥作用域控制。
主要功能
- 01发送和安排邮件
- 02诊断投递与退信问题
- 03管理域名和模板
- 04管理联系人、列表和营销活动
- 05配置 Webhook 与账户资源
适用场景
- 01发送单封邮件或模板邮件
- 02排查发送失败的邮件
- 03管理营销活动及其收件人
- 04更新域名、联系人或 Webhook
MCP 相关
该模块使用官方 Go MCP SDK 构建 MCP 服务。宿主程序可通过 stdio、HTTP 或其他 SDK 传输方式提供服务;可用工具和权限取决于 API 密钥的作用域。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.ahasend.com/mcpclaude mcp add --transport http com-ahasend https://mcp.ahasend.com/mcp{"mcpServers":{"com-ahasend":{"type":"http","url":"https://mcp.ahasend.com/mcp"}}}在 Cursor 中打开{"servers":{"com-ahasend":{"type":"http","url":"https://mcp.ahasend.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-ahasend":{"type":"http","url":"https://mcp.ahasend.com/mcp"}}}{"mcpServers":{"com-ahasend":{"serverUrl":"https://mcp.ahasend.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
ahasend-mcp
一个提供 AhaSend MCP 工具的 Go 模块。 借助这些工具,AI Agent 可以发送电子邮件、查明邮件发送失败的原因, 并管理域名、模板、联系人、列表、营销活动、Webhook、路由、 抑制列表、SMTP 凭据和子账户。
每个工具都会通过 ahasend-go 调用 AhaSend v2 API。API 密钥的作用域 决定 Agent 可以执行哪些操作。
该模块使用 official Go MCP SDK 构建服务端。程序 可以自行选择服务方式:stdio、HTTP 或 SDK 支持的其他传输方式。
go get github.com/AhaSend/ahasend-mcp
示例
server, err := ahasendmcp.NewServer(
&mcp.Implementation{Name: "my-app", Version: "1.0.0"},
ahasendmcp.Options{
Client: api.NewAPIClient(api.WithAPIKey(apiKey)),
AccountID: accountID,
DashboardBaseURL: "https://dash.ahasend.com",
ConfirmationKey: key, // at least 32 random bytes
},
)
if err != nil {
return err
}
return server.Run(ctx, &mcp.StdioTransport{})
选项
| 字段 | 功能 |
|---|---|
Client | ahasend-go 客户端,包含 API 密钥。必填。 |
AccountID | 工具操作的账户。必填。 |
DashboardBaseURL | AhaSend 仪表板 URL,用于营销活动链接。必填。 |
ConfirmationKey | 至少 32 字节的密钥,用于签署营销活动发送确认问题。必填。 |
Scopes | API 密钥的作用域。只会显示该密钥可使用的工具。nil 表示显示所有工具。 |
Toolsets | 只显示这些工具集。nil 表示显示全部。 |
ReadOnly | 只显示不会更改任何内容的工具。 |
Stateless | 如果通过无状态 HTTP 提供服务,则设为 true。 |
MaxRecipientsPerSend | 单次发送的最大收件人数。默认值为 50。 |
ReadInbound | 允许消息工具返回账户收到的电子邮件。默认关闭。 |
Blocked | 如果已设置,每次工具调用都会将此文本作为错误返回,且不执行任何操作。 |
Recorder | 每次工具调用都会生成一条记录:工具名称、是否成功、错误类型和耗时。不会记录输入或结果。 |
如果要为许多用户提供服务,请使用每位用户的密钥和作用域,为每个请求
创建一个新的服务端。这样开销很低。所有实例都使用相同的 ConfirmationKey。
Catalogue() 会列出每个工具及其所需的作用域。
OfferedScopes() 会列出这些工具使用的所有作用域,可用于让用户
选择作用域的页面。
工具
| 工具集 | 工具 |
|---|---|
sending | send_email、send_conversation_email、send_template_email、cancel_scheduled_email |
diagnostics | list_messages、get_message、diagnose_message、get_deliverability_stats、get_bounce_stats、get_delivery_time_stats |
domains | list_domains、get_domain、add_domain、check_domain_dns、update_domain、delete_domain |
templates | list_templates、get_template、create_template、update_template、delete_template、get_template_draft、discard_template_draft、publish_template、list_template_versions、get_template_version、restore_template_version、list_campaign_templates、get_campaign_template、create_campaign_template、update_campaign_template、delete_campaign_template |
audience | list_contacts、get_contact、create_contact、upsert_contacts、update_contact、delete_contact、list_contact_lists、list_lists、get_list、create_list、update_list、delete_list、list_list_contacts、add_contacts_to_list、upsert_list_contact、remove_contact_from_list |
campaigns | list_campaigns、get_campaign、create_campaign、update_campaign、delete_campaign、duplicate_campaign、send_campaign_test、send_campaign、schedule_campaign、unschedule_campaign、get_campaign_stats、list_campaign_recipients |
management | get_account、list_webhooks、get_webhook、create_webhook、update_webhook、delete_webhook、list_routes、get_route、create_route、update_route、delete_route、list_suppressions、add_suppression、remove_suppression、list_smtp_credentials、get_smtp_credential、delete_smtp_credential、list_sub_accounts、get_sub_account、create_sub_account、update_sub_account、get_sub_account_usage |
每个工具都需要其 API 端点所需的权限范围。send_campaign 和
schedule_campaign 还需要 campaigns:read 和 lists:read。活动模板工具也需要
campaigns:read。
列表工具默认返回 20 项,最多返回 100 项。传入返回的游标即可获取下一页。
没有用于创建 API 密钥或 SMTP 凭据、更改账户设置、账单或团队成员、移除所有抑制项,或删除或暂停子账户的工具。
安全规则
发送活动需要获得用户同意。 send_campaign 和
schedule_campaign 会向用户显示一个表单,其中包含发送时间、联系人数量、活动名称、主题、发件人和列表。只有用户回答“是”时才会发送。如果用户确认后活动发生更改,工具会再次询问。如果客户端无法显示表单,工具不会发送任何内容,并会返回控制面板中的活动链接。
单次发送有收件人数量限制。 单次发送的收件人超过
MaxRecipientsPerSend(默认值为 50)时,发送将被拒绝。批量邮件请使用活动。
默认隐藏收到的邮件。 任何人都可以向账户的入站地址发送邮件,而这些邮件可能包含试图欺骗 Agent 的文本。除非启用 ReadInbound,否则邮件工具不会返回收到的邮件。启用后,收到的邮件会标记为
untrusted: true。
错误
当 API 拒绝调用时,工具会返回错误,其中包含 API 提供的消息和后续操作建议。
在本地试用
cmd/ahasend-mcp-dev 使用你自己的 API 密钥,通过 stdio 提供所有工具。
它仅用于测试。
go build -o ahasend-mcp-dev ./cmd/ahasend-mcp-dev
claude mcp add ahasend \
-e AHASEND_API_KEY=... -e AHASEND_ACCOUNT_ID=... \
-- ./ahasend-mcp-dev
设置 AHASEND_BASE_URL,即可使用默认地址以外的 API。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。