job-mcp
通用多源职位搜索 FastMCP 服务器(job-mcp)
一个企业级、隐私至上的 FastMCP 服务器,提供智能多源技术职位聚合、智能去重、动态简历技能提取、需求覆盖率评分以及自主职位申请工作流,覆盖 HireMeTech、Comeet ATS 和 AllJobs Israel。
架构概览
graph TD
Client([MCP Client: Claude / Cursor / Gemini Spark / Antigravity]) --> Tools[FastMCP Server Layer]
Tools --> Aggregator[JobAggregator]
Aggregator --> Registry[SourceRegistry]
subgraph Parallel Pluggable Sources Layer
Registry --> S1[HireMeTechSource<br/>Direct REST API + Session Fallback]
Registry --> S2[ComeetSource<br/>Direct ATS API + Concurrency Semaphore]
Registry --> S3[AllJobsSource<br/>Category Feeds + Anti-Blocking Headers]
end
subgraph Processing & Normalization Engine
S1 --> Dedup[Deduplication & Entity Merger]
S2 --> Dedup
S3 --> Dedup
Dedup --> NormKey["Key = slug(title) + '@' + slug(company)"]
NormKey --> Merge[Metadata & Links Merger]
Merge --> Scorer[Unified CV / Skill Matcher]
end
subgraph Dynamic Candidate Engine
CV["Candidate CV (.pdf / .docx / .txt)"] --> Extractor[Dynamic CV & Profile Extractor]
Extractor --> Skills["Extracted Skills (40+ tokens)"]
Extractor --> Seniority["Inferred Seniority & Exclusions"]
Extractor --> Roles["Target Job Roles"]
Skills --> Scorer
Seniority --> Scorer
end
Scorer --> Cache[Unified JobCache - 1h TTL]
Cache --> Tools核心特性
动态简历与候选人画像提取:
多格式输入处理:支持
.pdf(通过pypdf)、.docx(通过python-docx)和.txt文件。NLP 技能分块与动态词库:无需脆弱的硬编码即可发现并提取 40+ 项技术技能,支持复杂多词技术(例如 FastAPI、LangGraph、PostgreSQL、Smart Contracts、GraphRAG)。
自动资历与排除检测:能准确推断候选人资历(Junior、Mid、Senior、Lead、Principal、Director),并生成智能否定关键词,自动过滤不匹配的职位。
停用词与噪声过滤:严格剔除简历结构残留、日期、和教育头衔,以及非技术性元数据。
智能需求覆盖率评分(0–100):
职位需求覆盖比率:计算候选人技能对特定职位的技能栈需求的满足程度(
matched_job_skills / total_job_skills),避免对简历内容广泛的候选人扣分。加权元素评分:
技术栈重合度与覆盖率:最高 40 分
求职 CV 全文关键词相关度:最高 25 分
工作方式与地点匹配度:最高 20 分
薪资期望吻合度:最高 15 分
排除性惩罚:当存在硬性资历/技术不合格项时,-100 分。
分段匹配分类:
顶级匹配($\ge 85$):自动申请 / 优先申请候选人。
强匹配($70 - 84$):高意向职位,标记以供审查/收藏。
失格($< 50$):自动隐藏或清除。
可插拔多源架构:
HireMeTech:直接 REST API 集成(
/api/jobs/search、/api/auth/me、/api/resume/profile),并带自动化 DOM 兜底。Comeet(直连 ATS):直连 Comeet Careers API(
/careers-api/2.0/company/{id}/positions),通过asyncio.Semaphore(5)限流、技术目录索引和按公司 TTL 缓存。AllJobs Israel:分类信息流接入,使用模拟真实浏览器请求头,并在来源层面实现错误隔离。
跨源去重与实体合并:
当同一职位在多平台展示时自动去重。
合并来源列表(
sources: ["hiremetech", "comeet"])、对技术栈取并集、保留最丰富的描述,并优先展示直连 ATS 申请链接。
自主与监督操作模式:
监督模式:每个工具均需标准 MCP 确认。
自主模式:无人工确认的安全读取/筛选/收藏链式操作,提交申请时设有两阶段安全护栏。
可观测性与高可用性:
使用结构化 JSON 日志(
structlog)并输出到stderr,自动对令牌/凭据进行脱敏。所有
ToolResponse返回体中自动附带跟踪 ID。
工具参考(9 个工具)
工具名 | 参数 | 描述 | |
| 无 | 列出所有已注册的职位源( | |
|
| 在所有平台或指定平台上拉取职位匹配结果,并自动去重。 | |
|
| 根据候选人简历与偏好,对聚合职位进行评分与筛选。 | |
|
| 在原始平台上收藏/置顶职位列表。 | |
|
| 在视图中将某职位列表移除/隐藏,并从缓存中删除。 | |
|
| 第 1 步:检查申请弹窗,生成预览并报告风险提示。 | |
|
| 第 2 步:执行提交申请。始终需要明确确认。 | |
| 无 | 基于在线页面,通过自修复启发式算法发现并校准 DOM 选择器。 | |
|
| 在“监督”与“自主”模式之间切换服务器运行模式。 |
快速开始与安装
1. 克隆并安装依赖
git clone https://github.com/zvieli/hireme_mcp.git
cd hireme_mcp
# Using uv (recommended)
uv venv .venv
uv pip install -e ".[dev]"
playwright install chromium2. 配置候选人简历与个人资料
将您的简历(cv.pdf、cv.docx 或 cv.txt)放在项目根目录:
cp /path/to/your/resume.pdf ./cv.pdf
cp .env.example .env编辑 .env 文件以配置默认的简历路径和联系方式:
DEFAULT_CV_PATH=./cv.pdf
CANDIDATE_EMAIL=your.email@example.com
CANDIDATE_NAME="Your Name"3.(可选)HireMeTech 首次登录认证设置
Comeet 与 AllJobs 无需登录即可全自动运行。 若需对您的 HireMeTech 账户进行认证以获得直连 API 和自动申请能力:
.venv/bin/python -m job_mcp.setup会打开一个 Chromium 浏览器窗口。
使用您的账号密码登录。
返回终端并按
[Enter]保存会话到文件夹./browser_profile。
运行服务器
方案 A:使用 Docker(推荐)
# Build and run in background
docker compose up -d
# View live multi-source aggregation logs
docker compose logs -f hireme-mcp方案 B:本地直接运行
# Streamable HTTP (Default for Web & Cloud Clients)
.venv/bin/python -m job_mcp --transport http --host 0.0.0.0 --port 8000
# Stdio (Default for Desktop Clients)
.venv/bin/python -m job_mcp --transport stdio可视化 CLI 流水线运行器
要在终端中运行一次全自动“探索 — 评分 — 申请”逐遍运行,并显示丰富可视化输出:
# Run with auto-extracted skills from your CV:
.venv/bin/python scripts/run_mock_llm_pipeline.py --cv ./cv.pdf
# Run with explicit stack override and remote filter:
.venv/bin/python scripts/run_mock_llm_pipeline.py --cv ./cv.pdf --stack "Python,FastAPI,LangGraph" --work-mode remote --location "Tel Aviv"
# Execute live application submissions (disabled by default in dry-run):
.venv/bin/python scripts/run_mock_llm_pipeline.py --cv ./cv.pdf --auto-applyMCP 客户端配置
1. Claude Desktop (claude_desktop_config.json)
在 Linux 上: ~/.config/Claude/claude_desktop_config.json
在 macOS 上: ~/Library/Application Support/Claude/claude_desktop_config.json
在 Windows 上: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"job-search-mcp": {
"command": "/absolute/path/to/hireme_mcp/.venv/bin/python",
"args": ["-m", "job_mcp", "--transport", "stdio"],
"env": {
"BROWSER_HEADLESS": "true",
"DEFAULT_CV_PATH": "/absolute/path/to/hireme_mcp/cv.pdf",
"CANDIDATE_EMAIL": "candidate@example.com",
"LOG_LEVEL": "INFO"
}
}
}
}2. Gemini Spark / Web MCP 客户端
端点 URL:
https://<your-host-or-devtunnel-id>/mcp传输方式:Streamable HTTP
认证方式:无 / 无需认证
环境变量
变量 | 默认值 | 说明 |
|
| 用于动态提取候选人技能的默认简历路径。 |
|
| 自动化申请弹窗中使用的候选人邮箱。 |
|
| 申请表填写所需的候选人全名。 |
|
| 传输协议( |
|
| HTTP / SSE 传输的主机绑定地址。 |
|
| HTTP / SSE 传输的监听端口。 |
|
| 是否以“浏览器无头”模式运行( |
|
| 用于持久化 Chromium 会话存储的目录。 |
|
| 已去重职位缓存的有效期(分钟)。 |
|
| 结构化日志级别( |
运行测试
运行完整自动化测试集(共 542 个测试):
.venv/bin/pytest tests/ -v开源许可证
本项目采用 MIT License 许可。
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 Connectors
Job platform for AI agents. Track tech jobs from companies that match your stack.
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Unified jobs search over official feeds + ATS boards (USAJOBS, Adzuna, Muse, Greenhouse, Lever...)
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/zvieli/TechJobMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server