mcpField
L
LinkedIn Model Context Protocol (MCP) Server

LinkedIn Model Context Protocol (MCP) Server

本地服务
github.com/Rayyan9477商业与营销2833 周前更新

关于 LinkedIn Model Context Protocol (MCP) Server

LinkedIn MCP Server 是一个基于官方 MCP Python SDK(FastMCP)构建的 MCP 服务,允许 AI 助手搜索职位、查看资料与公司信息,并生成简历、求职信和管理投递记录。适合求职者使用,AI 功能为可选。

主要功能

  1. 01职位搜索与详情查询
  2. 02个人资料与公司信息获取
  3. 03AI 辅助生成简历与求职信
  4. 04本地投递记录追踪
  5. 05支持 HTML、Markdown 与 PDF 输出

适用场景

  1. 01按关键词与地点筛选远程职位
  2. 02根据目标职位定制简历
  3. 03为特定职位生成个性化求职信
  4. 04跟踪各阶段的求职申请状态

MCP 相关

该项目是一个 MCP 服务,通过 13 个工具和 1 个资源向 MCP 客户端暴露 LinkedIn 职位、资料、文档生成及投递追踪功能。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

LinkedIn MCP 服务

License: MIT Python 3.11+ MCP SDK

一款 MCP 服务,让 AI 助手全面访问 LinkedIn——搜索职位、查看个人资料和公司信息、生成 AI 驱动的简历和求职信,并跟踪求职申请。使用 官方 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 并填写你的凭据:

[email protected]
LINKEDIN_PASSWORD=your_password
ANTHROPIC_API_KEY=sk-ant-...    # Optional — enables AI features
3. 运行

独立运行:

linkedin-mcp

使用 Claude Desktop — 添加到你的 claude_desktop_config.json:

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

使用 Claude Code — 添加到 .mcp.json:

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

工具参考

职位工具(3 个)
工具参数描述
search_jobskeywords、location、job_type、experience_level、remote、date_posted、page、count使用丰富的筛选条件搜索 LinkedIn 职位
get_job_detailsjob_id获取职位的完整描述、技能要求和元数据
get_recommended_jobscount获取个性化职位推荐
个人资料工具(3 个)
工具参数描述
get_profileprofile_id获取 LinkedIn 个人资料(自己的资料使用 "me")——工作经历、教育背景、技能
get_companycompany_id获取公司信息——描述、规模、总部所在地、专长领域
analyze_profileprofile_id借助 AI 审阅个人资料并提供可执行的优化建议
文档生成工具(4 个)
工具参数描述
generate_resumeprofile_id、template、output_format根据 LinkedIn 个人资料生成简历
tailor_resumeprofile_id、job_id、template、output_format为特定职位定制简历
generate_cover_letterprofile_id、job_id、template、output_format为职位撰写个性化求职信
list_templatestemplate_type列出可用模板(resume、cover_letter 或 all)

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

求职申请跟踪工具(3 个)
工具参数描述
track_applicationjob_id、job_title、company、status、notes、url开始跟踪求职申请
list_applicationsstatus列出所有已跟踪的求职申请,可按状态筛选
update_application_statusjob_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 密钥即可使用;AI 可增强简历和求职信的生成效果
  • 强化安全性 — Jinja2 SandboxedEnvironment、WeasyPrint 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否24LinkedIn API 响应的缓存时长
LOG_LEVEL否INFO日志级别(DEBUG、INFO、WARNING、ERROR)

开发

# 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 客户端格式化器、格式转换器)、AI 提供方和 MCP 工具处理器。


使用示例

连接后,可以向 AI 助手提问:

“搜索美国的远程 Python 开发者职位”

“显示 satyanadella 的个人资料”

“根据我的 LinkedIn 个人资料生成一份针对职位 3847291056 的简历”

“使用简洁模板为职位 3847291056 创建一封求职信”

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

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

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


许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。