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直聘 / 拉勾 / 猎聘はインターフェースのみ予約(ログイン/署名が必要、今回は未実装);
ルール分析:分類辞書に基づいて 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直聘 / 拉勾 / 猎聘(予約のみ未実装) |
インストール
要件 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 リポジトリにコミット / プッシュ |
読み取り専用リソースも登録済み: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 あなたのtoken を含めます。
本番環境ではリバースプロキシ(Nginx / Caddy)の背後に配置し TLS を有効化することを推奨します;パブリックな平文ポートを直接公開しないでください。
データディレクトリと git 同期
データルートディレクトリは環境変数 JD_DATA_DIR で指定し、デフォルトは <リポジトリルート>/data(gitignored):
環境変数 | 役割 |
| データルートディレクトリ;通常のフォルダでも独立した git リポジトリでも可 |
| sync/push のターゲットリポジトリ URL を上書き(未指定の場合はデータリポジトリの |
| HTTPS 埋め込みトークン、今回の 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、および所在地の法令(例:《個人情報保護法》《データ安全法》《反不正競争法》)を遵守してください。
クロールの境界:公開ページのみをクロールします;ログインが必要な非公開の個人情報はクロールしません;CAPTCHA を解読せず、WAF / ブロックを回避せず、プロキシプールや大規模収集を使用せず、いかなる方法でも対象サイトの通常サービスを妨害しません。ブロックされたら即停止し、決して対抗手段をエスカレートさせません。
データの正確性:JD の内容はサイトの公開情報であり、期限切れや不正確な場合があります。作者はその真実性、完全性、有用性を保証しません;内蔵の
seedサンプルデータは全チェーンの検証のみを目的としており、実際の求人情報を表すものではありません。AI 出力は参考のみ:LLM 精細分類 / 群像の結論はサードパーティモデルによって生成され、偏りが存在する可能性があります。人手による再確認の上で使用してください。
自己責任:本プロジェクトは 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)
Jobs, ads, SEO, keywords, YouTube and AliExpress data for AI agents. Runs on Apify.
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.476 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.849 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