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(無料)
アカウントを作成
アプリを作成し、App IDとApp Keyを取得
無料枠: 約100リクエスト/日
Anthropic Claude API(有料、月額.50〜5ドル)
アカウントを作成
APIキーを生成
料金: 入力トークン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ツールリファレンス
ツール1: search_jobs
条件に基づいて求人情報を検索します。
入力スキーマ
{
"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リファレンス
Adzuna API: https://developer.adzuna.com/docs
Claude API: https://docs.anthropic.com/
MCPプロトコル: https://modelcontextprotocol.io/
📝 ライセンス
MITライセンス - 詳細はLICENSEファイルを参照
👨💼 作者
転職中のテクノロジープロダクトマネージャー向けに構築。
バージョン: 1.0.0
最終更新日: 2026-08-17
ステータス: MVP準備完了
This server cannot be deployed
Maintenance
Related MCP Connectors
GetJobzi MCP server for job search, application tracking, and career forecasting.
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Public MCP server for discovering open jobs. Search, filter, and get application links.
Job application tracker for developers - AI agents write over MCP, you review in a dashboard.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for maintaining a professional profile database and generating tailored, ATS-optimized resumes for specific job postings.1-
- AlicenseNot gradedqualityDmaintenanceA 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 npmMIT
- AlicenseCqualityCmaintenanceAn 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.8312 npm1AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceAn 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