LinkedIn数据抓取服务

一个允许AI助手连接LinkedIn并访问个人资料、公司信息、职位搜索等数据的服务。

作者 By stickerdaniel
本地部署 数据抓取 LinkedIn集成
GitHub

LinkedIn MCP服务器

PyPI CI Status Release License

通过这个LinkedIn MCP服务器,像克劳德这样的人工智能助手可以连接到你的LinkedIn。访问个人资料和公司,搜索工作或获取工作详细信息。

安装方法

https://github.com/user-attachments/assets/eb84419a-6eaf-47bd-ac52-37bc59c83680

用法示例

1Research the background of this candidate https://www.linkedin.com/in/stickerdaniel/
1Get this company profile for partnership discussions https://www.linkedin.com/company/inframs/
1Suggest improvements for my CV to target this job posting https://www.linkedin.com/jobs/view/4252026496
1What has Anthropic been posting about recently? https://www.linkedin.com/company/anthropicresearch/

功能和工具状态

工具描述状态
get_person_profile通过明确的部分选择(经验、教育、兴趣、荣誉、语言、证书、contact_info、帖子)获取个人资料信息工作
connect_with_person发送连接请求或接受传入请求,并附上可选注释#304
get_sidebar_profiles从个人资料页面上的侧边栏推荐部分(“为您提供更多个人资料”、“探索高级个人资料”和“您可能认识的人”)提取个人资料URL工作
get_inbox列出LinkedIn消息收件箱中最近的对话正在工作
get_conversation通过用户名或线程ID读取特定的消息对话#307
search_conversations按关键字搜索邮件有效
send_message向LinkedIn用户发送消息(需要确认)正在工作
get_company_profile通过明确的部门选择(职位、工作)提取公司信息工作
get_company_posts从公司的LinkedIn订阅源获取最新帖子工作
search_jobs使用关键字和位置过滤器搜索工作正在工作
search_people按关键字和位置搜索人员工作
get_job_details获取特定职位发布的详细信息工作
close_session关闭浏览器会话并清理资源正常工作

[!重要] 突破性变化: LinkedIn最近进行了一些更改以防止抓取。最新版本使用 Patchright 使用持久的浏览器配置文件,而不是使用会话文件的Playwright。老的 session.json 文件和 LINKEDIN_COOKIE 不再支持env变量。跑 --login 再次创建一个可以挂载到docker中的新profile+cookie文件。 02/2026

🚀 uvx设置(推荐-通用)

先决条件: 安装uv.

安装

客户端配置

JSON``` 1 2 3 4 5 6 7 8 9{ “mcpServers”: { “linkedin”: { “command”: “uvx”, “args”: [“linkedin-scraper-mcp@latest”], “env”: { “UV_HTTP_TIMEOUT”: “300” } } } }


这 `@latest` 标签确保您始终运行最新版本-- `uvx` 在每次客户端启动时检查PyPI并自动更新。服务器快速启动,在后台准备共享的Patchright Chromium浏览器缓存 `~/.linkedin-mcp/patchright-browsers`,并在需要身份验证的第一个工具调用上打开LinkedIn登录浏览器窗口。


> [!注意]
> 在浏览器设置或登录完成之前,早期的工具调用可能会返回正在进行的设置/身份验证错误。如果您希望显式创建会话,请运行 `uvx linkedin-scraper-mcp@latest --login`.


### uvx设置帮助



🔧 Configuration
**运输方式:**


- **默认值(stdio)**:本地MCP服务器的标准通信
- **可流式传输的HTTP**:用于基于web的MCP服务器
- 如果未指定传输,则服务器默认为 `stdio`
- 没有显式传输的交互式终端显示选择器提示


**CLI选项:**


- `--login` -打开浏览器登录并保存持久配置文件
- `--no-headless` -显示浏览器窗口(用于调试抓取问题)
- `--log-level {DEBUG,INFO,WARNING,ERROR}` -设置日志记录级别(默认值:警告)
- `--transport {stdio,streamable-http}` -可选:强制传输模式(默认:stdio)
- `--host HOST` -HTTP服务器主机(默认值:127.0.0.1)
- `--port PORT` -HTTP服务器端口(默认值:8000)
- `--path PATH` -HTTP服务器路径(默认值:/mcp)
- `--logout` -清除存储的LinkedIn浏览器配置文件
- `--timeout MS` -页面操作的浏览器超时时间(毫秒)(默认值:5000)
- `--user-data-dir PATH` -持久浏览器配置文件目录的路径(默认:~/.llinkedin mcp/profile)
- `--chrome-path PATH` -Chrome/Chromium可执行文件的路径(用于自定义浏览器安装)


**基本用法示例:**


BASH```
1
2# Run with debug logging
uvx linkedin-scraper-mcp@latest --log-level DEBUG

