Skip to main content
Glama
AmmYoo7

linkedin-safe-mcp

by AmmYoo7

linkedin-safe-mcp

一个 MCP 服务器,为 AI 代理(Claude Code、Codex、Claude Desktop、Cursor 等)提供 LinkedIn 超能力——同时不会让你的 LinkedIn 账号面临风险

  • 发布到 LinkedIn ——通过 LinkedIn 的官方 API(OAuth,符合服务条款)发布文本、链接和图片,此外还支持评论和点赞。

  • 搜索职位 ——通过 LinkedIn 的公开访客端点使用关键词/地点/远程/经验/日期筛选。无需登录,无需 cookie:你的账号完全不参与。

  • 管理求职流程 ——一个本地 SQLite 申请跟踪器(感兴趣 → 已申请 → 面试中 → 录用),带有备注和每个职位的发布快照,因此即使职位发布被撤下,代理也能管理你的管道并撰写量身定制的求职信。

为什么这样设计?

LinkedIn 没有官方的职位搜索 API,而非官方途径(使用你的 li_at 会话 cookie 的 Voyager 内部 API、在你已登录会话上运行无头浏览器)违反了 LinkedIn 用户协议 §8.2,并且经常导致账号被限制。这个服务器刻意在两者之间取得平衡:

关注点

处理方式

账号风险

发布、评论、点赞

官方 REST API,你自己的 OAuth 应用,w_member_social

无——官方认可

职位搜索与详情

访客端点(未登录的职位页面),按 IP 限流

无——不涉及任何凭据

管道跟踪

你机器上的本地 SQLite

无——绝不接触 LinkedIn

Easy Apply、私信、信息流阅读

刻意不包含——没有违反服务条款的访问方式就无法实现

环境要求

  • Python 3.11+ 和 uv

  • 仅发布功能需要:一个免费的自助式 LinkedIn 开发者应用(下方 5 分钟设置)。职位搜索和跟踪器零设置即可使用。

安装并连接到你的代理

克隆/复制此目录,然后将其注册到你的 MCP 客户端。下面的 <REPO> 是此项目的绝对路径。

Claude Code

claude mcp add linkedin \
  --env LINKEDIN_CLIENT_ID=your_client_id \
  --env LINKEDIN_CLIENT_SECRET=your_client_secret \
  -- uv run --directory <REPO> linkedin-safe-mcp

或者在项目的 .mcp.json 中:

