mcpField
J
Job Search MCP

Job Search MCP

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

关于 Job Search MCP

Job Search MCP 是面向 Claude Desktop 的本地求职服务和排名看板,主要针对美国软件工程岗位。它搜索招聘来源,由 Claude 根据已保存的个人资料评分,并跟踪候选岗位和申请状态。

主要功能

  1. 01按职位和地点搜索招聘网站
  2. 02根据个人资料为岗位匹配度打 0–100 分
  3. 03在内嵌排名看板中筛选岗位
  4. 04跟踪候选岗位和已申请岗位
  5. 05避免重复显示近期看过的岗位

适用场景

  1. 01查找目标地区的高级工程岗位
  2. 02根据简历资料确定岗位优先级
  3. 03逐个或批量申请、跳过岗位
  4. 04查看已保存岗位和申请状态

MCP 相关

stdio MCP 服务连接 Claude Desktop,并通过 `ui://` 资源提供内嵌看板界面。它提供职位搜索、评分、筛选、资料保存和查看已保存岗位的工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"servation-job-search": {
"command": "npx",
"args": [
"-y",
"@servation/job-search-mcp"
],
"env": {
"JOB_SEARCH_MCP_DATA": "<JOB_SEARCH_MCP_DATA>",
"LINKEDIN_LI_AT": "<LINKEDIN_LI_AT>",
"LINKEDIN_JSESSIONID": "<LINKEDIN_JSESSIONID>"
}
}
}
}
启动命令npx -y @servation/job-search-mcp
需要配置的环境变量
JOB_SEARCH_MCP_DATAOptional override for the per-user data file path (defaults to ~/.job-search-mcp/jobs.json).
LINKEDIN_LI_AT密钥Optional: your logged-in LinkedIn li_at cookie, for richer/Premium LinkedIn data instead of guest mode. Against LinkedIn's ToS; see README.
LINKEDIN_JSESSIONID密钥Optional: your logged-in LinkedIn JSESSIONID cookie, paired with LINKEDIN_LI_AT for Premium mode.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@servation/job-search-mcp0.1.3

工具

10

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitnumber否本次运行最多返回/持久化的职位数(默认值:15)。
querystring否职务/关键词筛选,例如 'backend java spring'。覆盖个人资料中的目标职务。
remoteenum否工作场所类型(LinkedIn);同时设置远程工作偏好。on site | remote | hybrid
sort_byenum否LinkedIn 结果排序方式。recent | relevant
sourcesarray否仅限这些来源(默认值:全部)。
job_typeenum否雇佣类型(LinkedIn)。full time | part time | contract | temporary | internship | volunteer
locationstring否地点筛选,例如 'California' 或 'Remote'。覆盖个人资料中的搜索地点。
max_yearsnumber否此搜索中候选人的工作年限(覆盖已保存的个人资料);同时作为资历筛选条件的默认值。
salary_minnumber否最低年薪筛选(LinkedIn),例如 100000。
date_postedenum否发布时间筛选(LinkedIn)。24hr | past week | past month
verify_urlsboolean否如果为 true,则通过网络验证每个职位 URL(较慢)。默认值为 false。
max_applicantsnumber否展示申请人数较少的 LinkedIn 职位(使用 LinkedIn 的早期申请者筛选条件,约少于 25 人)。精确筛选申请人数需要 LinkedIn cookie。
experience_levelenum否资历筛选条件(LinkedIn)。internship | entry level | associate | senior | director | executive

详细介绍

job-search-mcp

一款面向 Claude Desktop 的个人求职助手。你让 Claude 查找职位;它会搜索真实的招聘网站,为每个职位打出 0–100 的匹配度评分,并将结果显示在一个可一键筛选的排名看板上。所有内容都在本地运行——无需 API 密钥,也无需账户。

它是一个 MCP App:一个 Claude Desktop 可与之通信的小型服务,外加一个直接显示在聊天中的看板。

适用范围:它专为美国软件工程职位调校(内置来源和职位筛选条件针对美国科技雇主)。搜索其他领域或地区时,结果会比较少。

**适用环境:**为 Claude Desktop 构建并经过测试。它也应该适用于同时支持运行本地(stdio)服务并渲染 MCP App 界面的其他 MCP 客户端,例如 VS Code(Copilot)、Cursor 或 Goose(未经测试)。 仅支持远程连接的客户端(ChatGPT、网页版/移动版 Claude)无法启动本地服务,因此无法使用。

Claude Desktop 中的排名求职看板——每个职位都有 0–100 的匹配度评分,并带有 Applied/Skip 按钮


功能

  • 搜索真实的招聘网站——LinkedIn,以及 8 个 ATS/招聘来源(Greenhouse、Lever、Ashby、Workday、 SmartRecruiters、Hacker News、RemoteOK、Remotive),并根据你的目标职位和地点进行搜索。
  • 为你评估每个职位——Claude 会阅读完整职位描述,并根据你的技能、工作年限、资历匹配度和职位类型,给出 0–100 的匹配度评分及一句话理由。
  • 快速筛选——对每张卡片选择 Apply / Skip,也可以批量处理(“隐藏所有低于 60 分的职位”)。
  • 记住相关信息——持续维护候选列表和已申请职位跟踪表,并且不会重复显示同一个职位(6 个月内)。

设置

1. 告诉 Claude Desktop 如何使用它。 打开配置文件:

  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json

在 "mcpServers" 下添加以下内容——npx 会为你获取已发布的软件包,无需克隆或构建:

{
  "mcpServers": {
    "job-search": {
      "command": "npx",
      "args": ["-y", "@servation/job-search-mcp"]
    }
  }
}

