Job Matcher MCP
Job Matcher MCP
🎯 AIを活用した求人検索と履歴書カスタマイズMCP(Model Context Protocol)サーバー
求人APIとClaude LLMを活用して、求人検索を自動化し、各ポジションに合わせた履歴書を1分以内にカスタマイズします。
📋 目次
🚀 クイックスタート
目標: モックデータを使用して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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI job search — find jobs, track applications, get alerts. Claude, ChatGPT, Cursor.
GetJobzi MCP server for job search, application tracking, and career forecasting.
Job search and interview prep MCP. 11 tools, OAuth 2.1, cross-LLM. four-leaf.ai.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/SRP-alohamora/JobMatcherMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server