{
  "mcpServers": {
    "linkedin": {
      "command": "uv",
      "args": ["run", "--directory", "<REPO>", "linkedin-safe-mcp"],
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Codex~/.codex/config.toml

[mcp_servers.linkedin]
command = "uv"
args = ["run", "--directory", "<REPO>", "linkedin-safe-mcp"]
env = { LINKEDIN_CLIENT_ID = "your_client_id", LINKEDIN_CLIENT_SECRET = "your_client_secret" }

Claude Desktopclaude_desktop_config.json)——与上面的 .mcp.json 具有相同的 JSON 结构。

LINKEDIN_CLIENT_* 变量仅发布功能需要;如果你只需要职位搜索和跟踪,可以省略它们。

启用发布功能(一次性 LinkedIn 应用设置)

  1. 前往 https://www.linkedin.com/developers/apps创建应用(需要关联任意 LinkedIn 主页;你可以创建一个简单的)。

  2. 在应用的 Products 标签页中,添加 Share on LinkedInSign In with LinkedIn using OpenID Connect

  3. Auth 标签页中,添加重定向 URL http://localhost:8765/callback

  4. Client IDClient Secret 复制到上面显示的 env 变量中。

  5. 进行一次身份验证——两种方式都可以:

    • 在终端中:uv run --directory <REPO> linkedin-safe-mcp auth

    • 或者直接让你的代理发布一些内容;它会调用 login 工具并把授权 URL 交给你。

令牌存储在 ~/.linkedin-mcp/tokens.json(权限 0600)中,有效期约 60 天;LinkedIn 不会为自助式应用签发刷新令牌,因此到期后你需要重新运行登录(auth_status 会准确告诉代理何时到期)。

工具

工具

需要认证

功能

auth_status

报告配置/认证状态,并给出确切的后续步骤

login / logout

浏览器 OAuth 流程 / 删除已存储的令牌

get_my_profile

已连接账号的姓名、电子邮件、person URN

create_post

发布帖子:文本(+话题标签),可选链接本地图片;PUBLICCONNECTIONS

delete_post

删除你自己的帖子(URN 或帖子 URL)

comment_on_post

评论帖子(URN 或帖子 URL)

like_post

点赞帖子(URN 或帖子 URL)

search_jobs

筛选条件:地点、远程/混合/现场、发布时间、经验级别、职位类型、仅限 Easy Apply、排序;最多 50 条结果

get_job

完整职位发布:描述、资历、类型、薪资(如有列出)、申请人数、外部申请 URL

save_job

将职位快照保存到本地跟踪器

get_saved_job / list_saved_jobs

单个职位及历史记录 / 管道概览及状态计数

update_job_status

感兴趣 → 已申请 → 面试中 → 录用 / 已拒绝 / 已撤回 / 已归档,并附备注

add_job_note / remove_saved_job

添加备注 / 删除职位

代理可以用它做这些事情:“查找本周发布的远程 staff-engineer 职位,保存有潜力的,根据保存的职位描述撰写量身定制的求职信,标记我已申请的职位,并发布我开源工作的摘要。”

配置

环境变量

默认值

用途

LINKEDIN_CLIENT_ID / LINKEDIN_CLIENT_SECRET

LinkedIn 应用凭据(仅发布功能)

LINKEDIN_MCP_DIR

~/.linkedin-mcp

令牌和跟踪器数据库的存放位置

LINKEDIN_REDIRECT_PORT

8765

OAuth 回调端口(必须与应用的重定向 URL 匹配)

LINKEDIN_API_VERSION

202606

/rest/* 调用的 LinkedIn-Version

LINKEDIN_POSTS_BACKEND

auto

restugcauto(尝试并记住你的应用被允许使用哪种)

LINKEDIN_MCP_USER_AGENT

一个 Chrome UA

用于访客职位请求的 UA

行为说明与限制

  • 发布:LinkedIn 将成员发布限制为每天 150 次请求,并拒绝最近帖子的完全重复内容(422)。帖子文本中的保留字符会自动转义以适配版本化 API,因此括号不会导致错误;话题标签会被保留。

  • 职位搜索:访客端点按 IP 限流(HTTP 429)。服务器会缓存结果(搜索 10 分钟 / 职位详情 6 小时),使用退避重试,并控制多页获取的节奏;如果持续收到 429,它会向代理返回一个明确的“请稍等一分钟”错误。请保持 limit 适度。

  • 抓取姿态:访客职位搜索以接近人类的速度读取与未登录访客看到的相同的公共页面,并通过缓存尽量减少负载。不过,LinkedIn 随时可能更改或限制这些端点——解析器由 fixture 测试固定,因此一旦出现问题会大声报错,工具错误也始终可供代理采取行动。

开发

uv sync            # install deps (Python ≥3.11)
uv run pytest      # 48 tests: parsers vs live fixtures, payloads, OAuth, tracker,
                   # plus an end-to-end stdio smoke test that spawns the real server
uv run ruff check src tests && uv run ruff format --check src tests

布局:src/linkedin_mcp/ —— server.py(工具表面)· api/(官方 REST:帖子、社交操作、上传、双 rest/ugc 后端)· auth/(OAuth + 令牌存储)· jobs/(访客客户端、HTML 解析器、筛选映射)· tracker/(SQLite 存储)· cli.pyserve | auth | status | logout)。

路线图

  • 发布到 PyPI(uvx linkedin-safe-mcp 一行命令)

  • 点赞之外的反应类型;多图帖子;投票帖子

  • 在同一工具模式后面提供可选的第三方职位数据提供商

  • 用于远程/托管使用的 streamable-http 传输

  • (已考虑,仅限选择加入,默认关闭)基于 cookie 的 Voyager 提供商,用于个性化功能——并带有强烈警告,因为它违反 LinkedIn 的服务条款

许可证

MIT

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.

  • MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.

  • GetJobzi MCP server for job search, application tracking, and career forecasting.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AmmYoo7/linkedin-safe-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server