HTTP模式示例(适用于基于web的MCP客户端):

BASH``` 1uvx linkedin-scraper-mcp@latest —transport streamable-http —host 127.0.0.1 —port 8080 —path /mcp


运行时服务器日志由FastMCP/Uvicorn发出。


工具调用在单个服务器进程中序列化,以保护共享
LinkedIn浏览器会话。并发客户端请求队列,而不是在中运行
平行。使用 `--log-level DEBUG` 查看刮刀锁等待/获取/释放日志。


**使用mcp检查员进行测试:**


1. 安装并运行mcp检查器 `bunx @modelcontextprotocol/inspector`
2. 点击预先填写的令牌url,在浏览器中打开检查器
3. 选择 `Streamable HTTP` 作为 `Transport Type`
4. 集 `URL` 到 `http://localhost:8080/mcp`
5. 连接
6. 测试工具




❗ Troubleshooting
**安装问题:**


- 确保您已安装紫外线: `curl -LsSf https://astral.sh/uv/install.sh | sh`
- 检查紫外线版本: `uv --version` (应为0.4.0或更高)
- 在第一次运行时, `uvx` 下载所有Python依赖项。在慢速连接时,uv的默认30秒HTTP超时可能太短。上述推荐配置已设置 `UV_HTTP_TIMEOUT=300` (秒)以避免这种情况。


**会议议题:**


- 浏览器配置文件存储在 `~/.linkedin-mcp/profile/`
- 托管浏览器下载缓存在 `~/.linkedin-mcp/patchright-browsers/`
- 确保你一次只有一个活动的LinkedIn会话


**登录问题:**


- LinkedIn可能需要在LinkedIn移动应用程序中进行登录确认 `--login`
- 如果你经常登录,你可能会收到验证码挑战。跑 `uvx linkedin-scraper-mcp@latest --login` 这将打开一个浏览器,您可以在其中手动解决它。


**超时问题:**


- 如果页面加载失败或找不到元素,请尝试增加超时时间: `--timeout 10000`
- 慢速连接的用户可能需要更高的值(例如15000-30000ms)
- 也可以通过环境变量设置: `TIMEOUT=10000`


**自定义Chrome路径:**


- 如果Chrome安装在非标准位置,请使用 `--chrome-path /path/to/chrome`
- 也可以通过环境变量设置: `CHROME_PATH=/path/to/chrome`







## 📦 Claude桌面MCP捆绑包(前身为DXT)


