LinkedIn代理MCP
通过这个LinkedIn代理MCP,像克劳德这样的人工智能助手可以连接到你的LinkedIn。访问个人资料和公司、搜索工作和人员、管理已保存的工作、更新工作搜索个人资料设置以及检查分析。
归因
这个项目最初是从Daniel Sticker的LinkedIn MCP工作中启动的,后来扩展到更广泛的LinkedIn自动化和求职管理器中。最初的基金会归功于Daniel Sticker和最初的 linkedin-mcp-server 项目。
安装方法
 ](#-docker-setup)  
用法示例
Research the background of this candidate https://www.linkedin.com/in/ayushkumar-exl/Get this company profile for partnership discussions https://www.linkedin.com/company/inframs/Suggest improvements for my CV to target this job posting https://www.linkedin.com/jobs/view/4252026496What has Anthropic been posting about recently? https://www.linkedin.com/company/anthropicresearch/功能和工具状态
| 工具 | 描述 | 状态 | ||
|---|---|---|---|---|
get_person_profile | 通过明确的部分选择(经验、教育、兴趣、荣誉、语言、contact_info)获取个人资料信息 | 工作 | ||
get_company_profile | 通过明确的部门选择(职位、工作)提取公司信息 | 工作 | ||
get_company_posts | 从公司的LinkedIn订阅源获取最新帖子 | 正在工作 | ||
search_jobs | 使用关键字和位置过滤器搜索工作 | 正在工作 | ||
get_job_details | 获取特定职位发布的详细信息 | 工作 | ||
search_people | 按关键字、当前公司、过去公司和位置搜索LinkedIn成员;支持 `match_mode=auto | strict | broad` | 工作 |
get_company_people | 使用可选的过去公司和职位筛选器查找目标公司的人员 | 正在工作 | ||
save_job | 将LinkedIn作业保存到当前帐户的队列 | 正在工作 | ||
get_saved_jobs | 列出当前帐户保存的带有分页元数据的作业 | 正在工作 | ||
update_profile_headline | 使用预览支持更新登录的个人资料标题 | 正在工作 | ||
set_open_to_work | 启用或禁用具有预览支持的“打开工作”首选项 | 正在工作 | ||
add_profile_skills | 使用预览支持将新技能添加到登录的个人资料中 | 正在工作 | ||
set_featured_skills | 尽力而为的技能排序流程 | 实验 | ||
get_job_recommendations | 阅读LinkedIn的个性化工作推荐推送 | 工作 | ||
close_session | 关闭浏览器会话并清理资源 | 正在工作 |
\[!重要\] 突破性变化: LinkedIn最近进行了一些更改以防止抓取。最新版本使用 Patchright 使用持久的浏览器配置文件,而不是使用会话文件的Playwright。老的session.json文件和LINKEDIN_COOKIE不再支持env变量。跑--login再次创建一个可以挂载到docker中的新profile+cookie文件。 02/2026
结构化帮助字段
一些工具在现有的原始文本输出旁边返回附加的结构化字段。
search_jobs保持sections.search_results也会回来jobs,一个结构化的列表title,company,location,job_id,以及url当这些值可以从当前的LinkedIn DOM中解析出来时。search_people和get_company_people返回分页results具有归一化的数组PersonCard字段和filters_applied/warnings元数据。search_people.match_mode控制该工具是保持严格、自动扩展还是立即运行广泛的公司/背景搜索。get_saved_jobs和get_job_recommendations返回分页jobs具有归一化的数组JobCard领域。- 配置文件写入工具(
update_profile_headline,set_open_to_work,add_profile_skills,set_featured_skills)支持预览优先流dry_run或confirm=false并返回带有添加剂的结构化信封data. get_my_post_analytics返回标准读取信封,并在以下位置公开解析后的帖子data.posts。每个帖子对象包括author,url,text_preview,time_ago,reactions,comments,reposts,以及impressions.
🚀 uvx设置(推荐-通用)
先决条件: 安装uv并运行 uvx patchright install chromium 设置浏览器。
安装
步骤1:创建会话(仅限第一次)
uvx linkedin-scraper-mcp --login这将打开一个浏览器供您手动登录(2FA、验证码等超时5分钟)。浏览器配置文件保存到 ~/.linkedin-mcp/profile/.
步骤2:客户端配置:
{
"mcpServers": {
"linkedin": {
"command": "uvx",
"args": ["linkedin-scraper-mcp"]
}
}
}\[!注意\] 会话可能会随着时间的推移而过期。如果遇到身份验证问题,请运行 uvx linkedin-scraper-mcp --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可执行文件的路径(用于自定义浏览器安装)
基本用法示例:
# Create a session interactively
uvx linkedin-scraper-mcp --login
# Run with debug logging
uvx linkedin-scraper-mcp --log-level DEBUGHTTP模式示例(适用于基于web的MCP客户端):
uvx linkedin-scraper-mcp --transport streamable-http --host 127.0.0.1 --port 8080 --path /mcp运行时服务器日志由FastMCP/Uvicorn发出。
使用mcp检查员进行测试:
- 安装并运行mcp检查器
bunx @modelcontextprotocol/inspector - 点击预先填写的令牌url,在浏览器中打开检查器
- 选择
Streamable HTTP作为Transport Type - 集
URL到http://localhost:8080/mcp - 连接
- 测试工具
❗ Troubleshooting
安装问题:
- 确保您已安装紫外线:
curl -LsSf https://astral.sh/uv/install.sh | sh - 检查紫外线版本:
uv --version(应为0.4.0或更高)
会议议题:
- 浏览器配置文件存储在
~/.linkedin-mcp/profile/ - 确保你一次只有一个活动的LinkedIn会话
登录问题:
- LinkedIn可能需要在LinkedIn移动应用程序中进行登录确认
--login - 如果你经常登录,你可能会收到验证码挑战。跑
uvx linkedin-scraper-mcp --login这将打开一个浏览器,您可以在其中手动解决它。
超时问题:
- 如果页面加载失败或找不到元素,请尝试增加超时时间:
--timeout 10000 - 慢速连接的用户可能需要更高的值(例如15000-30000ms)
- 也可以通过环境变量设置:
TIMEOUT=10000
自定义Chrome路径:
- 如果Chrome安装在非标准位置,请使用
--chrome-path /path/to/chrome - 也可以通过环境变量设置:
CHROME_PATH=/path/to/chrome
🐳 Docker设置
先决条件: 确保你有 码头工人 安装并运行。
认证
Docker无头运行(无浏览器窗口),因此您需要首先在本地创建浏览器配置文件并将其挂载到容器中。
步骤1:使用uvx创建配置文件(一次性设置)
uvx linkedin-scraper-mcp --login这将打开一个浏览器窗口,您可以在其中手动登录(2FA、验证码等超时5分钟)。浏览器配置文件保存到 ~/.linkedin-mcp/profile/.
步骤2:使用Docker配置Claude桌面
{
"mcpServers": {
"linkedin": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "~/.linkedin-mcp:/home/pwuser/.linkedin-mcp",
"iushv/linkedin-agent-mcp:latest"
]
}
}
}\[!注意\] 会话可能会随着时间的推移而过期。如果遇到身份验证问题,请运行 uvx linkedin-scraper-mcp --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客户端):
docker run -it --rm \
-v ~/.linkedin-mcp:/home/pwuser/.linkedin-mcp \
-p 8080:8080 \
iushv/linkedin-agent-mcp: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 --login这将打开一个浏览器,您可以在其中手动解决验证码。请参阅 uvx设置 先决条件。
超时问题:
- 如果页面加载失败或找不到元素,请尝试增加超时时间:
--timeout 10000 - 慢速连接的用户可能需要更高的值(例如15000-30000ms)
- 也可以通过环境变量设置:
TIMEOUT=10000
自定义Chrome路径:
- 如果Chrome安装在非标准位置,请使用
--chrome-path /path/to/chrome - 也可以通过环境变量设置:
CHROME_PATH=/path/to/chrome
📦 克劳德桌面(DXT扩展)
一键安装 对于Claude Desktop用户:
- 下载 DXT扩展
- 双击安装到Claude Desktop
- 创建会话:
uvx linkedin-scraper-mcp --login
\[!注意\] 会话可能会随着时间的推移而过期。如果遇到身份验证问题,请运行 uvx linkedin-scraper-mcp --login 再一次。DXT扩展设置帮助
❗ Troubleshooting
首次设置超时:
- Claude Desktop的连接超时约为60秒
- 如果Docker镜像未被缓存,则拉取可能会超过此超时时间
- 修复: 首次使用前预拉图像:
docker pull iushv/linkedin-agent-mcp:2.3.0- 然后重新启动克劳德桌面
Docker问题:
- 确保 码头工人 已安装
- 检查Docker是否正在运行:
docker ps
登录问题:
- 确保你一次只有一个活动的LinkedIn会话
- LinkedIn可能需要在LinkedIn移动应用程序中进行登录确认
--login - 如果你经常登录,你可能会收到验证码挑战。跑
uvx linkedin-scraper-mcp --login这将打开一个浏览器,您可以在其中手动解决验证码。请参阅 uvx设置 先决条件。
超时问题:
- 如果页面加载失败或找不到元素,请尝试增加超时时间:
--timeout 10000 - 慢速连接的用户可能需要更高的值(例如15000-30000ms)
- 也可以通过环境变量设置:
TIMEOUT=10000
🐍 本地设置(开发和贡献)
安装
# 1. Clone repository
git clone https://github.com/iushv/linkedin-agent-mcp
cd linkedin-agent-mcp
# 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 Patchright browser
uv run patchright install chromium
# 5. Install pre-commit hooks
uv run pre-commit install
# 6. Create a session (first time only)
uv run -m linkedin_mcp_server --login
# 7. Start the server
uv run -m linkedin_mcp_server本地安装帮助
🔧 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客户端):
uv run -m linkedin_mcp_server --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp活烟测试:
uv run -m linkedin_mcp_server --transport streamable-http --host 127.0.0.1 --port 8080 --path /mcp
uv run python scripts/test_live_tools.py --url http://127.0.0.1:8080/mcp针对特定工具,添加起搏或重试 read_conversation 超时后:
uv run python scripts/test_live_tools.py \
--url http://127.0.0.1:8080/mcp \
--read-only \
--tool get_conversations \
--tool read_conversation \
--read-sleep 3 \
--read-conversation-retries 2 \
--retry-backoff-seconds 8 \
--json-out output/live-smoke.json仅运行write-dri-Run工具:
uv run python scripts/test_live_tools.py \
--url http://127.0.0.1:8080/mcp \
--write-only集中精力跑步 read_conversation 检查已知的线程id:
uv run python scripts/test_live_tools.py \
--url http://127.0.0.1:8080/mcp \
--focus-read-conversation \
--thread-id abc123克劳德桌面:
{
"mcpServers": {
"linkedin": {
"command": "uv",
"args": ["--directory", "/path/to/linkedin-agent-mcp", "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
致谢
⚠️ 按照以下要求使用 LinkedIn的服务条款网络抓取可能违反LinkedIn的条款。此工具仅供个人使用。
许可证
此项目根据Apache 2.0许可证获得许可。
