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_posts和viewer_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 IDE 或 Claude Desktop
方法 1:使用 mcp.json 配置(推荐)⭐
适用于 Cursor IDE 和 Claude Desktop。这是最可靠且广泛支持的安装方法。
- 全局安装:
npm install -g linkedin-posts-hunter-mcp - 添加到 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" } } } - macOS/Linux:
- 对于 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" } } } - macOS:
- 对于 Cursor IDE:
打开或创建
- 重启 MCP 客户端(Cursor 或 Claude Desktop)
方法 2:本地开发设置
适用于想要修改代码或做出贡献的开发者。
- 克隆并安装依赖项:
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 - 添加到 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替换为你实际的项目路径。 - 对于 Cursor IDE (
- 重启 MCP 客户端 以加载服务器。
🎯 你可以做什么
求职工作流程示例
- 与 LinkedIn 进行认证:
用户:"Authenticate my LinkedIn account" AI:打开浏览器让你登录,保存凭证 - 搜索机会:
用户:"Search LinkedIn for 'Senior TypeScript Developer remote' jobs" AI:搜索 LinkedIn,提取帖子详情,保存到数据库 - 可视化探索:
用户:"Open the post viewer" AI:在 http://localhost:5174 启动 React 仪表盘(你可以在其中查看抓取的帖子) - 过滤和管理:
用户:"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:搜索数据库并显示匹配的帖子 - 跟踪申请:
用户:"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 也可以进一步改进。但就目前而言,它已经有一定的实用性。欢迎大家贡献力量。
微信扫一扫