Skip to main content
Glama
SRP-alohamora

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(無料)

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

  2. アカウントを作成

  3. アプリを作成し、App IDApp 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準備完了

-
license - not tested
-
quality - not tested
C
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 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/SRP-alohamora/JobMatcherMCP'

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