使用说明
求职mcp
MCP服务器批量轮询ATS工作板,根据您的偏好对工作进行评分,并显示匹配结果。专为与Claude Code或任何兼容MCP的客户端一起使用而设计。
法学硕士的作用仅限于两件事:(1)一次性面试,以确定你的偏好,以及(2)展示预先筛选的结果。其他所有操作——获取、存储、评分、过滤——都在本地运行。
运作原理
preferences.json ─► poller (cron) ─► ATS APIs ─► scorer ─► SQLite
│
MCP client ◄── query tools
│
Google Drive ◄── resume tools
- 设置 —
run_setup在Greenhouse、Lever和Ashby调查了约150家公司,以发现活跃的招聘板。 - 面试 --法学硕士会就角色偏好对你进行面试,然后打电话给你
save_preferences写preferences.json. - 投票 --背景民调员(
node build/poll.js)从被跟踪的公司获取所有工作,并对其进行确定性评分。 - 查询 --MCP工具从SQLite读取预先评分的结果。查询时API调用为零。
- 组织 —
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 该工具自动化了应用程序管道的第一步。它
- 识别得分最高的工作匹配。
- 连接到谷歌云端硬盘(通过
@piotr-agier/google-drive-mcp). - 如果不存在,则创建特定于公司的文件夹。
- 将您的“基本简历”(由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"
}
}
}
技术栈
- TypeScript+Node.js
- @模型上下文协议/sdk
- sql.js (WASM中的SQLite)
- 黄道带
许可证
麻省理工学院