项目简介
这是一个为大型语言模型(LLM)代理设计的 MCP 服务器,用于自动化执行 LinkedIn 相关的任务。它充当代理和 LinkedIn 之间的桥梁,利用 PhantomBuster 服务进行实际操作,例如抓取个人资料、公司信息、收件箱内容以及发送消息。服务器通过标准 MCP 协议与客户端(如 Cursor)通信。
主要功能点
- 抓取 LinkedIn 个人资料(姓名、经历、技能、关于等)。
- 抓取 LinkedIn 公司页面信息(名称、行业、规模、描述等)。
- 抓取 LinkedIn 收件箱会话列表(包含最新消息、参与者、状态等)。
- 抓取特定 LinkedIn 会话中的所有消息。
- 向指定的 LinkedIn 会话或用户发送消息,并支持多种发送控制选项。
安装步骤
-
确保您已安装 Python 3.8 或更高版本。
-
获取必要凭据: 您需要一个 PhantomBuster 账户和 API 密钥。同时,您需要获取您的 LinkedIn 账户的会话 Cookie ('li_at') 和您浏览器的 User Agent 字符串。这些信息用于模拟登录并授权 PhantomBuster 代表您执行操作。通常可以在 PhantomBuster 或相关自动化工具的文档中找到如何安全获取这些凭据的指导,或者通过浏览器开发者工具查看 LinkedIn 站点的 Cookie。
-
安装依赖: 使用 pip 安装项目所需的 Python 库,包括 'python-dotenv', 'requests', 和 'pydantic'。
-
配置环境变量: 在项目根目录下创建一个名为 '.env' 的文件。将您获取到的凭据添加到此文件中,格式如下(请替换占位符):
PHANTOMBUSTER_API_KEY=您的PhantomBuster API密钥 LINKEDIN_COOKIE_LI=您的LinkedIn会话Cookie (li_at) LINKEDIN_BROWSER_AGENT=您的浏览器UserAgent字符串
服务器配置
该 MCP 服务器作为一个独立的进程运行,旨在由支持 MCP 协议的客户端(如 Cursor 或其他自定义 LLM 代理应用)启动和管理。客户端通常需要以下配置信息来启动此服务器作为子进程并通过标准输入/输出 (Stdio) 或其他协议建立连接:
- 服务器名称 (Name): 客户端识别该服务器的名称,例如填写 '"linkedin-server"'。
- 启动命令 (Command): 用于执行服务器脚本的命令,通常是 Python 解释器的路径,例如填写 '"python"'。
- 启动参数 (Args): 传递给启动命令的参数列表,通常包含服务器主脚本的路径。请根据您的项目实际存放位置填写,例如 '["{pathtoproject}/mcp_server/linkedin-server.py"]'。这里的 '{pathtoproject}' 是一个占位符,表示 MCP 客户端运行时会自动解析的项目根目录路径。
- 环境变量 (Env): 在启动服务器进程时需要设置的环境变量。这些变量会传递给服务器脚本,用于读取配置信息。您需要在客户端配置中再次指定 '.env' 文件中的关键信息,或者直接在此处提供它们(推荐从安全位置读取并在此处传递)。例如:
- 'PYTHONPATH': 设置 Python 模块搜索路径,通常指向项目根目录,例如 '"{pathtoproject}"'。
- 'PHANTOMBUSTER_API_KEY': 您的 PhantomBuster API 密钥。
- 'LINKEDIN_COOKIE_LI': 您的 LinkedIn 会话 Cookie。
- 'LINKEDIN_BROWSER_AGENT': 您的浏览器 User Agent 字符串。
- 描述 (Description): 对该服务器功能的简要说明,方便用户理解,例如填写 '"LinkedIn MCP server: scrap profile, company, inbox, and send messages via PhantomBuster."'。
客户端将使用这些信息启动并连接到 MCP 服务器。
基本使用方法
MCP 客户端成功连接到该服务器后,可以通过 MCP 协议调用服务器提供的工具(Tools)。典型的交互流程是:
- 客户端连接: MCP 客户端根据配置信息启动服务器进程并建立连接(例如通过 Stdio)。
- 能力协商: 客户端可以请求服务器提供它支持的所有工具列表(包括工具名称、描述和所需的参数)。
- 工具调用: 根据用户的请求或代理的需求,客户端调用特定的工具并传递必要的参数。例如,要抓取个人资料,客户端会调用名为 'scrap_profile' 的工具,并传递一个参数,其键为 'linkedin',值为要抓取的个人资料 URL。
- 结果处理: 服务器执行工具对应的任务(例如调用 PhantomBuster API),然后将结果(抓取到的数据或操作成功/失败状态)按照工具定义的数据结构通过 MCP 协议返回给客户端。客户端接收并处理这些结构化的数据。
例如,客户端调用 'scrap_profile' 工具并成功后,会收到一个包含个人姓名、工作经历、教育背景等信息的结构化数据对象。
信息
分类
网页与API