返回 MCP 目录
public公开dns本地运行

linkedin-posts-hunter-mcp-server

LinkedIn职位帖子猎手MCP服务器是一个自动化LinkedIn职位帖子搜索和管理的工具,通过AI助手调用Playwright浏览器自动化工具搜索LinkedIn帖子,并将结果保存到本地SQLite数据库,同时提供React可视化界面进行帖子管理和申请跟踪。

article

README

🚀 LinkedIn Posts Hunter MCP Server

LinkedIn Posts Hunter MCP Server 是一款基于 Model Context Protocol (MCP) 的服务器,借助 AI 助手(如 Claude Desktop、Cursor 或其他支持 MCP 的客户端),实现对 LinkedIn 职位发布的自动化搜索与管理。

📖 概述

LinkedIn Posts Hunter MCP 是一个 Model Context Protocol (MCP) 服务器,它通过你的 AI 助手(Claude Desktop、Cursor 或其他兼容 MCP 的客户端),提供自动化搜索和管理 LinkedIn 职位发布的工具。

为何关注 LinkedIn 帖子? 工作机会通常首先出现在 LinkedIn 帖子中,然后才会发布到传统的招聘网站上。通过监控 LinkedIn 帖子,你可以更早地发现机会,在求职中获得竞争优势。

工作原理:

1. 认证与数据抓取

  • MCP 服务器提供了一个基于 Playwright 的工具,你的 AI 助手可以调用该工具来自动与 LinkedIn 进行浏览器交互。
  • 首次使用时,需要通过浏览器窗口登录 LinkedIn 以捕获会话 cookie。
  • 这些 cookie 存储在你的本地计算机上,用于持久认证。
  • 认证完成后,你的 AI 助手可以使用关键词(来自你的对话或由 AI 建议)调用搜索工具来抓取职位发布信息。

2. 本地数据存储

  • 所有抓取的帖子都保存到你机器上的 本地 SQLite 数据库 中。
  • 数据库存储帖子内容、元数据(作者、日期、参与度指标)和跟踪信息(你是否已申请)。
  • 你的数据不会离开你的计算机。

3. 可视化界面

  • 一个独立的工具会启动一个 React 仪表盘,从你的本地数据库中渲染抓取的帖子。
  • 以表格或卡片视图可视化所有抓取的帖子,包含个人资料图片和参与度指标。
  • 跟踪你的申请,直接在 UI 中将帖子标记为“已申请”或“稍后保存”。
  • 快速操作 让你可以通过点击轻松过滤、排序和管理帖子。
  • 在 React 应用中所做的更改会写入本地数据库,通过 MCP 命令所做的更改也会反映在 UI 中。

4. 双重控制

  • 你可以通过 React UI 或 MCP 工具(如 manage_postsviewer_filters)来管理帖子。
  • React 应用通过 轮询 进行更新,因此通过 MCP 命令所做的更改会反映在 UI 中。
  • 这为你提供了灵活性:你可以使用自然语言命令与你的 AI 助手交互,也可以在仪表盘中进行点击操作。

🎬 视频演示

点击观看

🎨 架构图

架构图

🛠️ 可用工具

这个 MCP 服务器提供了 6 个工具,可以从你的 AI 助手中调用:

1. auth

管理 LinkedIn 认证并进行持久会话存储。

  • 参数
    • action"authenticate" | "status" | "clear"
    • force_reauth:布尔值(可选)
  • 用法
    "Authenticate my LinkedIn account"
    "Check LinkedIn auth status"
    "Clear my LinkedIn credentials"
    

2. search_posts

根据关键词搜索 LinkedIn 帖子并将结果保存到数据库。

  • 参数
    • keywords:字符串(例如,"Python developer remote")
    • pagination:数字(1 - 10,默认值:3)
    • headless:布尔值(默认值:false) - 是否显示浏览器窗口
  • 用法
    "Search LinkedIn for 'AI engineer' jobs"
    "Find posts about 'React developer' with 5 pages"
    

3. manage_posts

通过高级过滤从数据库中读取、更新或删除帖子。

  • 参数
    • action"read" | "update" | "delete"
    • ids:数字数组(可选)
    • search_text:字符串(可选)
    • date_from:字符串(YYYY - MM - DD,可选)
    • date_to:字符串(YYYY - MM - DD,可选)
    • applied:布尔值(可选)
    • limit:数字(1 - 50,默认值:10)
    • new_description:字符串(用于更新)
    • new_keywords:字符串(用于更新)
    • new_applied:布尔值(用于更新)
  • 用法
    "Show me posts I haven't applied to yet"
    "Delete all posts that arent about job opportunities"
    "Delete all posts that are only about senior-level positions"
    

4. viewer_filters

通过 AI 对话以编程方式控制 React UI 过滤器。

  • 参数
    • keyword:字符串(可选)
    • applied_status"all" | "applied" | "not-applied"(可选)
    • start_date:字符串(YYYY - MM - DD,可选)
    • end_date:字符串(YYYY - MM - DD,可选)
    • ids:字符串(逗号分隔,可选)
    • reset:布尔值(可选)
  • 用法
    "Filter to show only unapplied posts"
    "Show posts from this week"
    "Reset all filters"
    

5. start_viewer

在浏览器中启动 React 仪表盘。

  • 用法
    "Open the LinkedIn post viewer"
    "Start the dashboard"
    

6. stop_viewer

停止正在运行的 Vite 开发服务器。

  • 用法
    "Close the viewer"
    "Stop the dashboard"
    

📦 安装

前提条件

  • Node.js 18 或更高版本
  • npm(随 Node.js 一起安装)
  • 一个 LinkedIn 账户
  • Cursor IDEClaude Desktop