2. 完全退出并重新打开 Claude Desktop(在 Windows 上,请从系统托盘退出——只关闭窗口还不够)。就这样。

改为从源代码运行
npm install
npm run build

然后将配置指向此文件夹中的 dist/main.js:

{
  "mcpServers": {
    "job-search": {
      "command": "node",
      "args": ["D:\\job-search-mcp\\dist\\main.js"]
    }
  }
}

使用方法

直接与 Claude 对话即可。例如:

  • “保存我的个人资料”——先粘贴你的简历;Claude 会提取你的技能、职位、工作年限和地点,以便针对你定制搜索和评分。
  • “查找加利福尼亚州的高级后端工程师职位,本周发布的。”
  • “查找申请人数少的职位”——添加 LinkedIn 的早期申请者筛选条件。
  • “隐藏所有低于 60 分的职位。”
  • “显示我申请过的职位。”
  • “重新评估看板上的职位。”

典型的首次使用流程:保存个人资料 → “查找职位” → Claude 评分并显示排名看板 → 你选择 Apply/Skip。


看板

看板是一个持续更新的候选列表。职位会一直保留在列表中,直到你选择 Apply(移至跟踪表)或 Skip(永久隐藏)。新搜索会自动跳过已在看板或跟踪表中的职位、已隐藏的职位,以及过去 6 个月内显示过的职位——这样你就不会连续看到同一条招聘信息。

点击卡片上的 Applied 或 Skip,也可以让 Claude 代为操作。在小组件中完成筛选后,结果会保留。


工具(供参考)

你很少会按名称调用这些工具——Claude 会挑选合适的工具——不过以下是它们的具体功能:

工具功能
find_jobs在招聘网站上搜索符合你的职位/地点的工作(可选筛选条件:资历、类型、发布时间、远程、薪资、申请人数、来源)。
evaluate_jobsClaude 为找到的工作打分(0–100),评估匹配度(搜索后自动运行)。
show_board显示已排序的工作列表(或你的 saved 跟踪列表)。
set_status对单个工作标记为申请 / 跳过 / 保存(卡片按钮也有这些操作)。
bulk_status按分数或来源一次筛选多项,例如 忽略所有分数低于 60 的工作。
whats_promising以文本形式列出当前工作列表(所有已评分的工作,以及仍未评分的工作)。
review_saved你的跟踪列表——已保存或已申请的工作。
rescore_board从头开始重新评估列表中的每项工作。
clear_jobs清理列表:清除未评分的剩余项或整个列表(不会影响已申请或已忽略的工作)。
save_profile保存你的简历资料(用于搜索和评分)。

数据存储位置

你的机器上只有一个 JSON 文件——不使用云端,除你搜索的招聘网站外,不会向任何地方发送数据:

  • 已安装:~/.job-search-mcp/jobs.json
  • 从源代码运行:./data/jobs.json
  • 使用 JOB_SEARCH_MCP_DATA 环境变量覆盖。

可选:LinkedIn Premium 模式

默认情况下,LinkedIn 使用其公开访客端点:无需登录,也没有账号登录风险,而且你已经可以获取完整的职位描述。请注意,即使在访客模式下,自动访问仍会通过你自己的 IP 发起,且违反 LinkedIn 的用户协议,请自行斟酌使用。如果你想获取更丰富的 Premium 数据,可以在服务配置中添加 env 块,使用已登录的账号:

"job-search": {
  "command": "npx",
  "args": ["-y", "@servation/job-search-mcp"],
  "env": {
    "LINKEDIN_LI_AT": "<your li_at cookie>",
    "LINKEDIN_JSESSIONID": "ajax:1234567890123456789"
  }
}

在已登录的 linkedin.com 标签页中,前往 DevTools → Application → Cookies 获取这两个 Cookie。

⚠️ 注意: 这违反 LinkedIn 的服务条款,可能导致你的账号被标记或限制。这些 Cookie 大约每月会过期一次,而且 LinkedIn 的内部端点可能随时变更,恕不另行通知。如果出现故障,系统会自动回退到访客模式。不添加 env 块即可确保安全(仅使用访客模式)。


评分机制

Claude(宿主模型)会直接进行评分——它会阅读每份职位描述并判断匹配度,因此评分校准良好。确定性公式(scoring.ts 中的 computeMatchScore)作为备用方案保留,供使用较弱本地模型的用户使用,这类模型往往会给所有工作打过高的分数;默认情况下不会启用该公式。

开发

npm run typecheck    # type-check UI + server + harness
npm run build        # build the UI bundle (vite single-file) + compile the server (tsc)
npm run serve:stdio  # run the server from source (tsx) for local testing
npm run harness      # work on the review UI without Claude Desktop (see harness/)
npm run canary       # check every job source is still returning postings

服务仅支持 stdio(main.ts → server.ts);UI 是一个 React 应用,会打包成单个内嵌的 HTML 文件(src/mcp-app.tsx → dist/mcp-app.html),服务会将其作为 ui:// 资源提供。

开发 UI 时,请使用 harness/。它是 Claude Desktop 的本地替代环境,可使用合成的职位存储和真实的 ui/* 桥接来渲染组件。在浏览器标签页中打开 dist/mcp-app.html 只会显示“正在连接……”,而最容易出问题的部分(打开链接、主题设置、挂载后的刷新)都由宿主介入处理,因此只有连接宿主后才能发现问题。

如果某个职位来源失效,运行 npm run canary 即可查看是哪一个。公司 slug 经常失效,因此修复通常应该放在远程 slug 注册表中——updateCompanyDirectoriesFromRegistry() 会在运行时重新读取该注册表——而不是通过发布新版本来解决。

评论

支持 Markdown

第一次接触 MCP?

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

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