LinkedIn MCP服务器
A. 模型上下文协议 LinkedIn的MCP服务器。搜索人员、公司和工作,抓取个人资料,并从任何兼容MCP的AI客户端检索结构化JSON数据。
https://github.com/user-attachments/assets/50cd8629-41ee-4261-9538-40dc7d30294e
______________________________________________________________________
特性
| 类别 | 工具 |
|---|---|
| 人 | get_person_profile · search_people |
| 公司 | get_company_profile · get_company_posts |
| 工作机会 | get_job_details · search_jobs · apply_for_job |
| 饲料 | share_post |
| 浏览器 | close_browser |
个人资料部分
这 get_person_profile 该工具支持颗粒段刮削。仅请求您需要的部分:
- 主要配置文件 (始终包含)--姓名、标题、位置、关注者、关系、关于、个人资料图片
- 经验 --标题、公司、日期、持续时间、描述、公司徽标
- 教育 --学校、学位、日期、描述、学校标志
- 联系方式 --电子邮件、电话、网站、生日、领英网址
- 兴趣 --关注的人、公司和团体
- 荣誉和奖励 --标题、发行人、描述
- 语言 --语言名称和熟练程度
- 帖子 --最近的活动,包括反应和时间戳
- 建议 --收到和给出,以及作者详细信息
公司简介部分
- 关于 (始终包含)--概述、网站、行业、规模、总部、专业、徽标
- 帖子 --最近发布的具有参与度指标的feed帖子
- 工作 --当前空缺职位
职位搜索筛选器
这 search_jobs 该工具支持以下过滤器:
| 筛选器 | 值 |
|---|---|
date_posted | past_hour, past_24_hours, past_week, past_month |
job_type | full_time, part_time, contract, temporary, internship, other |
experience_level | entry, associate, mid_senior, director, executive |
work_type | on_site, remote, hybrid |
easy_apply | true / false |
sort_by | date, relevance |
申请工作
这 apply_for_job 该工具自动化了给定作业的“轻松应用”过程。它将智能地循环应用程序步骤并提交应用程序。如果遇到无法回答的所需自定义问题,它将安全地关闭对话框,并通知客户端需要手动完成。
分享帖子和内容生成
这 share_post 该工具将文本直接发布到您的LinkedIn提要中。标准MCP架构规定 内容生成 应该保留在您的LLM客户端中(例如Claude Desktop)。
要生成病毒式、高参与度的帖子,只需向Claude提示您想要的模板。例如:
“Claude,在LinkedIn上发布一篇关于我第一个MCP服务器项目失败的高参与度帖子。使用‘LoRA+neneneba API合成对’病毒模板并包含相关标签。生成后,请使用 share_post 发布它的工具”错误处理
所有工具都使用一个健壮的、结构化的JSON错误模式。如果发生错误(例如,会话过期、速率限制命中),服务器将返回一条详细的消息,像Claude这样的MCP客户端可以很容易地解释该消息:
{
"error": "RATE_LIMIT_EXCEEDED",
"message": "[search_jobs] LinkedIn rate limit detected. Please wait ~5 minutes before retrying.",
"retryable": true,
"timestamp": "2026-03-21T17:15:00.000000+00:00"
}______________________________________________________________________
先决条件
- Python 3.12或更高版本
- 紫外线 包管理器
- 用于身份验证的LinkedIn帐户
______________________________________________________________________
快速开始
1.克隆并安装
git clone https://github.com/[Your GitHub Username]/linkedin-mcp-server.git
cd linkedin-mcp-server
uv sync2.安装浏览器
此项目使用 Patchright (Playwright的一个补丁分支)用于浏览器自动化。首次使用前,您需要安装浏览器二进制文件:
uv run patchright installWindows用户: 如果上述命令失败program not found,请改为运行: ``powershell uv run python -m patchright install``
3.通过LinkedIn进行身份验证
uv run linkedin-mcp-server --login浏览器窗口将打开。登录LinkedIn,会话将在本地持久化 ~/.linkedin-mcp-server/browser-data.
4.运行服务器
stdio传输 (默认值--适用于Claude Desktop、Cursor和类似客户端):
uv run linkedin-mcp-serverHTTP传输 (对于远程客户端、MCP检查器等):
uv run linkedin-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000______________________________________________________________________
客户端集成
克劳德桌面/光标
添加到MCP配置文件中:
{
"mcpServers": {
"linkedin": {
"command": "uv",
"args": [
"--directory", "/path/to/linkedin-mcp-server",
"run", "linkedin-mcp-server"
]
}
}
}MCP检查员
npx @modelcontextprotocol/inspector然后连接到 http://localhost:8000/mcp 如果使用HTTP传输。
______________________________________________________________________
配置
配置遵循严格的优先级链: CLI参数>环境变量> .env 文件>默认值.
CLI参数
| 参数 | 描述 | 默认值 |
|---|---|---|
--transport | stdio 或 streamable-http | stdio |
--host | HTTP传输主机 | 127.0.0.1 |
--port | HTTP传输端口 | 8000 |
--log-level | DEBUG, INFO, WARNING, ERROR | WARNING |
--headless | 在无头模式下运行浏览器 | true |
--no-headless | 显示浏览器窗口(可见模式) | -- |
--login | 打开LinkedIn登录浏览器 | -- |
--logout | 清除存储的凭据 | -- |
--status | 检查会话状态 | -- |
环境变量
创建一个 .env 项目根目录中的文件:
# Server
LINKEDIN_TRANSPORT=stdio
LINKEDIN_HOST=127.0.0.1
LINKEDIN_PORT=8000
LINKEDIN_LOG_LEVEL=WARNING
# Browser
LINKEDIN_HEADLESS=true
LINKEDIN_SLOW_MO=0
LINKEDIN_TIMEOUT=10000
LINKEDIN_VIEWPORT_WIDTH=1280
LINKEDIN_VIEWPORT_HEIGHT=720
LINKEDIN_CHROME_PATH=
LINKEDIN_USER_AGENT=
LINKEDIN_USER_DATA_DIR=~/.linkedin-mcp-server/browser-data______________________________________________________________________
建筑
该项目遵循六边形(端口和适配器)架构,具有严格的层分离:
src/linkedin_mcp_server/
├── domain/ # Core business logic — zero external dependencies
│ ├── models/ # Data models (Person, Company, Job, Search)
│ ├── parsers/ # HTML to structured data parsers
│ ├── exceptions.py # Domain exceptions
│ └── value_objects.py # Immutable configuration and content objects
├── ports/ # Abstract interfaces
│ ├── auth.py # Authentication port
│ ├── browser.py # Browser automation port
│ └── config.py # Configuration port
├── application/ # Use cases — orchestration layer
│ ├── scrape_person.py
│ ├── scrape_company.py
│ ├── scrape_job.py
│ ├── search_people.py
│ ├── search_jobs.py
│ └── manage_session.py
├── adapters/ # Concrete implementations
│ ├── driven/ # Infrastructure adapters (browser, auth, config)
│ └── driving/ # Interface adapters (CLI, MCP tools, serialization)
└── container.py # Dependency injection composition root设计决策
- 端口和适配器 --域逻辑与基础设施完全解耦。浏览器引擎、MCP框架和配置源都可以独立交换。
- 依赖注入 --单身
Container类充当组合根,是导入具体适配器类的唯一位置。 - 结构化JSON输出 --LinkedIn HTML被解析为类型化的Python数据类,然后序列化为JSON,以便可靠地使用LLM。
- 会话持续 --浏览器状态保存到磁盘,因此只需要一次身份验证。
______________________________________________________________________
发展
设置
uv sync --group dev
uv run pre-commit install运行测试
uv run pytest覆盖范围:
uv run pytest --cov=linkedin_mcp_server装订和格式化
此项目使用 拉夫 用于linting和格式化。预提交钩子将在每次提交时自动运行这些钩子。
# Lint
uv run ruff check .
# Lint and auto-fix
uv run ruff check . --fix
# Format
uv run ruff format .______________________________________________________________________
许可证
该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
贡献
欢迎捐款。请阅读 贡献指南 有关开发工作流程和提交过程的详细信息。
______________________________________________________________________
免责声明
此工具用于个人和教育用途。删除LinkedIn可能会违反其服务条款。负责任地使用,风险自负。作者不对因使用本软件而产生的任何误用或后果负责。
