MCP 服务器
将任意 MCP 客户端(Claude Code、Claude Desktop、Cursor)连接到 Warmbly,将数据和工作流程作为工具使用。可通过 OAuth 登录,也可为静态 API 密钥设置权限范围。
Warmbly 支持模型上下文协议(Model Context Protocol)。将任意 MCP 客户端连接到 Warmbly 服务器后,它即可在你授予的权限范围内搜索联系人、查看营销活动、读取收件箱、起草回复,以及创建营销活动和自动化流程的草稿。
- URL:
https://api.warmbly.com/v1/mcp - 传输方式:可流式传输的 HTTP
- 身份验证:OAuth 2.1 访问令牌(通过浏览器登录),或静态 API 密钥(通过 Bearer 请求头传入)。
有两种连接方式。OAuth 只需一条命令:运行 add 命令,在浏览器中批准访问后,客户端即可持有可刷新的短期令牌。API 密钥则是静态凭据方式:创建密钥并将其粘贴到客户端配置中。两种方式可访问完全相同的工具,也采用完全相同的权限检查。
通过 OAuth 连接
推荐使用此方式。无需在任何地方粘贴密钥:客户端会发现 Warmbly 的授权服务器,打开浏览器供你登录并批准权限范围,然后自行保存生成的令牌。
Claude Code
claude mcp add --transport http warmbly https://api.warmbly.com/v1/mcp然后在 Claude Code 中运行 /mcp 并选择 Authenticate(身份验证)。浏览器打开后,登录 Warmbly,批准请求的权限范围,即可建立连接。无需配置请求头或密钥。
Claude Desktop 和 Cursor
仅使用 URL 添加服务器,客户端会在首次使用时执行 OAuth 流程:
{
"mcpServers": {
"warmbly": { "type": "http", "url": "https://api.warmbly.com/v1/mcp" }
}
}你将授权哪些操作
同意授权页面会将自行注册的客户端标记为 Not affiliated with Warmbly(与 Warmbly 无关联),说明批准后访问权限将授予哪个应用,并明确列出客户端将获得的权限范围:即它所请求、且你的工作区角色允许的权限,因此连接后的客户端绝不会执行超出你自身权限的操作。实际发送邮件的权限不在其中:按设计,通过 OAuth 连接的 MCP 客户端不会获得 SEND_CAMPAIGNS 和 API 密钥管理权限,助手也始终只生成草稿。你可以随时在控制台的已连接应用中撤销客户端的访问权限。
使用 API 密钥连接
希望使用静态的长期凭据,例如用于 CI、共享脚本,或不支持 OAuth 的客户端?创建 API 密钥并将其作为 Bearer 令牌发送:
Authorization: Bearer wmbly_...限制密钥的权限范围
为每个 MCP 客户端创建专用 API 密钥,仅授予其所需的权限范围(参阅权限)。根据客户端需要访问的数据授予读取或写入权限;如果需要搜索网页或读取操作手册,还应授予 AI_AGENT。
Claude Code
claude mcp add --transport http warmbly https://api.warmbly.com/v1/mcp \
--header "Authorization: Bearer wmbly_..."Claude Desktop
添加到 claude_desktop_config.json:
{
"mcpServers": {
"warmbly": {
"type": "http",
"url": "https://api.warmbly.com/v1/mcp",
"headers": { "Authorization": "Bearer wmbly_..." }
}
}
}Cursor
添加到 .cursor/mcp.json:
{
"mcpServers": {
"warmbly": {
"url": "https://api.warmbly.com/v1/mcp",
"headers": { "Authorization": "Bearer wmbly_..." }
}
}
}提供哪些能力
无论使用 OAuth 令牌还是 API 密钥,服务器都只提供该凭据有权使用的工具。每个工具都会检查自身所需的权限范围;此外,OAuth 令牌或 API 密钥所属的成员在当前时点也必须具有对应的组织权限。只有读取权限的凭据只能看到读取工具,具有写入权限的凭据还会看到相应写入工具,因此 MCP 客户端只能在你明确授予的权限范围内操作。
这只是产品内置助手功能的子集。有两类操作仅限控制台,API 密钥和 OAuth 令牌始终无法访问:发送邮件(send_reply、compose_email),以及工作区治理(团队、工作区设置和账单)。这些路由仅接受会话身份验证,没有可授予的 API 权限范围,因此不会通过 MCP 提供。
每个工具都受其对应的 API 权限约束。tools/list 仅返回权限掩码允许使用的工具。无论权限范围如何,发送类工具(任何向收件人传送邮件的工具)都不会通过 MCP 提供;通过 MCP 使用助手时,只会生成草稿(draft_reply)。
| 工具 | 用途 | 所需权限范围 |
|---|---|---|
search_contacts | 按文本搜索联系人 | READ_CONTACTS |
get_contact | 读取单个联系人 | READ_CONTACTS |
update_contact_fields | 更新联系人字段 | WRITE_CONTACTS |
add_tag / remove_tag | 为联系人添加或移除标签 | WRITE_CONTACTS |
list_campaigns | 列出营销活动 | READ_CAMPAIGNS |
get_campaign_stats | 营销活动统计,可涵盖全部时间,也可仅统计 from 至 to 期间发送的邮件 | READ_ANALYTICS |
list_campaign_leads | 营销活动的潜在客户,以及推导状态和汇总数量 | READ_CONTACTS |
create_campaign_draft | 创建营销活动草稿 | WRITE_CAMPAIGNS |
set_campaign_status | 启动或停止营销活动 | SEND_CAMPAIGNS |
set_lead_hold | 暂停或恢复某位联系人在某个营销活动中的流程,且不取消其订阅 | WRITE_CAMPAIGNS |
get_dashboard_analytics | 指定时段的发送统计,可覆盖整个组织,也可限定为选定的营销活动和营销活动文件夹 | READ_ANALYTICS |
list_mailboxes | 发件邮箱及其健康状况和预热状态 | READ_ANALYTICS |
list_placement_tests / get_placement_test | 收件箱投递位置测试,以及每封测试邮件实际到达的位置 | READ_ANALYTICS |
run_placement_test | 从一个邮箱向种子收件箱发送某个步骤或模板的邮件 | SEND_CAMPAIGNS |
list_placement_batches / get_placement_batch | 投递位置测试批次、进度,以及按发件域名、发件服务商和收件服务商划分的投递位置结果 | READ_ANALYTICS |
run_placement_batch | 从营销活动的发件邮箱或整个工作区运行相同的投递位置测试,可选择抽样。仅限已登录成员:API 密钥通过 POST /placement/batches 启动批次,该端点会应用密钥的邮箱限制 | SEND_CAMPAIGNS |
add_contact / delete_contact | 创建或删除联系人 | WRITE_CONTACTS |
bulk_edit_contacts | 批量为联系人添加标签或订阅 | BULK_CONTACTS |
get_contact_timeline / get_contact_sent_emails | 读取联系人的活动记录和已发送邮件 | READ_CONTACTS |
list_segments / get_segment / list_segment_fields | 读取已保存的受众,以及条件中可引用的字段 | READ_CONTACTS |
preview_segment | 统计一组条件可匹配的记录数,不保存任何内容 | READ_CONTACTS |
create_segment / update_segment / delete_segment | 管理已保存的受众 | WRITE_CONTACTS |
set_segment_members | 将联系人固定纳入或排除于某个分群 | WRITE_CONTACTS |
list_campaign_segments | 读取为营销活动提供联系人的分群 | READ_CAMPAIGNS |
set_campaign_segments / add_segment_to_campaign | 将受众关联到营销活动,或将其成员一次性加入活动 | WRITE_CAMPAIGNS |
list_forms / get_form / list_form_submissions / get_form_stats | 读取托管表单、提交记录和转化漏斗 | READ_CONTACTS |
create_form / update_form / delete_form | 管理托管表单 | WRITE_CONTACTS |
mint_form_link | 获取某位联系人的个性化表单 URL | WRITE_CONTACTS |
get_campaign_forms | 营销活动表单在其收件人中的表现 | READ_CAMPAIGNS |
list_suppressions | 读取禁止联系名单,以及各条目进入名单的原因 | READ_CONTACTS |
add_suppressions / remove_suppression | 禁止向某个地址或域名发送邮件,或解除该限制 | WRITE_CONTACTS |
list_pipelines / list_deals / get_deal / list_deals_by_contact | 读取 CRM 销售管道和商机 | READ_CRM |
create_task / create_deal | 创建 CRM 记录 | WRITE_CRM |
update_deal / move_deal_stage / delete_deal | 编辑、移动或删除商机 | WRITE_CRM |
list_tasks / list_task_types | 读取 CRM 任务和任务类型 | READ_CRM |
update_task / complete_task / delete_task | 编辑、完成或删除任务 | WRITE_CRM |
add_contact_note / list_contact_notes | 添加或读取联系人备注 | WRITE_CRM / READ_CRM |
update_contact_note / delete_contact_note | 编辑或删除备注 | WRITE_CRM |
create_pipeline / update_pipeline / delete_pipeline | 管理 CRM 销售管道 | WRITE_CRM |
create_pipeline_stage / update_pipeline_stage / delete_pipeline_stage | 管理销售管道阶段 | WRITE_CRM |
get_campaign / list_campaign_senders / get_campaign_logs | 读取营销活动配置、发件邮箱和日志 | READ_CAMPAIGNS |
update_campaign / delete_campaign | 编辑或删除营销活动 | WRITE_CAMPAIGNS |
set_campaign_senders / verify_campaign_tracking_domain | 设置发件邮箱、验证跟踪域名 | WRITE_CAMPAIGNS |
list_campaign_steps | 读取营销活动的邮件序列步骤 | READ_CAMPAIGNS |
add_campaign_step / update_campaign_step / delete_campaign_step | 编辑营销活动的邮件序列步骤 | WRITE_CAMPAIGNS |
list_threads / get_thread | 读取统一收件箱 | READ_UNIBOX |
draft_reply | 起草回复(绝不发送) | READ_UNIBOX |
list_scheduled_sends | 列出排队等待发送的邮件 | READ_UNIBOX |
mark_thread_seen / set_thread_labels | 标记为已读、设置邮件会话标签 | WRITE_UNIBOX |
snooze_thread / unsnooze_thread / cancel_scheduled_send | 稍后提醒某个邮件会话、取消排队中的发送任务 | WRITE_UNIBOX |
get_mailbox / get_warmup_ban_status | 读取邮箱配置和预热状况 | READ_EMAILS |
update_mailbox / set_mailbox_warmup / set_mailbox_send_hold / set_mailbox_tracking_domain | 编辑邮箱设置、预热设置、营销活动暂停限制和跟踪域名 | WRITE_EMAILS |
submit_warmup_appeal / disconnect_mailbox | 对预热封禁提出申诉、断开邮箱连接 | WRITE_EMAILS |
create_automation_draft / list_automations / get_automation | 读取自动化流程、创建停用状态的草稿 | INTEGRATIONS |
update_automation / set_automation_enabled / delete_automation | 编辑、启用或删除自动化流程 | INTEGRATIONS |
list_api_keys / create_api_key / update_api_key / revoke_api_key | 管理 API 密钥 | API_KEYS |
list_webhooks / list_webhook_deliveries | 读取 Webhook 端点和投递记录 | WEBHOOKS |
create_webhook / update_webhook / delete_webhook / rotate_webhook_secret / verify_webhook | 管理 Webhook 端点 | WEBHOOKS |
search_web / fetch_url | 搜索和读取公开网页 | AI_AGENT |
load_skill | 读取某份操作手册 | AI_AGENT |
有意未提供两类表单功能:品牌素材上传(徽标、封面、背景)采用多部分图片上传,并有尺寸和 MIME 类型限制,工具调用无法表达这些要求;自定义表单域名则属于整个工作区的品牌设置,并须通过 DNS 检查,因此位于设置中,不以工具形式提供。
MCP 调用与其他 API 调用遵循相同的速率限制:API 密钥按密钥限流,OAuth 令牌按用户限流。表中包含 SEND_CAMPAIGNS,是因为 set_campaign_status 和投递位置测试工具需要此权限。自行注册的 MCP 客户端永远不会获得该权限,因此只有持有此权限范围的 API 密钥或应用,才能通过 MCP 启动或停止营销活动。无论权限范围如何,向收件人发送邮件的工具(send_reply、compose_email)都不会通过 MCP 传输方式提供。
会返回密钥的工具(create_webhook 和 rotate_webhook_secret)会将密钥返回给发起调用的 MCP 客户端,也就是请求该密钥的调用方。产品内置助手始终无法看到这些值。
OAuth 发现机制
单命令连接流程采用标准 MCP 授权机制,因此任何符合规范的客户端都可以使用,无需针对 Warmbly 特别配置。请求未携带有效令牌时,/v1/mcp 会返回 401,并在 WWW-Authenticate 响应头中指向受保护资源的元数据。随后客户端依次执行:
GET /.well-known/oauth-protected-resource:获取资源及其授权服务器(RFC 9728)。GET /.well-known/oauth-authorization-server:获取授权、令牌和注册端点(RFC 8414)。POST /v1/oauth/register:动态注册客户端,使客户端无需手动配置应用即可创建公共客户端(PKCE)的client_id(RFC 7591)。- 在浏览器中执行带 PKCE(S256)的授权码流程,然后调用
POST /v1/oauth/token获取短期访问令牌和轮换式刷新令牌。
所有客户端都通过同一发现机制访问 Warmbly 的 OAuth 服务器。完整的授权服务器参考见 OAuth 2.1 页面。
另请参阅
- 智能体工具(REST):通过普通 HTTP 提供同一工具注册表,适用于不支持 MCP 的 Hermes 和 OpenAI 风格函数调用智能体。
- OAuth 2.1:授权服务器端点、权限范围和动态注册。
- 身份验证:API 密钥与 OAuth 令牌的工作方式。
- 权限:完整的权限范围列表。
- 如果你需要反向连接,即让 Warmbly 连接到外部 MCP 服务器,请参阅连接 MCP 工具指南。