Skip to main content
Glama

JD-PULL · JD クロール · 分析 · MCP ツール

Python 3.10+ License: MIT MCP Tests

オープンソースの求人 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 channel=msedge、chromium のダウンロード不要)

分析

jieba 分かち書き + ルール辞書分類;LLM 精細分類は anthropic SDK / httpx のマルチベンダー適応

データ

ローカル JSON ファイル保存;フィンガープリント重複排除(dedup);ディレクトリ構造 raw → classified → reports → site

出力

静的 HTML レポートサイト(インライン CSS、フロントエンドフレームワーク非依存)

MCP

mcp>=1.26(FastMCP)· stdio + streamable-http 二重トランスポート · Pydantic v2 データ検証

設定

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 你的token

Claude 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 stdio

MCP ツール一覧

タイプ

ツール

説明

読み取り専用

get_stats

データ集計統計(総数 / カテゴリ別件数)

読み取り専用

list_categories

職種カテゴリとそのサンプル数を一覧表示

読み取り専用

search_jobs

キーワード / カテゴリ / 都市 / 会社で JD を検索(タイトル、給与、スキル等を返す)

読み取り専用

get_job

job_id で単一 JD の完全レコードを取得

読み取り専用

get_portrait

指定カテゴリの群像レポート(JSON)

読み取り専用

get_portrait_markdown

指定カテゴリの群像レポート(Markdown)

書き込み

crawl_jobs

ローカルで JD をクロール(Playwright / ブラウザが必要);構造化結果 {added, elapsed_s, per_site, warnings} を返し、_meta.progressToken を渡すとタスク単位の進捗通知を受信可能

書き込み

run_analysis

ルール分析(オプションで LLM 精細分類)

書き込み

run_portrait

各カテゴリの群像レポートを生成

書き込み

build_site

静的 HTML レポートサイトを生成

書き込み

sync_data

データディレクトリをその git リポジトリにコミット / プッシュ

読み取り専用リソースも登録済み:jd://statsjd://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):

環境変数

役割

JD_DATA_DIR

データルートディレクトリ;通常のフォルダでも独立した git リポジトリでも可

JD_DATA_REPO

sync/push のターゲットリポジトリ URL を上書き(未指定の場合はデータリポジトリの origin を使用)

JD_GIT_TOKEN

HTTPS 埋め込みトークン、今回の push のみ使用(git 設定には書き込まれない)

sync_data / jdcollector sync の判定ロジック:

  • データディレクトリがgit リポジトリでない → ローカル保存のみ、git はスキップ;

  • データディレクトリが他のリポジトリ内に埋め込まれている(例:ツールリポジトリ自身の ./data)→ git をスキップし、データが公開リポジトリにコミットされるのを防止;

  • データディレクトリが独立した git リポジトリaddcommitpull --rebasepush

例:データをプライベート 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_xxx

LLM マルチベンダー精細分類

config/settings.yamlllm: セクション:

llm:
  enabled: true        # 关闭即纯规则分析
  provider: deepseek   # 选供应商

ベンダー

provider

環境変数

デフォルトモデル

能力レベル

Anthropic Claude

claude

ANTHROPIC_API_KEY

claude-sonnet-5

L3 schema 厳格

OpenAI

openai

OPENAI_API_KEY

gpt-4o

L3 schema 厳格

Google Gemini

gemini

GEMINI_API_KEY

gemini-2.5-flash

L3 schema 厳格

DeepSeek

deepseek

DEEPSEEK_API_KEY

deepseek-chat

L2 JSON モード

通義千問

qwen

DASHSCOPE_API_KEY

qwen-plus

L2 JSON モード

Ollama(ローカル)

ollama

なし

qwen2.5:7b

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)

⚠️ 本プロジェクトを使用する前に必ず以下の条項をお読みください。

  1. 用途制限:本プロジェクトは個人の学習、データ分析、技術交流のみを目的としており、商業用途を構成せず、求職 / 採用判断の根拠にもなりません。

  2. データは利用者自身が用意し、責任を負う:クロール行為はあなた自身のマシン上で発生し、すべてのデータコンプライアンス責任は利用者が負います。対象サイトの利用規約と robots.txt、および所在地の法令(例:《個人情報保護法》《データ安全法》《反不正競争法》)を遵守してください。

  3. クロールの境界:公開ページのみをクロールします;ログインが必要な非公開の個人情報はクロールしません;CAPTCHA を解読せず、WAF / ブロックを回避せず、プロキシプールや大規模収集を使用せず、いかなる方法でも対象サイトの通常サービスを妨害しません。ブロックされたら即停止し、決して対抗手段をエスカレートさせません。

  4. データの正確性:JD の内容はサイトの公開情報であり、期限切れや不正確な場合があります。作者はその真実性、完全性、有用性を保証しません;内蔵の seed サンプルデータは全チェーンの検証のみを目的としており、実際の求人情報を表すものではありません。

  5. AI 出力は参考のみ:LLM 精細分類 / 群像の結論はサードパーティモデルによって生成され、偏りが存在する可能性があります。人手による再確認の上で使用してください。

  6. 自己責任:本プロジェクトは MIT License でオープンソース提供されており、作者は本プロジェクトの使用によって生じたいかなる直接的・間接的損害、データ漏洩、法的リスクについても責任を負いません。

License

MIT © 2026 NaoYun777

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    4
    73
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to scrape job offers and filter them based on user-defined criteria, using MCP resources, prompts, and tools.
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP 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.
    564
    3
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/NaoYUN77/JD-PULL'

If you have feedback or need assistance with the MCP directory API, please join our Discord server