Skip to main content
Glama
SRP-alohamora

Job Matcher MCP

Job Matcher MCP

🎯 AIを活用した求人検索と履歴書カスタマイズMCP(Model Context Protocol)サーバー

求人APIとClaude LLMを活用して、求人検索を自動化し、各ポジションに合わせた履歴書を1分以内にカスタマイズします。


📋 目次


Related MCP server: job-search

🚀 クイックスタート

目標: モックデータを使用して5分でサーバーを起動する(APIキーは不要)。

1. リポジトリをクローン

\ash cd job-matcher-mcp \

2. 依存関係をインストール

\ash pip install -r requirements.txt \

3. モックデータで実行

\ash export USE_MOCK_DATA=true python mcp_server.py \

期待される出力:
=== Testing search_jobs === { "success": true, "job_listings": [ { "id": "mock_1", "title": "Senior Product Manager", "company": "TechCorp Inc", "location": "San Francisco, CA", ... } ], ... }

=== Testing customize_resume === { "success": true, "customized_resume": "# John Doe...", ... } `

✅ 成功! MCPサーバーが動作しています。次に実際のAPIキーを追加しましょう。


✨ 機能

機能

ステータス

説明

求人検索

✅ MVP

Adzuna API経由で数千件の求人情報を検索

履歴書カスタマイズ

✅ MVP

Claudeを使用したAI搭載の履歴書調整

スキルマッチング

✅ MVP

一致/不足スキルの特定

ATS最適化

✅ MVP

ATS対応の自動キーワード挿入

モックデータモード

✅ MVP

APIキーなしでテスト可能

マルチAPI対応

🔜 v1.2

Indeed、LinkedIn、AngelListを追加

カバーレター生成

🔜 v1.2

カバーレターの自動生成

応募管理

🔜 v2.0

応募・面接の追跡


🔧 インストール

前提条件

  • Python 3.10以上

  • pip(Pythonパッケージマネージャー)

  • Git

ステップ1: リポジトリをクローン

\ash git clone https://github.com/yourusername/job-matcher-mcp.git cd job-matcher-mcp \

ステップ2: 仮想環境を作成(推奨)

\ash

macOS/Linux

python3 -m venv venv source venv/bin/activate

Windows

python -m venv venv .\venv\Scripts\Activate.ps1 \

ステップ3: 依存関係をインストール

\ash pip install -r requirements.txt \


⚙️ 設定

1. APIキーを取得

Adzuna API(無料)

  1. https://developer.adzuna.com/ にアクセス

  2. アカウントを作成

  3. アプリを作成し、App IDとApp Keyを取得

  4. 無料枠: 約100リクエスト/日

Anthropic Claude API(有料、月額.50〜5ドル)

  1. https://console.anthropic.com/ にアクセス

  2. アカウントを作成

  3. APIキーを生成

  4. 料金: 入力トークン1Kあたり約.003ドル、出力トークン1Kあたり.015ドル

2. .envファイルを作成

\ash cp .env.example .env \

3. .envにAPIキーを追加


ADZUNA_APP_ID=your_actual_app_id ADZUNA_APP_KEY=your_actual_app_key ANTHROPIC_API_KEY=sk-ant-your_actual_api_key USE_MOCK_DATA=false LOG_LEVEL=INFO \

4. 環境変数を読み込む

\ash

macOS/Linux

export $(grep -v '^#' .env | xargs)

Windows PowerShell

Get-Content .env | ForEach-Object { $name, $value = $_.Split('=') if ($name) { Set-Item -Path env:$name -Value $value } } \


💻 使い方

サーバーを実行

\ash python mcp_server.py \

curlでテスト(例)

\ash

求人を検索

curl -X POST http://localhost:8000/tools/search_jobs
-H "Content-Type: application/json"
-d '{ "role": "Product Manager", "location": "San Francisco, CA", "experience_years": 5, "max_results": 10 }'

履歴書をカスタマイズ

curl -X POST http://localhost:8000/tools/customize_resume
-H "Content-Type: application/json"
-d '{ "base_resume": "...", "job_description": "...", "template": "modern" }' \

Pythonの例


python from mcp_server import JobMatcherMCPServer

server = JobMatcherMCPServer()

求人を検索

jobs = server.search_jobs( role="Product Manager", location="San Francisco, CA", experience_years=5, max_results=10 ) print(jobs)

履歴書をカスタマイズ

resume = server.customize_resume( base_resume="Your resume text here...", job_description="Job description here...", template="modern" ) print(resume) \


🛠️ MCPツールリファレンス

条件に基づいて求人情報を検索します。

入力スキーマ


{ "role": "Product Manager", // 必須: 職種 "location": "San Francisco, CA", // 必須: 地理的な場所 "experience_years": 5, // 必須: 経験年数 "max_results": 10, // オプション: 結果の上限(デフォルト: 10) "use_mock_data": false // オプション: モックデータを使用(デフォルト: false) } \

出力スキーマ


{ "success": true, "job_listings": [ { "id": "12345", "title": "Senior Product Manager", "company": "TechCorp", "location": "San Francisco, CA", "link": "https://...", "salary_min": 120000, "salary_max": 160000, "posted_date": "2026-08-17T10:00:00Z", "description_snippet": "We are looking for..." } ], "total_found": 123, "search_time_ms": 1234, "error": null } \

例


python jobs = server.search_jobs( role="Product Manager", location="Remote", experience_years=3, max_results=5 ) \


ツール2: customize_resume

AIを使用して特定の求人に合わせて履歴書をカスタマイズします。

入力スキーマ


{ "base_resume": "# Jane Doe...", // 必須: あなたの履歴書テキスト "job_description": "We are looking for...", // 必須: 求人情報 "template": "modern", // オプション: modern|classic|minimal "use_mock_data": false // オプション: モックデータを使用 } \

出力スキーマ


{ "success": true, "customized_resume": "# Jane Doe...", "match_analysis": { "skills_match_percentage": 82, "matched_skills": ["Product Management", "Leadership"], "missing_skills": ["Machine Learning", "Cloud"], "suggestions": ["Add ML experience if applicable"], "keywords_added": ["Data-driven", "Cross-functional"] }, "generation_time_ms": 2345, "error": null } \

例


python customized = server.customize_resume( base_resume=open("resume.txt").read(), job_description=open("job_posting.txt").read(), template="modern" ) \


🏗️ アーキテクチャ

┌─────────────────────────────────────────────────────┐ │ ユーザー/AIエージェント(チャット、スクリプト、APIクライアント)│ └────────────────┬────────────────────────────────────┘ │ MCPプロトコル ┌────────────────▼────────────────────────────────────┐ │ Job Matcher MCP サーバー │ │ ┌──────────────────────────────────────────────┐ │ │ │ ツール: search_jobs() │ │ │ │ - Adzuna APIにクエリ │ │ │ │ - 結果を解析・構造化 │ │ │ └──────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────┐ │ │ │ ツール: customize_resume() │ │ │ │ - Claude APIに送信 │ │ │ │ - カスタマイズされた履歴書を解析・返却 │ │ │ └──────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────┐ │ │ │ 外部API │ │ │ │ - Adzuna求人検索API │ │ │ │ - Anthropic Claude API │ │ │ └──────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────┘


🔍 トラブルシューティング

問題: ModuleNotFoundError: No module named 'anthropic'

解決策: 依存関係をインストール \ash pip install -r requirements.txt \

問題: API request failed: Unauthorized

解決策: .envのAPIキーを確認 \ash

キーが設定されているか確認

echo $ADZUNA_APP_ID echo $ANTHROPIC_API_KEY \

問題: 求人が見つからない

解決策: 別の職種/場所を試すか、max_resultsを増やす
python

より広い検索を試す

jobs = server.search_jobs( role="Manager", # より一般的な用語 location="New York, NY", experience_years=5, max_results=50 ) \

問題: Claude APIの応答が遅すぎる

解決策: テストにはモックデータを使用
python resume = server.customize_resume( base_resume="...", job_description="...", use_mock_data=True # API呼び出しをスキップ ) \

問題: レート制限を超過

解決策: Adzunaの無料枠には制限があります。キャッシュを実装:
python

求人検索結果を保存

cached_jobs = {} key = f"{role}{location}{experience_years}" if key not in cached_jobs: cached_jobs[key] = server.search_jobs(...) \


🚢 デプロイ

Vercelにデプロイ

\ash

1. https://vercel.com でVercelアカウントを作成

2. Vercel CLIをインストール

npm install -g vercel

3. デプロイ

vercel

4. Vercelダッシュボードで環境変数を追加

設定 → 環境変数

\

Railwayにデプロイ

\ash

1. https://railway.app でRailwayアカウントを作成

2. Gitリポジトリを接続

3. Railwayダッシュボードで環境変数を追加

\


📊 パフォーマンス指標(目標)

操作

目標時間

実際

求人検索

<5秒

~2-3秒

履歴書カスタマイズ

<10秒

~3-5秒

モック求人検索

<100ms

~50ms

モック履歴書カスタマイズ

<500ms

~200ms


📚 APIリファレンス


📝 ライセンス

MITライセンス - 詳細はLICENSEファイルを参照


👨‍💼 作者

転職中のテクノロジープロダクトマネージャー向けに構築。

バージョン: 1.0.0
最終更新日: 2026-08-17
ステータス: MVP準備完了

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A job-search MCP server that ranks roles, drafts cover letters, and rehearses Q&A answers using a candidate profile, with live listings from five public sources.
    52 npm
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    An MCP server that enables AI-assisted job search workflows including job discovery, application tracking, resume evaluation, and cover letter generation, with support for multiple job sources and scheduled scraping.
    83
    12 npm
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that exposes job-search and application-management capabilities to compatible AI clients, enabling discovery of vacancies, drafting of tailored application materials, and coordinated human-approved submissions.
    MIT