**先决条件:** [克劳德桌面](https://claude.ai/download).


**一键安装** 对于Claude Desktop用户:


1. 下载最新版 `.mcpb` 文物来自 [发布](https://github.com/stickerdaniel/linkedin-mcp-server/releases/latest)
2. 点击下载 `.mcpb` 将其安装到Claude Desktop的文件
3. 调用任何LinkedIn工具


启动时,MCP Bundle开始在后台准备共享的Patchright Chromium浏览器缓存。如果您过早调用工具,Claude将显示正在进行的设置错误。在第一次需要身份验证的工具调用中,服务器会打开一个LinkedIn登录浏览器窗口,并要求您在登录后重试。


### MCP捆绑包设置帮助



❗ Troubleshooting
**首次设置行为:**


- Claude Desktop立即启动捆绑包;浏览器设置在后台继续
- 如果Patchright Chromium浏览器仍在下载,请在短暂等待后重试该工具
- 托管浏览器下载共享于 `~/.linkedin-mcp/patchright-browsers/`


**登录问题:**


- 确保你一次只有一个活动的LinkedIn会话
- LinkedIn可能需要在LinkedIn移动应用程序中进行登录确认 `--login`
- 如果你经常登录,你可能会收到验证码挑战。跑 `uvx linkedin-scraper-mcp@latest --login` 这将打开一个浏览器,您可以在其中手动解决验证码。请参阅 uvx设置 先决条件。


**超时问题:**


- 如果页面加载失败或找不到元素,请尝试增加超时时间: `--timeout 10000`
- 慢速连接的用户可能需要更高的值(例如15000-30000ms)
- 也可以通过环境变量设置: `TIMEOUT=10000`







## 🐳 Docker设置


**先决条件:** 确保你有 [码头工人](https://www.docker.com/get-started/) 已安装并正在运行,以及 [紫外线](https://docs.astral.sh/uv/getting-started/installation/) 一次性安装在主机上 `--login` 步骤。


### 认证


Docker无头运行(无浏览器窗口),因此您需要首先在本地创建浏览器配置文件并将其挂载到容器中。


**步骤1:在主机上创建配置文件(一次性设置)**


BASH```
1uvx linkedin-scraper-mcp@latest --login

这将打开一个浏览器窗口,您可以在其中手动登录(2FA、验证码等超时5分钟)。浏览器配置文件和Cookie保存在 ~/.linkedin-mcp/启动时,Docker从您的主机Cookie中导出Linux浏览器配置文件,并每次创建一个新的会话。如果你遇到Docker的稳定性问题,可以考虑使用 uvx设置 相反。

步骤2:使用Docker配置Claude桌面

JSON``` 1 2 3 4 5 6 7 8 9 10 11 12{ “mcpServers”: { “linkedin”: { “command”: “docker”, “args”: [ “run”, “—rm”, “-i”, “-v”, ”~/.linkedin-mcp:/home/pwuser/.linkedin-mcp”, “stickerdaniel/linkedin-mcp-server:latest” ] } } }


> [!注意]
> Docker在每次启动时都会创建一个新的会话。会话可能会随着时间的推移而过期–运行 `uvx linkedin-scraper-mcp@latest --login` 再次,如果您遇到身份验证问题。


> [!注意]
> **为什么我不能跑 `--login` Docker?** Docker容器没有显示服务器。使用在主机上创建配置文件 uvx设置 并将其挂载到Docker中。


### Docker安装帮助



🔧 Configuration
**运输方式:**


- **默认值(stdio)**:本地MCP服务器的标准通信
- **可流式传输的HTTP**:用于基于web的MCP服务器
- 如果未指定传输,则服务器默认为 `stdio`
- 没有显式传输的交互式终端显示选择器提示


**CLI选项:**


- `--log-level {DEBUG,INFO,WARNING,ERROR}` -设置日志记录级别(默认值:警告)
- `--transport {stdio,streamable-http}` -可选:强制传输模式(默认:stdio)
- `--host HOST` -HTTP服务器主机(默认值:127.0.0.1)
- `--port PORT` -HTTP服务器端口(默认值:8000)
- `--path PATH` -HTTP服务器路径(默认值:/mcp)
- `--logout` -清除所有存储的LinkedIn身份验证状态,包括源和派生的运行时配置文件
- `--timeout MS` -页面操作的浏览器超时时间(毫秒)(默认值:5000)
- `--user-data-dir PATH` -持久浏览器配置文件目录的路径(默认:~/.llinkedin mcp/profile)
- `--chrome-path PATH` -Chrome/Chromium可执行文件的路径(Docker中很少需要)


> [!注意]
> `--login` 和 `--no-headless` 在Docker中不可用(无显示服务器)。使用 uvx设置 创建配置文件。


**HTTP模式示例(适用于基于web的MCP客户端):**


BASH```
1
2
3
4
5docker run -it --rm \
  -v ~/.linkedin-mcp:/home/pwuser/.linkedin-mcp \
  -p 8080:8080 \
  stickerdaniel/linkedin-mcp-server:latest \
  --transport streamable-http --host 0.0.0.0 --port 8080 --path /mcp

运行时服务器日志由FastMCP/Uvicorn发出。

使用mcp检查员进行测试:

  1. 安装并运行mcp检查器 bunx @modelcontextprotocol/inspector
  2. 点击预先填写的令牌url,在浏览器中打开检查器
  3. 选择 Streamable HTTP 作为 Transport Type
  4. URLhttp://localhost:8080/mcp
  5. 连接
  6. 测试工具

❗ Troubleshooting Docker问题:

  • 确保 码头工人 已安装
  • 检查Docker是否正在运行: docker ps

登录问题:

  • 确保你一次只有一个活动的LinkedIn会话
  • LinkedIn可能需要在LinkedIn移动应用程序中进行登录确认 --login
  • 如果你经常登录,你可能会收到验证码挑战。跑 uvx linkedin-scraper-mcp@latest --login 这将打开一个浏览器,您可以在其中手动解决验证码。请参阅 uvx设置 先决条件。
  • 如果Docker auth在您重新登录主机后变得过时,请重新启动Docker一次,以便它可以从新的源会话生成中刷新网桥。

超时问题:

  • 如果页面加载失败或找不到元素,请尝试增加超时时间: --timeout 10000
  • 慢速连接的用户可能需要更高的值(例如15000-30000ms)
  • 也可以通过环境变量设置: TIMEOUT=10000

自定义Chrome路径:

  • 如果Chrome安装在非标准位置,请使用 --chrome-path /path/to/chrome
  • 也可以通过环境变量设置: CHROME_PATH=/path/to/chrome

🐍 本地设置(开发和贡献)

欢迎投稿!看 贡献.md 获取架构指南和检查表。请 打开一个问题 在提交PR之前,先讨论功能或错误修复。

先决条件: Git紫外线 安装

安装

BASH``` 1 2 3 4 5 6 7 8 9 10 11 12# 1. Clone repository git clone https://github.com/stickerdaniel/linkedin-mcp-server cd linkedin-mcp-server

2. Install UV package manager (if not already installed)

curl -LsSf https://astral.sh/uv/install.sh | sh

3. Install dependencies

uv sync uv sync —group dev

4. Install pre-commit hooks

uv run pre-commit install

5. Start the server

uv run -m linkedin_mcp_server


本地服务器使用与MCPB相同的托管运行时流 `uvx`:它在后台准备Patchright Chromium浏览器缓存,并在第一次需要身份验证的工具调用时打开LinkedIn登录。你仍然可以跑 `uv run -m linkedin_mcp_server --login` 当您想显式创建会话时。


### 本地安装帮助



🔧 Configuration
**CLI选项:**


- `--login` -打开浏览器登录并保存持久配置文件
- `--no-headless` -显示浏览器窗口(用于调试抓取问题)
- `--log-level {DEBUG,INFO,WARNING,ERROR}` -设置日志记录级别(默认值:警告)
- `--transport {stdio,streamable-http}` -可选:强制传输模式(默认:stdio)
- `--host HOST` -HTTP服务器主机(默认值:127.0.0.1)
- `--port PORT` -HTTP服务器端口(默认值:8000)
- `--path PATH` -HTTP服务器路径(默认值:/mcp)
- `--logout` -清除存储的LinkedIn浏览器配置文件
- `--timeout MS` -页面操作的浏览器超时时间(毫秒)(默认值:5000)
- `--status` -检查当前会话是否有效并退出
- `--user-data-dir PATH` -持久浏览器配置文件目录的路径(默认:~/.llinkedin mcp/profile)
- `--slow-mo MS` -浏览器操作之间的延迟(毫秒)(默认值:0,可用于调试)
- `--user-agent STRING` -自定义浏览器用户代理
- `--viewport WxH` -浏览器视口大小(默认值:1280x720)
- `--chrome-path PATH` -Chrome/Chromium可执行文件的路径(用于自定义浏览器安装)
- `--help` -显示帮助


> **注:** 大多数CLI选项都有环境变量等效项。看 `.env.example` 了解详情。


**HTTP模式示例(适用于基于web的MCP客户端):**


BASH```
1uv run -m linkedin_mcp_server --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp

克劳德桌面:

JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “linkedin”: { “command”: “uv”, “args”: [“—directory”, “/path/to/linkedin-mcp-server”, “run”, “-m”, “linkedin_mcp_server”] } } }


`stdio` 默认情况下用于此配置。




❗ Troubleshooting
**登录问题:**


- 确保你一次只有一个活动的LinkedIn会话
- LinkedIn可能需要在LinkedIn移动应用程序中进行登录确认 `--login`
- 如果你经常登录,你可能会收到验证码挑战。这 `--login` 命令打开一个浏览器,您可以在其中手动解决它。


**报废问题:**


- 使用 `--no-headless` 查看浏览器操作并调试抓取问题
- 添加 `--log-level DEBUG` 查看更详细的日志记录


**会议议题:**


- 浏览器配置文件存储在 `~/.linkedin-mcp/profile/`
- 使用 `--logout` 清除配置文件并重新开始


**Python/Patchright问题:**


- 检查Python版本: `python --version` (应为3.12+)
- 重新安装Patchright: `uv run patchright install chromium`
- 重新安装依赖关系: `uv sync --reinstall`


**超时问题:**


- 如果页面加载失败或找不到元素,请尝试增加超时时间: `--timeout 10000`
- 慢速连接的用户可能需要更高的值(例如15000-30000ms)
- 也可以通过环境变量设置: `TIMEOUT=10000`


**自定义Chrome路径:**


- 如果Chrome安装在非标准位置,请使用 `--chrome-path /path/to/chrome`
- 也可以通过环境变量设置: `CHROME_PATH=/path/to/chrome`







## 致谢


建于 [FastMCP](https://gofastmcp.com/) 和 [Patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python).


按照以下要求使用 [LinkedIn的服务条款](https://www.linkedin.com/legal/user-agreement)网络抓取可能违反LinkedIn的条款。此工具仅供个人使用。


## 许可证


此项目根据Apache 2.0许可证获得许可。