ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MCP协议+Claude Code:打造LinkedIn外联自动化流水线

MCP协议+Claude Code:打造LinkedIn外联自动化流水线 如果你做过 B2B 销售或增长运营大概率经历过这种场景消息模板写好了1000 条目标联系人名单也整理好了但真正开始执行时只能一条条复制、粘贴、微调、发送。一天下来能发出 50 条就算效率不错还要时刻担心复制错人或者发了 200 条之后就完全分不清谁回复过、谁还需要跟进。最近 Claude Code 和 Codex 这类终端型 Agent 火了之后很多人的第一反应是拿它们写代码、改 Bug。但还有一个非常值得关注的用法把它们当作“外联自动化系统的主管”通过 MCP 协议接入约 30 个工具让 AI 自己完成线索筛选、背景调研、文案生成、审核队列、消息发送和效果追踪。这篇文章要拆解的就是标题里的这句话Let Claude/Codex run actual 1000s of LinkedIn outreach with ~30 MCP tools。先给一个明确判断真正难的已经不是让 AI 写一条消息而是设计一套可以被 AI 调度的工具链并且安排好人工审核节点。本文会从 MCP 协议讲起然后拆解为什么外联场景需要约 30 个工具接着给出环境搭建、MCP 配置、最小跑通示例、常见问题和工程化建议。无论你是做 B2B 营销、开发者关系、招聘还是自己在做独立产品这套思路都能直接落地。1. 这篇文章真正要解决的问题单看“用 AI 写 1000 条 LinkedIn 消息”这件事很多人第一时间想到的是让 ChatGPT 生成 1000 条个性化文案然后人工去发。这个想法只对了一半。真正跑过外联的人都知道一天能发出 30 到 50 条已经算很快1000 条意味着接近一个月的体力劳动而且越到后面消息的个性化程度越低回复率也越差。所以这个场景的瓶颈从来不在“内容生成”而在“流程执行”。你需要一个系统来承担这些环节导入 1000 条线索而不是每次手动粘贴一条解析每条线索所在公司的背景和动态为每个联系人生成差异化开场白把所有草稿写入待审核队列等待人工确认后统一发送追踪消息状态谁回复了谁需要二次跟进把有效回复回写到 CRM 或表格。Claude Code 和 Codex 这类终端 Agent 的价值正在于它们可以作为这个系统的大脑。MCP 协议则解决了大脑与外部系统之间的连接问题每一个工具都是一台“外接设备”Agent 在运行时会按需调用。这篇文章适合以下几类读者正在做 B2B 销售、增长、开发者关系、人才招聘的从业者想用 Claude Code / Codex 做真实工作流的开发者对 MCP 协议感兴趣想理解它为什么这么火的技术人想把自己的业务系统接入 Agent但不知道从哪里开始的人。如果你只是想知道“哪个模型写文案更好”这篇文章可能不适合你。如果你想搞清楚“如何把一批 AI 工具编排成一条完整流水线”那这篇文章能给你一套可以照做的路径。2. MCP 协议、Claude Code 与 Codex先弄清楚几个概念2.1 MCP 到底是什么MCP 全称是 Model Context Protocol即模型上下文协议。它最早由 Anthropic 提出并开源后来被 OpenAI 等公司接受现在已经成为 Agent 工具接入的事实标准之一。它定义了一种统一的 JSON-RPC 消息格式让 AI 应用可以动态发现工具、调用工具、获取结果。不需要为每个工具写一套私有适配器也不需要把工具逻辑硬编码进模型。我习惯用一个类比来解释 MCPUSB-C。过去每个外设都有自己的接口接一个设备要装一套驱动。MCP 相当于统一成一个标准接口只要新的工具实现了 MCP 协议Agent 就能即插即用。今天一个 MCP server 可以连接数据库、CRM、表格、浏览器自动化、邮件服务甚至 Figma 这类设计工具。蓝湖 MCP、Figma MCP 能出现在技术圈热搜里就是这个生态扩展的结果。2.2 Claude Code 和 Codex 各是什么Claude Code 是 Anthropic 推出的终端智能体一般通过claude命令启动。它不只是简单的聊天机器人而是能读取项目文件、执行命令、修改代码、调用外部工具的 Agent。Codex 是 OpenAI 推出的终端智能体定位和 Claude Code 很接近默认使用 OpenAI 的模型也支持配置自定义 endpoint 接入其他模型服务。两者都原生支持 MCP这是它们能跑复杂任务的关键。很多搜索词里出现的“Claude Code 安装”“Codex 安装”“VSCode 配置 Claude Code”说明已经有一批开发者开始把这类 Agent 当作开发环境的一部分。但 Claude Code 和 Codex 的能力边界并不只是写代码它们可以通过 MCP 调用几乎任何具备接口的外部系统。2.3 MCP 与 Agent Skill 的区别最近还有一个概念很火Agent Skill。它和 MCP 容易混淆但两者解决的问题不同。Skill 是给 Agent 的“行为手册”它改变的是 Agent 在思考时用什么方法论、按什么步骤做事MCP 是给 Agent 的“外接工具接口”它改变的是 Agent 能调用什么真实世界能力。举个例子你可以给 Claude Code 写一个 Skill规定“外联消息要先调研公司背景再动笔长度不超过 200 字符”。这个 Skill 只负责规范行为。但真正去查询公司库、写入数据库、发消息仍然要靠 MCP server。在实际工程中两者通常配合使用Skill 负责约束流程MCP 负责提供能力。很多人把这两个概念混为一谈会导致配置了 Skill 却发现 Agent 仍然无法操作外部系统的困惑。3. 为什么 1000 条外联需要约 30 个 MCP 工具3.1 外联流程拆解LinkedIn 外联不是“写一条消息发出去”这么简单。按工程化视角拆解一条完整的外联链路由六个阶段组成定位与筛选找到目标联系人包括职位、公司、行业、地域等维度数据补全与验证补齐公司简介、人员背景、邮箱或联系方式验证数据有效性个性化内容生成根据每个联系人的背景生成差异化消息审核与队列管理把草稿放入待审核队列人工确认后放行执行发送与跟踪实际发送连接请求或私信记录发送状态数据回写与复盘把回复情况写回 CRM统计回复率和后续跟进任务。这六个阶段需要的能力完全不同一个通用的聊天界面无法覆盖甚至一个两个 MCP server 也覆盖不了。这就是为什么场景会需要约 30 个 MCP 工具。3.2 工具不是越多越好而是分类要全“约 30 个 MCP 工具”这个数字看起来很夸张实际上是把整套外联流水线中所有可能用到的外部能力加总。按类型拆开看大约是下面这个结构工具分类典型能力数量范围线索获取类搜索联系人、公司列表、Sales Navigator 数据、招聘信息5-8数据增强类公司简介、职位变更、邮箱查找与验证、社交动态4-6内容生成类模板管理、多语言翻译、文案改写、语气审查3-5流程与存储类数据库、表格、队列、状态管理、消息通知4-7执行发送类浏览器自动化、官方 API 发送、定时发送2-4分析与监控类回复分类、链接点击、CRM 写入、日报生成3-5累计数量在 21 到 35 之间所以“约 30 个”是一个合理规模。但这里要特别提醒不是一次任务把所有工具全部启用。工具数量越多Agent 的上下文占用越严重选择出错的概率也越高。正确做法是把工具按阶段分组比如“线索获取阶段”只启用线索类和数据增强类“发送阶段”才启用发送和追踪类工具。3.3 MCP 生态不限于 LinkedInMCP 的价值也不只是让 Agent 调浏览器或发私信。现在很多业务系统都在提供 MCP server比如通过 MCP 直接连接数据库、通过 MCP 接入设计稿、通过 MCP 写入 CRM。Workbuddy 这类工具可以让 Agent 通过 MCP 直接访问数据库本质上也是一种“外联系统”。所以本文讲的是 LinkedIn 外联但背后的架构思路是通用的。你换一个场景比如邮件营销、开发者社区招募、客户成功回访只需要替换对应的 MCP server 即可。4. 环境准备与前置条件4.1 基础环境要求在开始之前你需要准备以下环境Node.js 18 及以上版本因为 Claude Code、Codex 和大多数 MCP server 都基于 Node.js 生态一个可用的 Claude 账号或 OpenAI 账号一个终端环境。macOS、Linux 可以直接用系统终端Windows 推荐使用 PowerShell 或 WSL准备一个实验目录不要直接在正式项目目录里做第一个测试。如果使用 Claude Code 时遇到 “unfortunately, claude is not available to new users right now” 这类提示说明当前注册通路受限可以稍后再试或使用已有账号和组织账号。4.2 安装 Claude Code 与 Codex安装命令以官方文档为准下面给出常见安装方式作为示例# 检查 Node.js 环境 node -v npm -v # 安装 Claude Code以官方安装文档为准 npm install -g anthropic-ai/claude-code claude --version # 安装 Codex CLI以官方安装文档为准 npm install -g openai/codex codex --version如果安装后终端提示“claude 不是内部或外部命令”一般是 npm 全局 bin 目录没有加入 PATH或者安装过程失败。重新安装前可以先执行npm config get prefix查看全局安装路径。4.3 注册 MCP Server确认 CLI 安装成功后可以用内置命令注册 MCP server# 查看当前版本支持的 MCP 命令 claude mcp --help codex mcp --help # Claude Code 注册示例添加一个线索查询 MCP claude mcp add linkedin-prospect \ --env LINKEDIN_ACCESS_TOKENyour_token_here \ -- npx example/linkedin-prospect-mcp # 查看已注册的 MCP server claude mcp list # Codex 注册示例 codex mcp add linkedin-prospect \ -- npx example/linkedin-prospect-mcp codex mcp list上面示例中的example/linkedin-prospect-mcp是占位包名实际使用时应换成你自己搭建或社区维护的 MCP server。这里想说明的是注册方式通过mcp add命令把某个可执行命令注册为 Agent 可调用的工具。如果你管理大量 MCP server更推荐使用项目级配置文件.mcp.json下一章会给出完整示例。5. 核心架构与编排设计让 Agent 成为“流程主管”5.1 分层架构用 Claude Code / Codex 跑 1000 条 LinkedIn 外联核心不是写一段提示词而是设计一套分层架构。推荐按四层拆分入口层Claude Code 或 Codex CLI负责接收任务指令编排层Agent 的推理能力根据任务拆分步骤决定何时调用哪个 MCP 工具工具层约 30 个 MCP server提供读线索、查公司、写表格、发消息等能力数据层CSV、SQLite、PostgreSQL 或 Airtable存放线索、草稿、发送记录和回复状态。这套架构还有一个重要组成部分审批层。审批层不一定是系统而是流程节点典型做法是“所有消息进入待审核队列人工确认后才允许发送”。5.2 状态机设计外联系统的核心是一张状态表每条线索在不同阶段之间流转。建议至少包含以下状态draftAI 已生成消息草稿review草稿进入人工审核队列approved人工审核通过允许发送sent已发送replied对方已回复archived已归档或无效线索。为什么要显式维护状态机因为 1000 条外联不是一次性发完而是分批进行。如果没有状态管理AI 很容易重复生成、重复发送或者遗漏跟进。状态机是防止这类事故最简单有效的办法。5.3 为什么要加人工审核节点很多人做外联自动化时最担心的就是 AI 直接发送消息导致账号异常或者内容失控。更稳妥的方案是AI 只负责生成草稿并写入审核队列人工检查 10% 到 20% 的样本确认内容质量审核通过后由另一个独立的发送工具执行发送发送间隔、每日上限单独控制。这个模式牺牲了一点自动化程度但换来了可审核、可回滚、可追责。在生产环境中宁可慢一点也不要让 AI 裸奔发送。6. 完整示例从 0 到 1 跑通最小外联任务这一章用一个最小示例跑通流程。目标是让 Claude Code 或 Codex 读取线索 CSV调用两个 MCP 工具生成 10 条待审核消息。6.1 准备线索数据在项目目录下创建leads.csvname,company,title,linkedin_url 李华,云启科技,CTO,https://www.linkedin.com/in/lihua 张伟,星途数据,创始人,https://www.linkedin.com/in/zhangwei 王芳,晨光智能,市场总监,https://www.linkedin.com/in/wangfang这是外联系统的输入。字段不需要太多够用即可。6.2 创建 MCP 配置文件在项目根目录创建.mcp.json{ mcpServers: { linkedin-prospect: { command: npx, args: [example/linkedin-prospect-mcp], env: { LINKEDIN_ACCESS_TOKEN: your_token_here } }, company-info: { command: npx, args: [example/company-info-mcp] }, spreadsheet-store: { command: npx, args: [example/spreadsheet-store-mcp] } } }这是当前 Claude Code 和 Codex 都支持的 MCP 配置文件格式。其中linkedin-prospect负责查询联系人company-info负责获取公司简介spreadsheet-store负责把草稿写入表格。6.3 编写任务 Prompt创建task.md内容就是让 Agent 执行外联任务的指令你是外联系统主管。请按以下步骤执行 1. 读取 leads.csv 中前 10 条记录。 2. 对每条记录调用 company-info 中的 get_company_summary 工具获取公司一句话简介。 3. 使用 create_draft_message 工具生成一条不超过 200 字符的个性化消息。 4. 将生成结果写入 spreadsheet-store 中的 pending_review 表状态设为 draft。 5. 最后输出统计摘要包括读取数量、生成数量和失败数量。这段话里的工具名需要和你实际接入的 MCP server 暴露的方法保持一致。如果写错工具名Agent 会返回tool not found错误。6.4 运行任务把任务文本交给 Claude Code 或 Codex# Claude Code 非交互模式 claude -p $(cat task.md) # 或进入交互模式后粘贴 task.md 内容 claude # Codex 执行 codex exec $(cat task.md)如果你的 CLI 版本不支持exec子命令不同版本可能使用其他子命令以codex --help输出为准。6.5 MCP 协议最小骨架示例如果你对 MCP 协议本身感兴趣或者想自己写一个简单的 MCP server下面这个 Node.js 示例展示了协议最核心的三个方法initialize、tools/list、tools/call。// 文件路径demo-mcp-server.js const readline require(readline); const tools [ { name: create_draft_message, description: 根据联系人信息生成外联消息草稿, inputSchema: { type: object, properties: { name: { type: string, description: 联系人姓名 }, company: { type: string, description: 公司名称 } } } } ]; const rl readline.createInterface({ input: process.stdin }); rl.on(line, (line) { try { const req JSON.parse(line); if (req.method initialize) { const result { protocolVersion: 2024-11-05, capabilities: { tools: {} }, serverInfo: { name: demo-mcp-server, version: 1.0.0 } }; process.stdout.write( JSON.stringify({ jsonrpc: 2.0, id: req.id, result }) \n ); } else if (req.method tools/list) { process.stdout.write( JSON.stringify({ jsonrpc: 2.0, id: req.id, result: { tools } }) \n ); } else if (req.method tools/call req.params.name create_draft_message) { const args req.params.arguments || {}; const text Hi (args.name || ) , I came across (args.company || your company) and wanted to connect.; process.stdout.write( JSON.stringify({ jsonrpc: 2.0, id: req.id, result: { content: [{ type: text, text }] } }) \n ); } } catch (err) { process.stderr.write(
返回列表