关于 Woodpecker MCP Server
Woodpecker MCP Server 将 AI 助手连接到 Woodpecker,可通过 MCP 工具管理邮件与 LinkedIn 外联活动、潜在客户及效果数据。
主要功能
- 01创建和管理邮件及 LinkedIn 活动
- 02添加、搜索、更新和删除潜在客户
- 03构建支持 A/B 测试的邮件序列
- 04获取活动指标和报告
- 05配置发送计划、账户及代理公司
适用场景
- 01创建或调整外联活动
- 02向活动添加潜在客户
- 03查看活动效果统计
MCP 相关
它向 MCP 客户端提供 Woodpecker 活动、潜在客户、账户和分析操作工具,并使用 Woodpecker API 密钥连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Woodpecker MCP 服务
Woodpecker MCP(Model Context Protocol)集成将冷邮件营销活动管理转变为对话式体验。
将 AI 助手连接到 Woodpecker 强大的自动化平台后,你可以通过自然语言交互创建、管理和优化邮件营销活动。
从简单的指令开始,例如列出营销活动和创建基础外联序列。然后逐步探索高级功能,例如 A/B 测试、复杂的跟进序列和详细的分析报告。
功能
- 营销活动管理:创建、更新、运行、暂停和删除邮件及 LinkedIn 营销活动
- 潜在客户操作:将潜在客户添加到你的账户和营销活动中,更新和删除潜在客户数据,搜索潜在客户
- 邮件撰写:创建支持 A/B 测试的多步骤邮件序列
- 分析与报告:获取营销活动统计数据和绩效指标
- 账户集成:为营销活动分配邮件和 LinkedIn 账户
- 代理公司:列出可访问的公司,并为每次工具调用选择一家公司
- 高级配置:支持发送计划、时区设置和 GDPR 合规性
安装
前置条件
设置集成前,请确保你具备:
- Woodpecker 账户:已启用 API & Integration 附加组件的账户
- API 凭据:Woodpecker API 密钥(可在账户设置中找到)
- Docker:已安装在你的系统上(用于运行 MCP 服务)https://docs.docker.com/desktop/
- AI Agent:Claude Desktop、Continue.dev 或其他兼容 MCP 的 AI 平台
获取 Woodpecker API 密钥
- 登录 Woodpecker 账户(https://login.woodpecker.co/)
- 前往右上角的 Marketplace → Integrations → 'API keys'
- 点击
Create a key
AI Agent 配置
Claude Desktop
第 1 步:找到配置文件
找到你的 Claude Desktop 配置文件:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Claude\claude_desktop_config.json
Linux:
~/.config/Claude/claude_desktop_config.json
第 2 步:添加 MCP 服务配置
编辑配置文件,加入 Woodpecker MCP 服务:
{
"mcpServers": {
"woodpecker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"WOODPECKER_API_KEY",
"woodpeckerco/woodpecker-mcp-server"
],
"env": {
"WOODPECKER_API_KEY": "<YOUR_API_KEY>"
}
}
}
}
第 3 步:重启 Claude Desktop
- 完全退出 Claude Desktop
- 重启应用
- 在界面中查找 Woodpecker 工具
其他兼容 MCP 的 Agent
对于支持 MCP 的其他 AI 平台:
- 确保支持 MCP:确认你的 AI Agent 支持 Model Context Protocol
- 身份验证:通过环境变量提供 Woodpecker API 凭据(
WOODPECKER_API_KEY) - 协议:使用你的 Agent 支持的 stdio 传输
验证与测试
在 AI Agent 中尝试提问:
"What Woodpecker tools do you have access to?"
"List my Woodpecker campaigns"
故障排除
MCP 服务无法连接
症状: AI Agent 无法访问 Woodpecker 工具
解决方案:
- 在 MCP 服务配置中尝试使用 Docker 的绝对路径(例如
/usr/local/bin/docker) - 检查 Docker 容器是否正在运行:
docker ps - 测试 API 密钥:直接调用 Woodpecker API
API 凭据无效
**症状:**出现“Unauthorized”或“Invalid API key”错误
解决方案:
- 在 Woodpecker 设置中重新生成 API 密钥
- 使用新密钥更新环境变量
- 重启 AI Agent 应用
工具不可用
症状: AI Agent 看不到 Woodpecker 功能
解决方案:
- 检查 AI Agent 中的 MCP 服务配置
- 重启 AI Agent 应用
- 检查 AI Agent 日志中的 MCP 连接错误
营销活动创建失败
**症状:**创建营销活动时出错
解决方案:
- 确保你至少在 Woodpecker 中配置了一个邮件账户
- 使用
listMailboxes函数验证邮件账户 ID - 检查营销活动参数是否符合所需格式
- 确保每日加入上限 > 0
使用示例
创建首个营销活动
"Create a new email campaign with these details:
- Name: Product Demo Outreach
- Subject: Quick demo of our new feature
- Message: Hi {{FIRST_NAME}}, I'd love to show {{COMPANY}} our new feature. Are you available for a 15-minute demo?
- Send Monday-Friday, 9 AM to 5 PM
- Daily limit: 25 prospects
- Use my main email account"
批量添加潜在客户
"Add these prospects to campaign 12345:
1. John Doe, [email protected], Example Corp, Marketing Director
2. Jane Smith, [email protected], Tech Solutions, CEO
3. Bob Johnson, [email protected], Startup Inc, CTO
Use this personalization for each:
- John: 'I saw your recent blog post about email marketing'
- Jane: 'Congratulations on your recent funding round'
- Bob: 'Your product launch looked impressive'"
营销活动管理
"Pause campaign 12345 and show me its performance statistics"
"Update campaign 'Product Demo Outreach' to send only 15 prospects per day"
"Add a follow-up email to campaign 12345 that sends 3 days after the first email"
分析与报告
"Show me statistics for all my running campaigns"
"Which campaign has the highest open rate?"
"Create a summary report of my campaign performance this month"
最佳实践
活动管理
- 从小规模开始:先测试 5-10 位潜在客户,再扩大规模
- 监控表现:定期查看统计数据
- 遵守限制:控制在每日加入人数限制以内
- A/B 测试:使用多个邮件版本进行优化
潜在客户数据
- 数据质量:确保电子邮件地址有效
- 个性化:使用有意义的摘要和自定义字段
- 细分:使用标签和行业对潜在客户进行分类
- 合规:包含退订链接,并尊重退订选择
AI Agent 交互
- 描述具体:为创建活动提供清晰的指示
- 核实结果:运行前检查活动详情
- 使用示例:包含示例内容和个性化信息
- 监控自动化:部署前检查 AI 生成的活动
支持
请通过 Woodpecker 支持 联系 Woodpecker 支持团队。
许可证
允许将此 Docker 镜像用于个人和商业用途。 禁止重新分发、修改和逆向工程。 不提供任何担保。
版权所有 2025 Woodpecker.co S.A.
可用工具
对于代理机构账户,请使用 listCompanies 查找公司 ID。为该公司的每次工具调用传入
companyId。省略 companyId 则使用 API 密钥对应的主账户;公司选择不会在
不同调用之间沿用。
创建活动和步骤时,deliveryTimes 包含 deliveryDays
(星期名称数组,范围从 MONDAY 到 SUNDAY)、
deliveryTimeStart 和 deliveryTimeStop(例如 09:30 这样的时间)。
followupAfter 包含 range(DAY、HOUR 或 MINUTE)和 value
(数字)。邮件 versions 包含可选的 subject 和 body 字符串;
正文为 HTML,不带外层 html 或 body 标签。
活动管理
createEmailCampaign
创建一个仅含一个邮件步骤且配置精简的 Woodpecker 邮件活动。
参数:
companyId(数字,可选):来自listCompanies的代理机构公司 ID;省略则使用当前账户name(字符串,可选):活动名称timezone(字符串,可选):活动时区(省略时默认为用户时区)dailyEnroll(数字,可选):每日潜在客户加入人数限制(省略时使用安全默认值)emailAccountIds(数组,可选):SMTP 账户 IDversions(数组,可选):邮件内容版本(最多 5 个;省略时使用一个空版本)deliveryTimes(对象):发送时间followupAfter(对象,可选):处理下一步前的延迟时间(省略时为 1 天)
createLinkedinProfileVisitCampaign
创建一个仅含一个个人资料访问步骤的 Woodpecker LinkedIn 活动。
参数:
companyId(数字,可选):来自listCompanies的代理机构公司 ID;省略则使用当前账户name(字符串,可选):活动名称timezone(字符串,可选):活动时区(省略时默认为用户时区)dailyEnroll(数字,可选):每日潜在客户加入人数限制(省略时使用安全默认值)linkedinAccountId(数字,可选):LinkedIn 账户 IDfollowupAfter(对象,可选):处理下一步前的延迟时间(省略时为 1 天)
createLinkedinConnectionRequestCampaign
创建一个包含单个好友请求步骤的 Woodpecker LinkedIn 活动。
参数:
companyId(数字,可选):来自listCompanies的代理公司 ID;若为当前账户则省略name(字符串,可选):活动名称timezone(字符串,可选):活动时区(若省略,则默认为用户时区)dailyEnroll(数字,可选):每日潜在客户加入上限(若省略,则使用安全默认值)linkedinAccountId(数字,可选):LinkedIn 账户 IDfollowupAfter(对象,可选):处理下一步骤前的延迟时间(若省略,则为 1 天)bodyVersions(数组,可选):好友请求消息版本(最多 5 个;若省略,则使用 1 个空版本)
createLinkedinDirectMessageCampaign
创建一个包含单条直接消息步骤的 Woodpecker LinkedIn 活动。
参数:
companyId(数字,可选):来自listCompanies的代理公司 ID;若为当前账户则省略name(字符串,可选):活动名称timezone(字符串,可选):活动时区(若省略,则默认为用户时区)dailyEnroll(数字,可选):每日潜在客户加入上限(若省略,则使用安全默认值)linkedinAccountId(数字,可选):LinkedIn 账户 IDfollowupAfter(对象,可选):处理下一步骤前的延迟时间(若省略,则为 1 天)bodyVersions(数组,可选):直接消息内容版本(最多 5 个;若省略,则使用 1 个空版本)
createLinkedinInMailMessageCampaign
创建一个包含单条 InMail 消息步骤的 Woodpecker LinkedIn 活动。
参数:
companyId(数字,可选):来自listCompanies的代理公司 ID;若为当前账户则省略name(字符串,可选):活动名称timezone(字符串,可选):活动时区(若省略,则默认为用户时区)dailyEnroll(数字,可选):每日潜在客户加入上限(若省略,则使用安全默认值)linkedinAccountId(数字,可选):LinkedIn 账户 IDfollowupAfter(对象,可选):处理下一步骤前的延迟时间(若省略,则为 1 天)bodyVersions(对象数组,可选):InMail 版本,可包含可选的subject和body字符串(最多 5 个;若省略,则使用 1 个不含主题且正文为空的版本)
listCampaigns
获取活动,可按状态筛选。
参数:
companyId(数字,可选):来自listCompanies的代理公司 ID;若为当前账户则省略pageNumber(数字):页码(从 1 开始)statuses(数组,可选):按状态筛选(RUNNING、DRAFT、EDITED、PAUSED、STOPPED、COMPLETED)
retrieveCampaignDetails
获取活动的详细结构,包括所有步骤和配置。
参数:
companyId(数字,可选):来自listCompanies的代理公司 ID;若为当前账户则省略campaignId(数字):活动 ID
retrieveCampaignStatistics
获取活动表现指标和分析数据。
参数:
companyId(数字,可选):来自listCompanies的代理公司 ID;若为当前账户则省略campaignId(数字):活动 ID
updateCampaignSettings
修改活动级设置,包括名称、电子邮件账户、每日上限和时区。
参数:
companyId(数字,可选):来自listCompanies的代理公司 ID;若为当前账户则省略campaignId(数字):活动 IDname(字符串,可选):活动名称emailAccountIds(数组,可选):电子邮件账户 ID 列表timezone(字符串,可选):活动时区dailyEnroll(数字):每日加入上限
buildCampaignUrl
生成用于访问活动的 Woodpecker 应用 URL。
参数:
companyId(数字,可选):来自listCompanies的代理公司 ID;若要为当前账户生成 URL,则省略campaignId(数字):活动 ID
Campaign 控制
每个 Campaign 控制工具都接受可选的 companyId,用于代理公司。
runCampaign(campaignId):启动 Campaign 执行pauseCampaign(campaignId):暂停 CampaignstopCampaign(campaignId):停止 CampaigndeleteCampaign(campaignId):彻底移除 CampaignmakeCampaignEditable(campaignId):启用 Campaign 修改
步骤管理
addEmailStep
向 Campaign 添加邮件跟进步骤。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):Campaign IDparentId(string):父步骤 IDversions(array,可选):邮件内容版本(最多 5 个;省略时使用一个空版本)deliveryTimes(object):发送时间followupAfter(object,可选):处理下一步骤前的延迟时间(省略时为 1 天)
addLinkedinProfileVisitStep
向 Campaign 添加 LinkedIn 个人资料访问跟进步骤。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):Campaign IDparentId(string):父步骤 IDlinkedinAccountId(number,可选):LinkedIn 账户 IDfollowupAfter(object,可选):处理下一步骤前的延迟时间(省略时为 1 天)
addLinkedinConnectionRequestStep
向 Campaign 添加 LinkedIn 连接请求跟进步骤。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):Campaign IDparentId(string):父步骤 IDlinkedinAccountId(number,可选):LinkedIn 账户 IDfollowupAfter(object,可选):处理下一步骤前的延迟时间(省略时为 1 天)bodyVersions(array,可选):连接请求消息版本(最多 5 个;省略时使用一个空版本)
addLinkedinDirectMessageStep
向 Campaign 添加 LinkedIn 私信跟进步骤。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):Campaign IDparentId(string):父步骤 IDlinkedinAccountId(number,可选):LinkedIn 账户 IDfollowupAfter(object,可选):处理下一步骤前的延迟时间(省略时为 1 天)bodyVersions(array,可选):私信内容版本(最多 5 个;省略时使用一个空版本)
addLinkedinInMailMessageStep
向处于 DRAFT 或 EDITED 状态的 Campaign 添加 LinkedIn InMail 消息跟进步骤。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):Campaign IDparentId(string):父步骤 IDlinkedinAccountId(number,可选):LinkedIn 账户 IDfollowupAfter(object,可选):处理下一步骤前的延迟时间(省略时为 1 天)bodyVersions(object 数组,可选):InMail 版本,可包含可选的subject和body字符串(最多 5 个;省略时使用一个无主题且正文为空的版本)
updateCampaignStep
修改步骤发送时间和排期。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):Campaign IDstepId(string):步骤 IDpayload(string):更新后的发送配置
updateEmailStepVersion
更新邮件内容、主题行、签名和跟踪设置。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):Campaign IDstepId(string):步骤 IDversionId(string):版本 IDsubject(string):邮件主题message(string):邮件正文(支持 HTML)signature(string):SENDER 或 NO_SIGNATUREtrackOpens(boolean):启用打开跟踪
updateLinkedinStepVersion
更新 LinkedIn 连接请求、私信或 InMail 内容。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):活动 IDstepId(string):步骤 IDversionId(string):版本 IDsubject(string,可选):InMail 主题,最多 200 个字符且不能包含片段;其他 LinkedIn 步骤类型省略此项message(string):消息正文内容
deleteCampaignStep
从活动中移除步骤。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):活动 IDstepId(string):步骤 ID
潜在客户操作
addProspectsToDatabase
将新的潜在客户添加到全局潜在客户列表,而不将其加入任何活动。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户prospectsPayload(string):潜在客户数据的 JSON 数组
注意:
- 潜在客户会添加到你的账户中,但不会添加到任何活动
- 可供日后加入活动
- 适用于在创建活动前建立潜在客户数据库
addProspectsToCampaign
批量添加潜在客户,并提供完整联系信息和自定义片段。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):活动 IDprospectsPayload(string):潜在客户对象数组
注意:始终检查响应中的 DUPLICATE 潜在客户。如需更新重复项的数据,请使用 updateProspectsInCampaign。
updateProspectsInDatabase
更新全局数据库中的现有潜在客户;如果不存在,则添加新的潜在客户。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户prospectsPayload(string):包含更新内容的潜在客户数据 JSON 数组
注意:
- 根据电子邮件地址更新现有潜在客户
- 如果电子邮件地址不存在,则添加新的潜在客户
- 只包含你想更新的字段
- 更新会全局生效(影响所有使用这些潜在客户的活动)
updateProspectsInCampaign
更新现有潜在客户数据(需要用户明确请求)。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):活动 IDprospectsPayload(string):包含更新内容的潜在客户对象数组
listProspectsInDatabase
列出全局潜在客户数据库中的潜在客户(不关联任何特定活动)。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户pageNumber(integer):页码(从 1 开始)
注意:
- 返回账户中所有潜在客户的分页结果
- 这些潜在客户可以添加到任何活动中
- 适用于管理整体潜在客户数据库
listProspectsInCampaign
分页获取活动中的潜在客户。
参数:
companyId(number,可选):来自listCompanies的代理公司 ID;省略时使用当前账户campaignId(number):活动 IDpageNumber(number):页码(从 1 开始)
searchProspects
根据特定条件搜索整个数据库中符合条件的潜在客户。
参数:
companyId(number,可选):来自listCompanies的代理机构公司 ID;省略则使用当前账户pageNumber(integer):页码(从 1 开始)searchCriteria(object,可选):搜索字段名称映射到字符串数组filterCriteria(object,可选):筛选字段名称映射到字符串值
可用的搜索字段:
email- 电子邮件地址first_name- 名last_name- 姓company- 公司名称organization_id- 组织 IDindustry- 行业website- 网站 URLtags- 标签(区分大小写,且不带前导 #)title- 职位phone- 电话号码address- 街道地址city- 城市state- 州/省country- 国家/地区snippet1至snippet15- 自定义字段
可用的筛选字段:
id- 以逗号分隔的潜在客户 ID 列表status- 潜在客户的全局状态:ACTIVE、BOUNCED、REPLIED、BLACKLIST、INVALIDcampaigns_id- 潜在客户已加入的营销活动 ID,以逗号分隔contacted- 潜在客户是否曾被联系过interested- 兴趣程度:INTERESTED、MAYBE-LATER、NOT-INTERESTED、NOT-MARKED
注意:
- 标签搜索区分大小写;按标签搜索时不要使用前导 #
- 搜索条件对同一字段使用 OR,对不同字段使用 AND
- 若要筛选 OPT-OUT 潜在客户,请使用 "BLACKLIST" 状态
- 多个筛选值以逗号分隔
deleteProspects
从数据库和/或特定营销活动中永久删除潜在客户。
参数:
companyId(number,可选):来自listCompanies的代理机构公司 ID;省略则使用当前账户prospectIds(string):要删除的潜在客户 ID 列表,以逗号分隔campaignIds(string,可选):要从中移除潜在客户的营销活动 ID 列表,以逗号分隔
注意:
- 不提供 campaignIds:从整个数据库中全局删除潜在客户
- 提供 campaignIds:仅从指定的营销活动中移除潜在客户
- 此操作永久生效,无法撤销
- 执行前需要用户明确确认
- 请使用通过列表/搜索操作获取的潜在客户 ID(而非电子邮件地址)
**警告:**全局删除会从所有营销活动和数据库中移除潜在客户。本地删除(提供 campaignIds)仅从指定的营销活动中移除潜在客户,同时保留在全局数据库中。
账户管理
listCompanies
列出代理机构账户中可用的公司,每页最多 50 家。
参数:
pageNumber(integer):页码(从 1 开始)active(boolean,可选):按活跃状态筛选
listMailboxes
获取可用于分配给营销活动的电子邮件账户。
参数:
companyId(number,可选):来自listCompanies的代理机构公司 ID;省略则使用当前账户filter(string):列出邮箱时使用的筛选条件(SMTP、SMTP_AVAILABLE_FOR_CAMPAIGN、IMAP、ALL)
listLinkedinAccounts
获取可用于分配给营销活动的 LinkedIn 账户。
参数:
companyId(number,可选):来自listCompanies的代理机构公司 ID;省略则使用当前账户filter(string):列出账户时使用的筛选条件(ALL、AVAILABLE_FOR_CAMPAIGN)
更新日志
v0.1.0(2026-09-16)
- 支持在 Woodpecker 工具中选择代理机构公司,并添加
listCompanies工具 - 改进可用于营销活动的邮箱选择
- 运行营销活动前要求进行额外验证
- 支持 LinkedIn InMail 步骤
- 放宽验证要求,并为多种创建营销活动和添加步骤的工具添加默认值
- 改进营销活动管理
- 支持 LinkedIn 营销活动
- 应要求,在列出营销活动、邮箱和潜在客户时返回更多详情
- 行为兼容性说明: 此版本引入了代理机构总部和客户公司账户结构。旧版或能力较弱的大模型可能无法可靠地区分这些账户范围,也可能无法始终传递
companyId,从而导致工具操作当前账户,而非预期的客户公司账户。
v0.0.9(2025-07-28)
- 内部改进和错误修复
v0.0.8(2025-06-24)
- 添加全局潜在客户列表工具
v0.0.7(2025-06-11)
- 首次发布,包含营销活动相关工具
文档
- Woodpecker MCP 服务:https://developers.woodpecker.co/docs/mcp/
- Woodpecker API:https://developers.woodpecker.co/docs/
- MCP 协议:https://modelcontextprotocol.io
- Claude Desktop:https://claude.ai/download
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。