LeetCode Crawler について
LeetCode Crawlerは、企業タグ付きの面接ディスカッションを収集し、投稿を分類・重複排除します。Claude AIによる面接情報の構造化抽出にも対応し、CLI、CSV出力、MCPツールを提供します。
主な機能
- 01企業タグでディスカッションを収集
- 02投稿の分類と重複排除
- 03期間とカテゴリで絞り込み
- 04Claude AIで面接情報を抽出
- 05結果をCSVに保存
- 064種類のMCPツールを提供
活用シーン
- 01対象企業の面接報告を確認
- 02頻出するLeetCode問題を特定
- 03スレッドの取得やキャッシュの更新
MCP 対応
MCPサーバーはstdioで4種類のツールを公開し、キャッシュ検索、頻出問題の集計、スレッド取得、キャッシュ更新を行います。Claude DesktopとClaude Codeでの利用を想定しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LeetCode ディスカッション クローラー + MCP サーバー
LeetCode の面接ディスカッションフォーラムをクロールし、Claude AI で構造化された情報を抽出して、Claude Desktop と Claude Code 向けの MCP(Model Context Protocol)サーバーとしてデータを公開します。
機能
- 企業タグ(google、meta、amazon など)で絞り込んだ LeetCode ディスカッションフォーラムをクロールします
- 投稿を種類別に分類します(
leetcode、discuss_link、discussion) - 複数ページにわたるディスカッションを投稿タイトルと企業ごとにグループ化し、重複を排除します
- 必要に応じて、AI で抽出した項目を投稿に追加します:
problem_name、leetcode_url、interview_stage、difficulty、reported_outcome - CSV に保存します(企業ごとのキャッシュ、または月次の出力)
- Claude Desktop/Claude Code で利用できるよう、stdio MCP トランスポート経由で 4 つのツールを公開します
インストール
git clone https://github.com/louisfghbvc/mcp-leetcode-crawler.git
cd mcp-leetcode-crawler
pip install -r requirements.txt
使い方
CLI
# Crawl 10 pages of Google interview discussions
python cli.py --company google --pages 10
# Filter to posts from the last 30 days
python cli.py --company google --pages 10 --since 30d
# Crawl and enrich with AI extraction (requires ANTHROPIC_API_KEY)
python cli.py --company google --pages 10 --enrich
# Other companies
python cli.py --company meta --pages 5 --since 7d
利用可能な CLI オプション:
--company:企業タグ(デフォルト:google)--pages:クロールするページ数。1 ページあたり 15 件の投稿(デフォルト:10)--output:出力 CSV のパス(デフォルト:leetcode_interview_questions.csv)--output-dir:月次 CSV の出力先ディレクトリ(デフォルト:output)--since:対象期間のフィルター —Nd(日)またはNw(週)、例:--since 14d--enrich:各投稿から AI で構造化された項目を抽出します(ANTHROPIC_API_KEYが必要です)--verbose:デバッグログを出力します--category:ディスカッションのカテゴリ(デフォルト:interview-question)
MCP サーバー
Claude Desktop または Claude Code に登録します:
# Run directly
python mcp_server.py
# Or register with Claude Desktop
mcp install mcp_server.py
サーバーは 4 つのツールを公開します:
| ツール | 説明 |
|---|---|
search_discussions(company, days) | キャッシュされた投稿を企業と期間で絞り込みます |
get_hot_problems(company, limit) | ディスカッションの頻度順に並べた LeetCode 問題の上位一覧を取得します |
get_thread(post_id) | 単一スレッドをリアルタイムで取得します(キャッシュなし) |
refresh(company, num_pages, days, enrich) | クロールしてディスク上のキャッシュを再構築します |
キャッシュは ./cache/{company}_questions.csv に保存されます。search_discussions または get_hot_problems を使う前に、refresh を一度実行してデータを格納してください。
AI による情報の追加
--enrich(CLI)または enrich=True(MCP の refresh)を使用すると、各投稿に 5 つの項目が追加されます:
| 項目 | 値 |
|---|---|
problem_name | LeetCode の問題名、または null |
leetcode_url | 問題の完全な URL、または null |
interview_stage | phone screen / online assessment / onsite / final round / null |
difficulty | easy / medium / hard / null |
reported_outcome | passed / failed / no mention / null(null は抽出に失敗したことを示し、再試行されます) |
費用:claude-haiku-4-5-20251001 を使用した場合、投稿 1 件あたり約 $0.001 です。すでに情報が追加されている投稿は、再実行時にスキップされます。
プロジェクト構成
mcp-leetcode-crawler/
├── crawler.py # Core crawler: fetch, deduplicate, filter, classify posts
├── extractor.py # AI extraction layer: Claude Haiku → structured fields
├── mcp_server.py # MCP server: 4 tools over stdio transport
├── cli.py # Command-line interface
├── requirements.txt # Python dependencies
├── test_crawler.py # Crawler unit tests
├── test_mcp_server.py # MCP server unit tests (22 tests)
├── test_extractor.py # Extractor unit tests (12 tests)
├── test_cli.py # CLI integration tests (2 tests)
└── cache/ # Per-company CSV cache (git-ignored)
要件
- Python 3.12+
ANTHROPIC_API_KEY環境変数(--enrichを使う場合のみ)
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。