LinkedIn MCP服务器
通过这个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检查员进行测试:
- 安装并运行mcp检查器
bunx @modelcontextprotocol/inspector - 点击预先填写的令牌url,在浏览器中打开检查器
- 选择
Streamable HTTP作为Transport Type - 集
URL到http://localhost:8080/mcp - 连接
- 测试工具
❗ 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之前,先讨论功能或错误修复。
安装
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许可证获得许可。