LinkedIn 职业辅助工具

一个为AI助手提供LinkedIn全面访问权限的服务,包括职位搜索、个人和公司资料查看、AI简历和求职信生成以及申请跟踪功能。

  • by Rayyan9477
  • Python
  • 本地部署
  • 28 星标
  • 更新于
在 GitHub 查看 Rayyan9477/linkedin_mcp

使用说明

LinkedIn MCP服务器

一个MCP服务器,让人工智能助手可以完全访问领英——搜索工作、查看个人资料和公司、生成人工智能简历和求职信,以及跟踪应用程序。与 官方MCP Python SDK (FastMCP)。


它的作用

类别 功能
求职 使用筛选器(关键字、位置、类型、经验级别、远程、最近时间)搜索,获取工作详细信息,获取推荐
公司简介 获取任何LinkedIn个人资料或公司页面,基于AI的个人资料分析,并提供优化建议
简历生成 从LinkedIn个人资料生成简历,根据特定职位发布定制简历,3个内置模板
求职信 AI生成的求职信针对每个职位进行个性化定制,内置2个模板
应用程序跟踪 使用状态工作流在本地跟踪应用程序(感兴趣→ 应用的→ 面试→ 提供/拒绝/撤回)
输出格式 HTML、Markdown和PDF(通过WeasyPrint)

快速开始

1.安装

# Core installation
pip install -e .

# With AI features (resume/cover letter generation, profile analysis)
pip install -e ".[ai]"

# With PDF export
pip install -e ".[pdf]"

# Everything
pip install -e ".[all]"

2.配置

cp .env.example .env

编辑 .env 使用您的凭据:

LINKEDIN_USERNAME=your_email@example.com
LINKEDIN_PASSWORD=your_password
ANTHROPIC_API_KEY=sk-ant-...    # Optional — enables AI features

3.跑步

独立:

linkedin-mcp

使用克劳德桌面 --添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "linkedin": {
      "command": "linkedin-mcp"
    }
  }
}

使用克劳德代码 --添加到 .mcp.json:

{
  "linkedin": {
    "command": "linkedin-mcp"
  }
}

工具参考

作业工具(3)

工具 参数 说明
search_jobs keywords, location, job_type, experience_level, remote, date_posted, page, count 使用丰富的过滤器搜索LinkedIn职位
get_job_details job_id 获取职位发布的完整描述、技能和元数据
get_recommended_jobs count 获得个性化的工作推荐

轮廓工具(3)

工具 参数 说明
get_profile profile_id 获取LinkedIn个人资料("me" 为了你自己)——经验、教育、技能
get_company company_id 获取公司信息——描述、规模、总部、专业
analyze_profile profile_id 基于人工智能的配置文件审查,并提供可操作的优化建议

文档生成工具(4)

工具 参数 说明
generate_resume profile_id, template, output_format 从LinkedIn个人资料生成简历
tailor_resume profile_id, job_id, template, output_format 为特定的职位发布量身定制简历
generate_cover_letter profile_id, job_id, template, output_format 为工作创建个性化的求职信
list_templates template_type 列出可用模板(resume, cover_letter,或 all)

模板: modern · professional · minimal (简历)| professional · concise (附信) 格式: html · md · pdf

应用程序跟踪工具(3)

工具 参数 说明
track_application job_id, job_title, company, status, notes, url 开始跟踪工作申请
list_applications status 列出所有跟踪的应用程序,可选择按状态筛选
update_application_status job_id, status, notes 更新应用程序状态

状态值: interested · applied · interviewing · offered · rejected · withdrawn


建筑

src/linkedin_mcp/
├── server.py                    # FastMCP entry point — 13 tools, 1 resource
├── config.py                    # Settings from .env (frozen dataclass)
├── exceptions.py                # 7-class exception hierarchy
├── models/
│   ├── linkedin.py              # Profile, Job, Company models (Pydantic v2)
│   ├── resume.py                # Resume & cover letter content models
│   └── tracking.py              # Application tracking model
├── services/
│   ├── linkedin_client.py       # LinkedIn API wrapper (async via asyncio.to_thread)
│   ├── job_search.py            # Job search with TTL caching
│   ├── profile.py               # Profile/company access with caching
│   ├── resume_generator.py      # AI-enhanced resume generation
│   ├── cover_letter_generator.py
│   ├── application_tracker.py   # Local JSON-based application tracking
│   ├── cache.py                 # Unified JSON file cache with TTL
│   ├── template_manager.py      # Jinja2 sandboxed template engine
│   └── format_converter.py      # HTML → PDF/Markdown conversion
├── ai/
│   ├── base.py                  # Abstract AI provider interface
│   └── claude_provider.py       # Anthropic Claude implementation
└── templates/
    ├── resume/                  # modern.j2, professional.j2, minimal.j2
    └── cover_letter/            # professional.j2, concise.j2

关键设计决策

  • 官方MCP SDK --用途 FastMCP 随着 @mcp.tool() 装饰器,而不是自定义协议实现
  • 异步贯穿始终 -所有同步LinkedIn API调用都包含在 asyncio.to_thread() 避免堵塞
  • 分层体系结构 --工具→ 服务→ 客户端,在服务层进行缓存
  • AI是可选的 -LinkedIn核心功能在没有Anthropic API密钥的情况下工作;人工智能增强简历/求职信生成
  • 加强安保 --Jinja2 SandboxedEnvironmentWeasyPrint SSRF保护、路径遍历保护、凭证编辑、输入验证

配置

所有设置都是从环境变量加载的(.env 支持的文件):

变量 必填 默认 描述
LINKEDIN_USERNAME 是 -- 您的LinkedIn电子邮件
LINKEDIN_PASSWORD 是 -- 您的LinkedIn密码
ANTHROPIC_API_KEY 否 -- 启用AI功能(简历/求职信生成、个人资料分析)
AI_MODEL 没有 claude-sonnet-4-20250514 要使用的Claude模型
DATA_DIR 没有 ~/.linkedin_mcp/data 缓存、跟踪数据、生成文件的目录
CACHE_TTL_HOURS 没有 24 缓存LinkedIn API响应的时间
LOG_LEVEL 没有 INFO 日志记录级别(调试、信息、警告、错误)

发展

# Install with all dependencies
pip install -e ".[all,dev]"

# Run tests (82 tests)
pytest

# Run with coverage
pytest --cov=linkedin_mcp

# Lint
ruff check src/ tests/

测试覆盖率

测试涵盖了所有层:配置、模型、服务(缓存、跟踪器、求职、个人资料、简历/求职信生成、LinkedIn客户端格式化程序、格式转换器)、人工智能提供商和MCP工具处理程序。


使用示例

连接后,询问您的AI助手:

“在美国搜索远程Python开发人员职位”

“显示satyanadella的个人资料”

“根据我的LinkedIn个人资料生成适合工作3847291056的简历”

“使用简明模板为职位3847291056创建求职信”

“跟踪我的谷歌高级工程师职位申请——状态:已申请”

“列出我所有处于面试阶段的申请”

“分析我的LinkedIn个人资料并提出改进建议”


许可证

麻省理工学院