LinkedIn网络爬虫MCP服务器
一种模型上下文协议(MCP)服务器,提供LinkedIn网络抓取功能作为人工智能助手的工具。此服务器使用Playwright自动化LinkedIn人员搜索和提取个人资料信息,通过MCP协议公开这些功能。
特性
- MCP工具集成:揭露LinkedIn抓取作为人工智能助手的MCP工具
- 人员搜索:使用关键字、位置和网络过滤器搜索LinkedIn个人资料
- 轮廓提取:从搜索结果中提取配置文件名称、URL和标题
- 会话管理:具有cookie持久性的LinkedIn自动登录
- 自适应选择器:使用多种CSS选择器策略处理LinkedIn UI更改
- 网络过滤:按连接程度过滤(第一、第二、第三+连接)
- 位置支持:使用LinkedIn的geoUrn代码或位置字符串按位置筛选
安装
- 克隆存储库:
git clone https://github.com/Phicks-debug/linkedin-web-scrapper.git
cd linkedin-web-scrapper-mcp-server- 安装依赖项:
npm install- 安装Playwright浏览器:
npx playwright install- 配置您的LinkedIn凭据:
cp config.example.json config.json然后编辑 config.json 使用您的LinkedIn凭据:
{
"linkedin": {
"email": "your-linkedin-email@email.com",
"password": "your-linkedin-password"
},
"browser": {
"headless": false,
"slowMo": 1000,
"cookiesPath": "./cookies.json"
}
}- 构建服务器:
npm run build用法
作为MCP服务器
此服务器旨在与MCP兼容的AI助手一起使用。服务器通过MCP协议公开LinkedIn抓取功能。
启动MCP服务器
# Start the server (connects via stdio)
node dist/index.js
# For development with auto-rebuild
npm run watch使用MCP检查器(开发)
使用MCP检查器测试服务器:
npm run inspector可用的MCP工具
search-linkedin-people
使用网络抓取搜索LinkedIn个人资料。
输入架构:
{
"keywords": "software engineer", // Required: Keywords to search for
"location": "105646813", // Optional: Location filter (geoUrn or location string)
"network": "F" // Optional: Network degree filter
}网络筛选器选项:
"F"-仅限一级连接"S"-二级连接"O"-三级以上连接(网络外)
位置示例:
"105646813"-西班牙(使用领英geoUrn)"San Francisco"-位置字符串- 违约:
"104195383"如果未指定
响应格式:
{
"success": true,
"count": 10,
"profiles": [
{
"name": "John Doe",
"profileUrl": "https://www.linkedin.com/in/johndoe",
"headline": "Senior Software Engineer at Tech Company"
}
],
"filters": {
"keywords": "software engineer",
"location": "105646813",
"network": "F"
}
}MCP集成
添加到Claude桌面
将此服务器添加到您的Claude Desktop MCP配置中:
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/path/to/linkedin-web-scrapper-mcp-server/dist/index.js"],
"cwd": "/path/to/linkedin-web-scrapper-mcp-server"
}
}
}与其他MCP客户端一起使用
服务器遵循标准MCP协议,可以通过连接到stdio传输与任何兼容MCP的客户端一起使用。
运作原理
- MCP协议:将LinkedIn抓取作为标准化的MCP工具公开
- 浏览器自动化:使用Playwright控制Chrome/Chromium浏览器
- 会话保持:保存LinkedIn会话Cookie以避免重复登录
- 人员搜索:使用指定的筛选器导航到LinkedIn人员搜索
- 轮廓提取:使用自适应CSS选择器提取配置文件数据
- 结构化输出:通过MCP协议返回JSON格式的结果
发展
脚本
| 脚本 | 描述 |
|---|---|
npm run build | 编译TypeScript并使其可执行 |
npm run watch | 开发观看模式 |
npm run inspector | 启动MCP检查器进行测试 |
npm run dev | 构建并运行服务器 |
项目结构
├── index.ts # Main MCP server implementation
├── config.json # LinkedIn credentials and browser settings
├── cookies.json # Saved session cookies (auto-generated)
├── package.json # MCP server configuration
└── dist/ # Compiled JavaScript output安全与隐私
- 本地凭据:您的LinkedIn凭据存储在本地
config.json - 会话cookie:保存在本地
cookies.json用于会话持久性 - 无数据传输:除了用于抓取的LinkedIn之外,不会将任何数据发送到任何地方
- 浏览器自动化:使用可见的浏览器窗口来避免检测
技术细节
- 协议:模型上下文协议(MCP)0.6.0
- 运行时:使用TypeScript的Node.js
- 浏览器引擎:使用Chromium的剧作家
- 运输:MCP通信的标准I/O(stdio)
- 目标:LinkedIn人物搜索API
错误处理
服务器处理常见场景:
- 会话到期时自动登录LinkedIn
- LinkedIn安全挑战(需要人工干预)
- 通过自适应选择器更改UI
- 网络超时和连接问题
局限性
- LinkedIn条款:负责任地使用并尊重LinkedIn的服务条款
- 速率限制:避免过多的请求以防止检测
- 手动挑战:安全挑战需要人工完成
- UI依赖关系:如果LinkedIn大幅更改其UI,可能需要更新
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 使用MCP检查员进行测试
- 提交拉取请求
有关问题和功能请求,请使用GitHub问题页面。