方法 1:使用 mcp.json 配置(推荐)⭐

适用于 Cursor IDE 和 Claude Desktop。这是最可靠且广泛支持的安装方法。

  1. 全局安装
    npm install -g linkedin-posts-hunter-mcp
    
  2. 添加到 MCP 配置
    • 对于 Cursor IDE: 打开或创建 mcp.json 文件,路径如下:
      • macOS/Linux~/.cursor/mcp.json
      • Windows%USERPROFILE%\.cursor\mcp.json(通常为 C:\Users\YourName\.cursor\mcp.json) 添加以下配置:
      {
        "mcpServers": {
          "linkedin-posts-hunter-mcp": {
            "command": "linkedin-posts-hunter-mcp"
          }
        }
      }
      
    • 对于 Claude Desktop: 打开或创建 claude_desktop_config.json 文件,路径如下:
      • macOS~/Library/Application Support/Claude/claude_desktop_config.json
      • Windows%APPDATA%\Claude\claude_desktop_config.json 添加以下配置:
      {
        "mcpServers": {
          "linkedin-posts-hunter-mcp": {
            "command": "linkedin-posts-hunter-mcp"
          }
        }
      }
      
  3. 重启 MCP 客户端(Cursor 或 Claude Desktop)

方法 2:本地开发设置

适用于想要修改代码或做出贡献的开发者。

  1. 克隆并安装依赖项
    git clone https://github.com/kevin-weitgenant/LinkedIn-Posts-Hunter-MCP-Server.git
    cd LinkedIn-Posts-Hunter-MCP-Server
    npm run install:all
    npm run build
    
  2. 添加到 MCP 配置
    • 对于 Cursor IDE (mcp.json):
      {
        "mcpServers": {
          "linkedin-posts-hunter-mcp": {
            "command": "node",
            "args": [
              "/absolute/path/to/LinkedIn-Posts-Hunter-MCP-Server/build/index.js"
            ],
            "cwd": "/absolute/path/to/LinkedIn-Posts-Hunter-MCP-Server"
          }
        }
      }
      
    • 对于 Claude Desktop (claude_desktop_config.json):
      {
        "mcpServers": {
          "linkedin-posts-hunter-mcp": {
            "command": "node",
            "args": [
              "/absolute/path/to/LinkedIn-Posts-Hunter-MCP-Server/build/index.js"
            ],
            "cwd": "/absolute/path/to/LinkedIn-Posts-Hunter-MCP-Server"
          }
        }
      }
      
    ⚠️ 重要提示:将 /absolute/path/to/LinkedIn-Posts-Hunter-MCP-Server 替换为你实际的项目路径。
  3. 重启 MCP 客户端 以加载服务器。

🎯 你可以做什么

求职工作流程示例

  1. 与 LinkedIn 进行认证
    用户:"Authenticate my LinkedIn account"
    AI:打开浏览器让你登录,保存凭证
    
  2. 搜索机会
    用户:"Search LinkedIn for 'Senior TypeScript Developer remote' jobs"
    AI:搜索 LinkedIn,提取帖子详情,保存到数据库
    
  3. 可视化探索
    用户:"Open the post viewer"
    AI:在 http://localhost:5174 启动 React 仪表盘(你可以在其中查看抓取的帖子)
    
  4. 过滤和管理
    用户:"Remove posts that aren't about job opportunities"
    AI:读取数据库,过滤并仅显示与工作相关的帖子
    
    用户:"Show only senior-level positions" 
    AI:查询数据库中包含 "senior"、"lead"、"principal" 的帖子
    
    用户:"Show posts about React or Vue.js positions"
    AI:搜索数据库并显示匹配的帖子
    
  5. 跟踪申请
    用户:"Mark posts 5, 7, and 12 as applied"
    AI:更新数据库并确认
    

📁 数据存储位置

所有 LinkedIn 数据都存储在你计算机的本地以下目录中:

Windows

  • 主数据目录%APPDATA%\linkedin-mcp\

macOS/Linux

  • 主数据目录~/.linkedin-mcp/

存储内容

  • linkedin.db - 包含所有抓取的帖子、元数据和跟踪数据的 SQLite 数据库
  • auth.json - 你的 LinkedIn 会话 cookie 和认证令牌
  • searches/ - 搜索会话数据和临时文件

数据隐私

  • ✅ 所有数据都保留在你的计算机上
  • ✅ 没有数据发送到外部服务器
  • ✅ 你可以删除整个 linkedin-mcp 文件夹以删除所有数据
  • ✅ 数据库是标准的 SQLite 格式 - 你可以使用任何 SQLite 浏览器打开它

🎨 React 仪表盘功能

内置的 Web 查看器 (start_viewer) 提供以下功能:

  • 🔄 实时更新:过滤器状态在 UI 和 MCP 命令之间同步
  • ✅ 快速操作:直接从 UI 中将帖子标记为已申请
  • 🎴 卡片视图:带有个人资料图片和参与度指标的可视化卡片
  • 📊 表格视图:带有所有帖子元数据的可排序列
  • 🔍 过滤:按关键词、日期范围、申请状态和 ID 进行过滤
  • 💅 现代设计:使用 React、TypeScript、TailwindCSS 和 Vite 构建

📄 许可证

ISC

🤝 贡献

欢迎贡献!随时打开问题或提交拉取请求。

🚀 项目状态

这是一个实验性项目,可能存在一些不足。数据抓取可以进一步优化以提高速度,UI 也可以进一步改进。但就目前而言,它已经有一定的实用性。欢迎大家贡献力量。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端