jd-mcp
JD-PULL · JD 수집 · 분석 · MCP 도구
채용 JD 수집 + 규칙 분석 + 직무 군상(群像) + MCP 서버를 위한 오픈소스 도구입니다. 누구나 로컬에 clone하여 자신의 데이터를 수집·분석하고, MCP(Model Context Protocol)를 통해 Claude / DeepSeek agent / Pi agent / Cursor 등 MCP를 지원하는 모든 외부 AI에 데이터를 노출할 수 있습니다.
┌──────────────────────────┐ ┌──────────────────────────┐
│ 外部 AI(任何 MCP 客户端) │ ───► │ 本机 jd-mcp 服务器 │
│ Claude / DeepSeek / Pi │ MCP │ ┌────────────────────┐ │
│ / Cursor … │ │ │ 只读查询 · 写操作 │ │
└──────────────────────────┘ │ └────────┬───────────┘ │
└──────────┼───────────────┘
│ 读写
┌──────────▼───────────────┐
│ 你的数据目录(JD_DATA_DIR)│
│ 本地文件夹 或 私有 git 仓库 │
└──────────────────────────┘수집 결과는 오직 사용자 로컬의 data/ 디렉터리 또는 직접 지정한 데이터 저장소에만 존재합니다.
특징
JD 수집: 51job(Playwright 실제 브라우저 구동, 기본 시스템 Edge) 저빈도 예의 있는 수집; Boss직초(直聘) / 라거우(拉勾) / Liepin(猎聘)은 예약 인터페이스(로그인/서명 필요, 이번 버전 미구현);
규칙 분석: 분류 사전을 기반으로 JD를 직무 카테고리로 분류하고, 스킬·책임 고빈도 키워드 추출;
LLM 정밀 분석(선택, 멀티 벤더): Claude / OpenAI / Gemini / DeepSeek / Qwen / Ollama 6개 벤더, '능력 사다리'로 각 벤더의 구조화 출력에 자동 대응;
직무 군상: 카테고리별 스킬 / 연봉 / 경력 / 학력 분포와 책임 고빈도 키워드 보고서 생성(JSON + Markdown);
MCP 서버: stdio 및 streamable-http 이중 전송, 읽기 전용 쿼리 도구는 항상 사용 가능, 쓰기 도구는 기본 활성화(
--no-write-tools로 비활성화), HTTP는 선택적으로 Bearer token 인증 지원;데이터 완전 로컬:
JD_DATA_DIR로 임의 디렉터리 또는 git 저장소 지정 가능; 데이터 디렉터리가 독립 git 저장소가 아닌 경우sync가 자동으로 건너뛰어 데이터가 실수로 커밋되는 것을 방지.
Related MCP server: MCP Job Search Server
기술 스택
카테고리 | 기술 |
언어 | Python ≥ 3.10 |
수집 | httpx + BeautifulSoup4(정적 파싱); Playwright 실제 브라우저 구동(51job SPA, 기본 시스템 Edge |
분석 | jieba 형태소 분석 + 규칙 사전 분류; LLM 정밀 분석은 anthropic SDK / httpx 멀티 벤더 어댑터 사용 |
데이터 | 로컬 JSON 파일 저장; 지문 기반 중복 제거( |
출력 | 정적 HTML 보고서 사이트(인라인 CSS, 프론트엔드 프레임워크 의존성 없음) |
MCP |
|
설정 | YAML(PyYAML), 사이트/사전/LLM 모두 코드 수정 없이 설정 가능 |
테스트 | pytest(51개 케이스) |
사이트 | 51job(현재 활성화); Boss직초 / 라거우 / Liepin(예약, 미구현) |
설치
요구 사항: Python ≥ 3.10.
git clone https://github.com/NaoYUN77/JD-PULL.git
cd JD-PULL
python -m venv .venv && .venv\Scripts\activate # Windows;macOS/Linux 用 source .venv/bin/activate
pip install -e .[dev]
# 51job 爬取走真实浏览器(默认系统 Edge,无需额外下载 chromium)
# 若想用捆绑 chromium:删除 config/settings.yaml 中 crawl.browser.channel 一行后
# playwright install chromium빠른 시작(먼저 데이터 확보)
채용 사이트는 대부분 안티크롤링 리스크 관리가 있습니다. 저빈도, 실제 브라우저, 실제 필요에 따라 수집하세요; 차단되면 즉시 중단하고 우회를 시도하지 마세요.
# 1) 生成样本 JD(验证全链路;51job 被 WAF 拦截时用)
jdcollector seed
# 2) 真实爬取(按 config/sites.yaml 的关键词/城市;51job 需本机有 Edge 且有头窗口)
jdcollector crawl
# 3) 规则分析(可选加 LLM 精分,见下文「LLM 多供应商精分」)
jdcollector analyze
# 4) 岗位群像报告
jdcollector portrait
# 5) 静态 HTML 报告站(输出到数据目录 site/)
jdcollector view데이터는 기본적으로 저장소 루트 data/에 저장됩니다(.gitignore에 포함되어 커밋되지 않음).
MCP 서버로 사용
시작 후 외부 AI가 MCP를 통해 사용자의 데이터를 호출할 수 있습니다.
# stdio(默认,给本地桌面客户端用)
jd-mcp
# 只读模式(只暴露查询,不暴露爬取/分析等写工具)
jd-mcp --no-write-tools
# HTTP(streamable-http,给远程客户端 / 其它进程用,可带 Bearer token)
jd-mcp --transport http --host 0.0.0.0 --port 8000 --token 你的tokenClaude Desktop
claude_desktop_config.json 편집:
{
"mcpServers": {
"jdcollector": {
"command": "jd-mcp",
"args": ["--transport", "stdio"]
}
}
}Claude Code
claude mcp add jdcollector -- jd-mcp --transport stdio
claude mcp list # 验证已连接Cursor
Settings → MCP → + Add global MCP server, command 입력:
jd-mcp --transport stdioMCP 도구 목록
유형 | 도구 | 설명 |
읽기 전용 |
| 데이터 요약 통계(총계 / 카테고리별 개수) |
읽기 전용 |
| 직무 카테고리 및 샘플 수 나열 |
읽기 전용 |
| 키워드 / 카테고리 / 도시 / 회사로 JD 검색(제목, 연봉, 스킬 등 반환) |
읽기 전용 |
| job_id로 단일 JD 전체 레코드 조회 |
읽기 전용 |
| 특정 카테고리 군상 보고서(JSON) |
읽기 전용 |
| 특정 카테고리 군상 보고서(Markdown) |
쓰기 |
| 로컬 JD 수집(Playwright / 브라우저 필요); 구조화 결과 |
쓰기 |
| 규칙 분석(선택적 LLM 정밀 분석) |
쓰기 |
| 각 카테고리 군상 보고서 생성 |
쓰기 |
| 정적 HTML 보고서 사이트 생성 |
쓰기 |
| 데이터 디렉터리를 해당 git 저장소에 커밋 / 푸시 |
추가로 읽기 전용 resources 등록: jd://stats, jd://portrait/{category}.
HTTP 배포 및 인증
jd-mcp --transport http --host 0.0.0.0 --port 8000 --token 你的token
# 环境变量亦可:JD_MCP_TRANSPORT / JD_MCP_HOST / JD_MCP_PORT / JD_MCP_TOKEN클라이언트는 http://127.0.0.1:8000/mcp에 연결하고, 요청 헤더에 Authorization: Bearer 사용자토큰을 포함합니다.
프로덕션 환경에서는 리버스 프록시(Nginx / Caddy) 뒤에 배치하고 TLS를 활성화하는 것을 권장합니다; 공개 인터넷에 평문 포트를 직접 노출하지 마세요.
데이터 디렉터리와 git 동기화
데이터 루트 디렉터리는 환경 변수 JD_DATA_DIR로 지정하며, 기본값은 <저장소 루트>/data(gitignored)입니다:
환경 변수 | 역할 |
| 데이터 루트 디렉터리; 일반 폴더 또는 독립 git 저장소일 수 있음 |
| sync/push 대상 저장소 URL 덮어쓰기(미입력 시 데이터 저장소의 |
| HTTPS 내장 token, 이번 push에만 사용(git 설정에 기록되지 않음) |
sync_data / jdcollector sync 판단 로직:
데이터 디렉터리가 git 저장소가 아님 → 로컬 저장만 수행, git 건너뜀;
데이터 디렉터리가 다른 저장소에 포함됨(예: 도구 저장소 자체의
./data) → git 건너뜀, 데이터가 공개 저장소에 커밋되는 것 방지;데이터 디렉터리가 독립 git 저장소 →
add→commit→pull --rebase→push.
예시: 데이터를 비공개 GitHub 저장소에 저장
set JD_DATA_DIR=D:\jd-data
cd D:\jd-data && git init && git remote add origin git@github.com:you/jd-data.git
# 推送时可用
set JD_GIT_TOKEN=ghp_xxxLLM 멀티 벤더 정밀 분석
config/settings.yaml의 llm: 섹션:
llm:
enabled: true # 关闭即纯规则分析
provider: deepseek # 选供应商벤더 |
| 환경 변수 | 기본 모델 | 능력 등급 |
Anthropic Claude |
|
|
| L3 schema 엄격 |
OpenAI |
|
|
| L3 schema 엄격 |
Google Gemini |
|
|
| L3 schema 엄격 |
DeepSeek |
|
|
| L2 JSON 모드 |
통의천문(通义千问) |
|
|
| L2 JSON 모드 |
Ollama(로컬) |
| 없음 |
| L2 JSON 모드 |
능력 사다리: 통일된 LlmClient 추상화로 벤더 능력에 따라 구조화 출력 형태를 자동 선택 — L3는 각 벤더의 네이티브 schema 엄격 모드(Claude output_config / OpenAI response_format.json_schema / Gemini response_schema), L2는 JSON 모드(DeepSeek / Qwen의 response_format.json_object, Ollama의 format:"json"), L1은 순수 prompt 폴백; 현재 등급 실패 시 자동 다운그레이드. 출력은 통일적으로 Pydantic 검증을 거치며, 누락 / 비정상 시 오류 피드백과 함께 1회 재시도, 그래도 실패하면 규칙 결과로 폴백하여 프로세스를 중단하지 않습니다.
provider: claude인 경우 최상위 model / api_key_env가 여전히 하위 호환 방식으로 사전 설정을 덮어씁니다; 다른 벤더는 llm.providers.<name> 아래에서 설정하세요(각 필드 의미는 파일 내 주석 참조).
프로젝트 구조
config/ # YAML 配置:settings / sites / categories / skills
src/jdcollector/
crawler/ # 各站点爬虫
analysis/ # 规则分类 + llm_client 能力梯子 + llm 精分
portrait/ # 岗位群像报告
view/ # 静态 HTML 报告站
mcp_server.py # MCP 服务器(工具注册 + CLI 入口)
sync_github.py # 数据目录 git 同步(独立仓库保护)
tests/ # pytest 单元测试면책 조항(Disclaimer)
⚠️ 본 프로젝트를 사용하기 전에 반드시 다음 조항을 읽어 주세요.
용도 제한: 본 프로젝트는 개인 학습, 데이터 분석 및 기술 교류에만 사용되며, 상업적 용도나 구직 / 채용 결정의 근거가 되지 않습니다.
데이터는 사용자가 직접 준비하고 책임을 집니다: 수집 행위는 사용자 자신의 기기에서 발생하며, 모든 데이터 컴플라이언스 책임은 사용자에게 있습니다. 대상 웹사이트의 서비스 약관과 robots.txt, 그리고 현지 법률(예: 《개인정보보호법》《데이터안전법》《반부정당경쟁법》)을 준수하세요.
수집 경계: 공개 페이지만 수집합니다; 로그인이 필요한 비공개 개인정보는 수집하지 않습니다; 캡차를 해독하지 않고, WAF / 차단을 우회하지 않으며, 프록시 풀이나 대규모 수집을 사용하지 않고, 어떤 방식으로도 대상 웹사이트의 정상적인 서비스를 방해하지 않습니다. 차단되면 즉시 중단하고 절대 대응 수단을 격상하지 않습니다.
데이터 정확성: JD 내용은 사이트의 공개 정보로, 만료되었거나 부정확할 수 있으며, 저자는 그 진실성, 완전성, 유용성을 보장하지 않습니다; 내장
seed샘플 데이터는 전체 파이프라인 검증용일 뿐, 실제 채용 정보를 나타내지 않습니다.AI 출력은 참고용일 뿐: LLM 정밀 분석 / 군상 결론은 제3자 모델에 의해 생성되며 편향이 있을 수 있으므로, 인적 검토 후 사용하세요.
위험 부담: 본 프로젝트는 MIT License로 오픈소스 제공되며, 저자는 본 프로젝트 사용으로 인해 발생하는 직간접적 손실, 데이터 유출 또는 법적 위험에 대해 책임을 지지 않습니다.
License
MIT © 2026 NaoYun777
This server cannot be deployed
Maintenance
Related MCP Connectors
JobsPipe — data pipeline of every job posting on the web. Search live, normalized job postings from 30+ ATS feeds and job boards for AI agents via MCP.
MCP for 8,700+ current AI jobs. 13 tools: search, match, salaries, companies, commerce quotes.
CareerProof MCP gives AI agents direct access to a professional-grade career and workforce intelligence platform. Two namespaces: atlas_* for HR/TA teams (candidate evaluation, batch shortlisting, competency scoring, interview generation, JD analysis, custom eval frameworks, research reports) and ceevee_* for professionals (CV optimization, career positioning, salary intelligence, market reports). Backed by RAG knowledge from 50+ premium research sources (McKinsey, BCG, HBR, Gartner, WEF)
A jobs data API and MCP server. Every listing comes from the employer's own career site, an ATS feed or a government employment service, never resold from another board. Each row names its source and when we last confirmed the vacancy existed, and a role that disappears keeps a closure date and a reason. Six tools: search_jobs, get_job, company_hiring, market_signals, coverage, changes_since.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables searching over 1 million enriched job listings from 20,000+ companies directly from MCP-compatible AI tools. Provides tools for job search, company profiles, and AI-powered similar job recommendations with real-time data updates.4118 npm2MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to scrape job offers and filter them based on user-defined criteria, using MCP resources, prompts, and tools.-

trackly-cliofficial
AlicenseNot gradedqualityBmaintenanceMCP server for job search and application tracking, enabling AI agents to search jobs, get details, manage applications, and find contacts across 128K+ jobs and 1,900+ companies.774 npm3MIT- AlicenseNot gradedqualityBmaintenanceEnables AI clients to serve as a personal career analyst by searching, matching, and explaining job recommendations, managing job applications, and syncing public job boards through standardized MCP tools.MIT