jobfinder
Job Finder
为任何行业、任何国家寻找工作——从一句话,或从你的简历出发—— 并按你被列入候选名单的真实概率进行排序。
jobfinder daily --query "electrician jobs in Dubai"你会得到一份放在桌面上的电子表格,最优者在前。运行结束时它会自动打开。
一切都在你的机器上运行。你的简历除了以文本形式通过你自己的密钥发送到 Anthropic 的 API 之外,绝不会离开你的机器;你的搜索词会发送到你已启用的 招聘网站——就像你亲自在那些网站上输入一样。
快速开始
四个步骤。大约需要五分钟。
1. 安装
git clone https://github.com/MajidAli2006/jobfinder.git
cd jobfinder
python3 -m venv .venv
.venv/bin/pip install -e ".[all]"2. 获取一个 API 密钥
前往 console.anthropic.com/settings/keys,
登录,点击 Create Key,然后复制它。它以 sk-ant- 开头。
这是该工具唯一真正需要的密钥。
3. 将密钥放入名为 .env 的文件中
cp .env.example .env用任意文本编辑器打开 .env,将你的密钥粘贴在 = 后面,不要加引号,
也不要加空格:
ANTHROPIC_API_KEY=sk-ant-your-key-here保存即可。.env 已被 git 忽略,因此你的密钥永远不会被提交。
4. 确认一切正常,然后开始搜索
.venv/bin/jobfinder setup
.venv/bin/jobfinder daily --query "warehouse jobs in Leeds"提示:运行一次
source .venv/bin/activate,之后在本次终端会话中就可以 省略.venv/bin/前缀。
Related MCP server: JobSpy MCP Server
通过 Claude(MCP)使用
这个工具也是一个 MCP 服务器,所以你可以直接让 Claude 帮你搜索。
Claude Code —— 一条命令:
claude mcp add --scope user jobfinder -- /full/path/to/jobFinder/.venv/bin/jobfinder-mcp将 /full/path/to/jobFinder 替换为你克隆的位置。在该文件夹内运行 pwd
即可获取路径。
Claude Desktop —— 打开 claude_desktop_config.json 并添加:
{
"mcpServers": {
"jobfinder": {
"command": "/full/path/to/jobFinder/.venv/bin/jobfinder-mcp"
}
}
}配置文件位于:
平台 | 路径 |
macOS |
|
Windows |
|
之后重启 Claude Desktop。Cursor 和 Windsurf 在其各自的 MCP 设置中
使用相同的 command 格式。
然后直接问:
"帮我找欧洲的远程 React 合同工作"
有四个工具可用:check_setup(确认密钥是否正常)、
preview_search(在花费任何费用之前查看请求是如何被理解的)、
find_jobs(完整运行——需要几分钟并写入电子表格),以及
list_platforms(哪些招聘网站服务于某个国家)。
API 密钥——你需要什么,不需要什么
即使完全没有密钥,该工具仍然可以搜索 LinkedIn 的公开职位列表、 雇主招聘页面(Greenhouse、Lever、Ashby、Workable 等)、十个远程招聘网站、 Hacker News 的 "Who is hiring" 板块,以及任何发布标准职位标记的地区性网站。
有了 Anthropic 密钥(上面的第 2 步),它还能理解自由文本请求、
读取你的简历,并判断资格和匹配度。没有它你仍然可以搜索,但你必须在
candidate.local.json 中说明要搜索什么,而不是用一句话——参见"故障排除"。
以下所有内容都是可选的。每一项都会增加更多招聘网站。跳过其中任何一项, 工具只会将该来源报告为未使用——它绝不会导致运行失败。
免费密钥,自助获取
注册,复制密钥,粘贴到 .env 中。
添加到 | 网站 | 获取地址 |
| Adzuna(全球) | |
| Reed(英国) | |
| Jooble(全球) | |
| Careerjet(全球) |
访问 Indeed、Glassdoor、Bayt、Naukri 及其他网站
这些网站——以及 Rozee 和 foundit——会用 CAPTCHA 阻止直接请求,但 它们都有意将职位发布到 Google 的职位索引中。因此入口就是 Google 的索引, 而多家供应商出售其授权访问权限。
它们返回的都是相同的职位列表,因为都是 Google 的数据。区别在于价格和
免费额度,而不是覆盖面。选择你喜欢的任何一个,把它的密钥像其他密钥一样
放入 .env——工具会使用它找到的那一个:
添加到 | 供应商 | 获取地址 | 说明 |
| SerpApi | 每月免费额度,超出后付费 | |
| SearchApi.io | 相同数据,有免费额度后付费 |
使用与你注册网站匹配的变量。 两者不可互换:将 SearchApi.io 的密钥放在
SERPAPI_KEY 中会被拒绝并返回 401 Invalid API key。SerpApi 密钥是 64 位
十六进制字符;SearchApi.io 的密钥较短。如果收到拒绝,请检查密钥是由哪个
网站签发的。运行 jobfinder sources,它会告诉你正在使用哪个供应商。
SERPAPI_KEY=your-key-here只设置一个。如果两者都存在,则使用第一个配置的供应商,而且两者都不是 必需的——没有它们工具仍然可以运行,只是会跳过这些网站并在运行摘要中说明。
如果你所在国家的主要招聘网站不在上面的免费列表中,那么这个密钥值得拥有: 它可以在任何国家访问这些网站。覆盖面确实因国家和搜索措辞而异——Google 的 索引中有大量巴基斯坦的 "software engineer" 和阿联酋的 "full stack developer" 职位,但对某些其他组合则完全没有结果。空结果会如实报告,而不是当作密钥 故障。
需要审批
INDEED_PUBLISHER_ID、ZIPRECRUITER_API_KEY、SEEK_API_KEY、
STEPSTONE_API_KEY、BAYT_API_KEY、NAUKRI_API_KEY、ROZEE_API_KEY——
这些是需要先获得批准的合作伙伴计划。大多数人不需要它们;SerpApi 密钥
就能访问相同的职位列表。
要查看哪些平台服务于你的国家以及它们需要哪些密钥:
jobfinder setup --region Nigeria密钥放在哪里
以下任意一种,任你选择:
你自己命名的文件,通过
JOBFINDER_ENV=/path/to/your.env运行命令所在文件夹中的
.env~/.jobfinder/.env—— 如果你想为每个项目使用同一组密钥,这是个好选择项目文件夹中的
.env
所有文件都会被读取,并且会合并。 对于在多个文件中设置的密钥,
列表中位置靠前的优先;只有较低位置文件才有的密钥仍然会被读取。
因此你可以将共享密钥放在 ~/.jobfinder/.env 中,将每个项目特有的密钥
放在项目的 .env 中。
真实的环境变量优先于所有文件,所以 export ADZUNA_APP_ID=... 优先。
注意反向不成立:在 shell 中取消设置变量不会隐藏 .env 文件中定义的
密钥。格式是每行一个 KEY=value,不加引号:
ANTHROPIC_API_KEY=sk-ant-...
ADZUNA_APP_ID=12345678
ADZUNA_APP_KEY=abcdef...日常使用
用通俗的语言说出你想要什么。 无需配置过滤器:
jobfinder daily --query "plumber jobs in Lagos"
jobfinder daily --query "remote React contract, Europe"
jobfinder daily --query "part time warehouse work near Leeds"
jobfinder daily --query "graduate marketing internship, London"或者把你的简历交给它,让它自己判断你做什么工作:
jobfinder daily --cv ~/cv.pdf
jobfinder daily --cv ~/cv.pdf --query "only remote, minimum £45k"简历在你的机器上被读取。只有文本被发送到 Anthropic,用于构建你的搜索 画像并评估每条广告的匹配度。
常用参数:
参数 | 作用 |
| 只搜索最近 7 天内发布的广告(默认 30) |
| 丢弃所有公布薪资低于此值的职位 |
| 同时丢弃未公布任何薪资的广告 |
| 更快、更浅的扫描——更少的详情获取和更少的 API 调用 |
| 仅规则。无 API 调用,无费用 |
| 使用内置示例数据运行——适合试用 |
| 完成后不打开电子表格 |
| 将报告写入其他位置 |
| 你想工作的地点。如果省略则从你的简历中读取 |
| 更慢、更彻底的扫描 |
| 跳过重新检查每条广告是否仍然有效 |
| 与 |
| 将运行限制为指定的连接器——参见 |
| 只搜索初创公司、成长型公司和中型企业 |
| 保留限定在通常薪资低于你底线的市场的职位 |
| 绝不暂停询问缺失的密钥;跳过这些平台 |
| 显示每一步,或仅显示警告和错误。所有命令均可用 |
以上每个参数都适用于任何国家。--region 接受国家、城市、本地名称或列表——
"uae"、"Deutschland"、"Lagos"、"USA, UK" 都能解析。
关于 --min-salary: 未公布薪资的广告会被保留,标记为
"未公布薪资",因为无法证明其低于你的底线。如果你不想看到这些广告,
请添加 --require-salary。如果你的请求本身指定了金额——
--query "electrician jobs, minimum $60k"——未公布薪资的广告会被移到
Prospects 工作表中。
你会得到什么
~/Desktop/job finder/ 中的一份电子表格,包含十三个工作表:Quick Apply
(仅基本信息)、Hot Leads、All Qualified Jobs,然后按全职、兼职、
合同、自由职业、初创公司和合作伙伴关系拆分,以及 Prospects(资格不明
——值得询问)、Long Shots(符合条件,但回复概率低)、
Companies & Contacts,以及一个显示过滤内容和原因的 Search Summary。
相同的数据还会以 .csv、.json 和可浏览的 .html 页面形式写入旁边。
匹配百分比是对被列入候选名单的估计,而不是关键词重叠。 你的简历匹配度 设定上限;在此基础上,估计值会根据广告所揭示的竞争情况而变化。每一行都在 "Why this rank" 列中显示其自身的计算逻辑:
fit 87 × 1.05 = 91 — applicant count not published (-4%) · posted in the
last 24 hours (+3%) · scoped to United Kingdom, smaller pool (+6%) ·
applying straight into the employer's own system (+5%)因此,有 200 个申请者的完美匹配会排在还没人发现的好匹配之下——这是关于 你的时间花在哪里的诚实答案。
其他命令
jobfinder setup # which keys are set, which are missing
jobfinder setup --region India # what serves a particular country
jobfinder sources # every connector and its status
jobfinder sources --test # live-check every configured key
jobfinder status # what previous runs found
jobfinder platforms --region Kenya
jobfinder platforms --region Kenya --trade "solar installer"
jobfinder check --title "..." --description "..." # why one advert passed or failedcheck 还接受 --company、--location 和 --url,使其能够判断雇主、
资格条件以及你将如何申请,而不仅仅是措辞。
要让某个搜索成为你的默认搜索,以便裸运行 jobfinder daily 即可执行它,
请在项目文件夹中创建 candidate.local.json:
{
"home_country": "Nigeria",
"default_search": {
"label": "Electrical",
"query": "electrician jobs in Lagos",
"core_terms": ["electrician", "electrical"]
}
}它已被 git 忽略。没有它,裸运行 jobfinder daily 会询问要搜索什么,
而不是自行猜测。
故障排除
"我不知道该找什么样的工作" —— 给它一个 --query 或 --cv。
它不会为你凭空发明一个搜索。
"自定义搜索需要 Claude 判断层" —— 自由文本 --query 必须先由模型
读取才能进行搜索,因此这需要 ANTHROPIC_API_KEY。运行会以退出码 1 停止
并且不写入任何报告。要么设置密钥,要么按照下面的示例在
candidate.local.json 中自行说明搜索内容。
未找到职位 — 使用 --days 30 扩大时间范围,检查你的国家是否拼写完整,并运行 jobfinder setup --region <你的国家> 查看为你服务的站点是否需要你尚未设置的密钥。
"ANTHROPIC_API_KEY 未设置" — .env 文件可能不在工具查找的位置,或者密钥带有引号。运行 jobfinder setup 查看它找到了什么。请记住文件必须命名为 .env,而不是 env 或 .env.txt。
在 Windows 上无反应 — 使用 pip install -e ".[all]" 安装,而不是直接从源码运行;Windows 需要捆绑的 tzdata 包。
想在设置任何密钥之前先看看效果? 自由文本 --query 需要 Anthropic 密钥,因为总得有人把你的句子读出来并转换成搜索条件。想完全不使用任何密钥运行,就直接把搜索条件写进 candidate.local.json 项目文件夹中:
{
"default_search": {
"label": "Warehouse",
"query": "warehouse operative",
"core_terms": ["warehouse", "forklift"]
}
}然后针对捆绑的示例招聘广告运行:
jobfinder daily --offline --no-llm这样就能生成完整的电子表格,全程无需联系任何外部服务。
开发
.venv/bin/pip install -e ".[all,dev]"
.venv/bin/python -m pytest tests/ -q # 661 tests, fully offline
.venv/bin/ruff check job_agent/ tests/测试不需要网络,也不需要任何密钥。
隐私
你的简历文件只保存在你的机器上——它仅在本地被读取,只有提取出的文本会被发送到 Anthropic 的 API,使用你自己的密钥,用于构建你的搜索画像和判断匹配度。招聘广告的文本也会发送到同一个 API,用途相同,除此之外不会发送到任何其他地方。
你的搜索词会发送到你启用的招聘网站,因为搜索机制就是这样运作的——和你手动在那些网站上输入的词完全一样。如果未设置任何密钥,则意味着使用 LinkedIn 的公开搜索和开放的招聘网站。运行 jobfinder sources 可以查看当前实际启用了哪些来源。
本工具不会向作者发送任何数据,也不包含任何遥测功能。API 密钥从 .env 文件中读取,该文件已被 git 忽略,并且密钥会从日志和错误信息中被清除——即使某个请求因携带密钥而失败,该密钥也会在打印前被脱敏处理。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables users to search for jobs, prefill applications using AI, and automate submissions across major platforms like Lever and Ashby directly from Claude or Cursor. It provides a full suite of tools for managing job queues, profile data, and resumes within a chat interface.34MIT
- AlicenseNot gradedqualityAmaintenanceEnables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.5MIT
- FlicenseAqualityDmaintenanceTransforms Claude into an AI job-hunting assistant that searches remote job boards, scores roles against your CV, generates tailored cover letters, and logs everything to a Notion tracker.11
- AlicenseAqualityBmaintenanceA personal job-search assistant for Claude Desktop that searches real job boards, scores each job 0–100 for fit, and displays a ranked board for fast triage.10791MIT
Related MCP Connectors
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
AI job search for Claude, ChatGPT, Cursor. 170K+ jobs, 3,800+ companies. OAuth or stdio.
Search AI-native jobs, inspect application forms, and fetch free interview-prep resources.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MajidAli2006/jobfinder'
If you have feedback or need assistance with the MCP directory API, please join our Discord server