职位搜索评分系统

一个批量轮询ATS职位公告板、根据用户偏好对职位进行评分并展示匹配结果的MCP服务器,适用于Claude Code或任何MCP兼容客户端。

  • by Emeier2
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Emeier2/job-search-mcp

使用说明

求职mcp

MCP服务器批量轮询ATS工作板,根据您的偏好对工作进行评分,并显示匹配结果。专为与Claude Code或任何兼容MCP的客户端一起使用而设计。

法学硕士的作用仅限于两件事:(1)一次性面试,以确定你的偏好,以及(2)展示预先筛选的结果。其他所有操作——获取、存储、评分、过滤——都在本地运行。

运作原理

preferences.json ─► poller (cron) ─► ATS APIs ─► scorer ─► SQLite
                                                              │
                                          MCP client ◄── query tools
                                                              │
                                        Google Drive ◄── resume tools
  1. 设置 — run_setup 在Greenhouse、Lever和Ashby调查了约150家公司,以发现活跃的招聘板。
  2. 面试 --法学硕士会就角色偏好对你进行面试,然后打电话给你 save_preferences 写 preferences.json.
  3. 投票 --背景民调员(node build/poll.js)从被跟踪的公司获取所有工作,并对其进行确定性评分。
  4. 查询 --MCP工具从SQLite读取预先评分的结果。查询时API调用为零。
  5. 组织 — generate_resumes 将你的基本简历复制到谷歌云端硬盘上的公司特定文件夹中,以查找最匹配的简历。

设计原则

  • LLM学分很贵 --仅用于偏好面试和结果展示
  • 本地计算是免费的 --关键字评分、搜索和过滤都发生在SQLite和Node.js中
  • 网络很便宜 --按计划从公共ATS API批量获取数千个作业
  • 用户控制一切 --公司列表、关键字权重、评分阈值都来自面试

评分引擎

纯字符串匹配——评分循环中没有LLM调用。

规则 逻辑
排除检查 如果职位中出现任何排除条款→ 不合格(得分=-1)
最低工资(调整后的COL) salary_min × COL_multiplier.乘数= Local_RPP / 122.3 (NYC).
标题关键字 将匹配项替换为职位,每次点击都会增加其配置的权重
描述关键字 将匹配项替换为纯文本职位描述,每次点击都会增加其权重
工作地点奖金 +2(如果工作地点与首选地点匹配)
平台奖励 温室+3,杠杆+1,阿什比+0

以下职位 score_threshold (默认值:5)已存储,但未显示 get_matches.

生活成本(COL)调整

工资检查根据工作地点动态调整您的最低可接受工资,使用 东亚银行区域价格平价(RPP) 约120个美国地铁的数据。

A. salary_min 如果您的偏好为160000美元,则意味着:

位置 RPP 乘数 有效楼层
纽约市 122.3 1000 160000美元
旧金山 118.5 0.969 155040美元
西雅图 112.9 0.923 147680美元
奥斯汀 103.8 0.849 135840美元
盐湖城 101.2 0.827 132320美元
远程 不适用 0.900 144000美元
未知/其他 不适用 0.850 136000美元

这确保了低成本领域的角色不会被校准为高COL中心的楼层过滤掉。

MCP工具

设置和配置

工具 说明
run_setup 探索种子名单+可选附加功能,以发现拥有活跃董事会的公司
get_company_info 公司元数据:名称、描述、部门、地点、开放角色计数
save_preferences 编写结构化偏好配置文件(关键字、排除项、地点、工资)
setup_polling 返回特定于操作系统的轮询器调度指令
get_col_info 查找、比较或计算120多个美国大都市的工资等值

查询与操作

工具 说明
get_matches 得分最高的工作高于阈值。筛选条件:公司、地点、天数、限制
list_company_jobs 一家公司的所有空缺职位,按分数排序
get_job_details 完整的职位描述、工资、分数明细,以及 COL购买力背景
get_resume_context 职位+公司背景包,用于简历定制
search_jobs 在所有缓存作业中进行全文关键字搜索
check_job_status HTTP HEAD用于验证发布URL是否仍然有效
generate_resumes 将基本简历复制到GDrive上的公司文件夹中,以查找最匹配的简历

Google Drive集成

这 generate_resumes 该工具自动化了应用程序管道的第一步。它

  1. 识别得分最高的工作匹配。
  2. 连接到谷歌云端硬盘(通过 @piotr-agier/google-drive-mcp).
  3. 如果不存在,则创建特定于公司的文件夹。
  4. 将您的“基本简历”(由ID指定)复制到该文件夹中,并为特定角色重命名。

这为您准备了一个工作区,以便您执行最终的特定角色简历调整。

ATS来源

平台 API
温室 boards-api.greenhouse.io/v1/boards/{slug}
杠杆 api.lever.co/v0/postings/{slug}
阿什比 api.ashbyhq.com/posting-api

项目结构

src/
├── index.ts              # MCP server entry point (stdio transport)
├── poll.ts               # Background poller (standalone)
├── types.ts              # TypeScript interfaces
├── data/
│   ├── rpp-data.ts       # BEA Regional Price Parity raw data
│   └── col-lookup.ts     # Multiplier and equivalency logic
├── scoring/
│   └── scorer.ts         # Deterministic scoring engine with COL adjustment
├── sources/
│   ├── registry.ts       # ATS source dispatch + platform bonuses
│   ├── greenhouse.ts     # Greenhouse adapter
│   ├── lever.ts          # Lever adapter
│   └── ashby.ts          # Ashby adapter
├── db/
│   ├── schema.ts         # SQLite schema (sql.js)
│   ├── cache.ts          # Upsert, query, mark-dead operations
│   └── search.ts         # LIKE-based full-text search
├── tools/                # One file per MCP tool registration
│   ├── run-setup.ts
│   ├── save-preferences.ts
│   ├── setup-polling.ts
│   ├── get-matches.ts
│   ├── list-company-jobs.ts
│   ├── get-job-details.ts
│   ├── get-resume-context.ts
│   ├── search-jobs.ts
│   ├── check-job-status.ts
│   ├── get-company-info.ts
│   ├── get-col-info.ts      # New: COL lookup and salary comparison
│   └── generate-resumes.ts  # New: Google Drive resume automation
└── utils/
    ├── preferences.ts    # Load/save preferences.json
    ├── salary-parser.ts  # Regex salary extraction
    ├── html-to-text.ts   # HTML → plain text
    └── gdrive.ts         # GDrive MCP bridge utility

快速开始

npm install
npm run build

# Run the MCP server (stdio)
npm start

# Poll manually
npm run poll

MCP客户端配置

{
  "mcpServers": {
    "job-search": {
      "command": "node",
      "args": ["build/index.js"],
      "cwd": "/path/to/job-search-mcp"
    }
  }
}

技术栈

许可证

麻省理工学院