Skillmatch Mcp について
SkillMatch MCPは、プロジェクトや履歴書でスキルを示す求職者向けのサーバーです。ローカルのプロフィールとGitHubポートフォリオを基にClaudeが求人との適合度を分析し、応募を管理できます。
主な機能
- 01求人情報との適合度分析
- 02GitHubポートフォリオの確認
- 03職種に合わせた検索語の作成
- 04応募状況のローカル管理
- 05複数の履歴書の管理
- 06順位付けした求人のメール送信
活用シーン
- 01プロジェクト経験と履歴書に基づく求人評価
- 02プロフィールに合う求人の検索
- 03応募状況とフォローアップ日の管理
- 04順位付けした求人レポートのメール受信
MCP 対応
stdio経由でClaude CodeとClaude DesktopにSkillMatchのツールを提供します。適合度分析、検索語の作成、履歴書とプロフィールの管理、応募の追跡に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SkillMatch MCP
資格ではなく実務でスキルを証明する人向けの、Claude を活用した求人適合度分析ツールです。
できること
SkillMatch は、GitHub のポートフォリオ、履歴書、求人検索の希望条件に Claude がアクセスできるようにする MCP サーバーです。Claude は次のことができます。
- 実際のプロジェクトと履歴書に基づいて、特定の求人内容との適合度を分析する
- 目標や制約に合わせて最適化された求人検索クエリを作成する
- 応募したすべての求人をローカルの SQLite データベースで管理する
- 公開されている GitHub リポジトリを取得し、適合度分析で関連する実績を示す
すべてのデータはお使いのマシン上に保持されます。ご自身のリポジトリを取得するための公開 GitHub API 呼び出しを除き、データが外部に送信されることはありません。
セットアップ
1. 依存関係をインストールする
cd skillmatch-mcp
pip install -r requirements.txt
stdio 経由で MCP プロトコルのリビジョン 2026-07-28 に対応し、SDK は mcp>=2.0,<3 です。ステートレスです。
initialize のハンドシェイクやセッション ID はなく、各リクエストにプロトコルのバージョンとクライアント ID が含まれます。tools/list と server/discover は鮮度のヒントとして
ttlMs/cacheScope を返します。また、ツールの順序は呼び出し間で安定しているため、クライアント側のキャッシュとプロンプトキャッシュを引き続き活用できます。
1.x からのアップグレード: 2.0.0 では
initializeのハンドシェイクがなくなったため、2026-07-28に対応するクライアントが必要です。ツール名、スキーマ、結果は変更されておらず、トランスポートのみが変更されています。 古いクライアントにサービスを提供する必要がある場合は、1.x をご利用ください。
2. Claude に追加する
Claude Code(CLI):
claude mcp add --scope user skillmatch -- python /path/to/skillmatch-mcp/server.py
その後、Claude Code を再起動してください。
Claude Desktop:
Claude Desktop の設定ファイルを開き、mcpServers セクションに SkillMatch を追加します。
{
"mcpServers": {
"skillmatch": {
"command": "python",
"args": ["/path/to/skillmatch-mcp/server.py"]
}
}
}
/path/to/skillmatch-mcp/server.py を、お使いのマシン上の実際の server.py のパスに置き換えてから、Claude Desktop を再起動してください。
3. 利用を開始する
再起動すると、会話で SkillMatch のツールを利用できるようになります。Claude Code と Claude Desktop で動作します。
初期設定
SkillMatch を初めて使うときは、Claude がセットアップの会話を進めます。次のような内容です。
You: Help me find a new job.
Claude: I don't have your profile set up yet. Let me ask you a few questions first.
What is your name?
You: Jordan
Claude: What is your current role?
You: Senior frontend developer
Claude: What roles are you targeting?
You: Staff frontend engineer, senior full-stack engineer
Claude: What is your minimum acceptable salary?
You: 180000
Claude: Are you only looking for remote positions?
You: Yes
Claude: Where are you located?
You: Portland, OR
Claude: Any dealbreakers?
You: No on-call rotations, no defense contractors
Claude: What is your GitHub URL?
You: https://github.com/jordan-dev
Claude: Where is your resume file?
You: C:/Users/jordan/Documents/resume.md
Claude: Got it. Your profile is saved. Let me search for jobs matching your targets.
初期設定が完了すると、プロフィールはローカルに保存され、以降の会話でも再利用されます。
拡張プロフィール(任意)
Claude に更新を依頼すれば、いつでもプロフィールを充実させることができます。これらの項目は、微妙な適合度を Claude が判断するのに役立ちます。
| 項目 | 型 | 例 |
|---|---|---|
work_style | object | {async_preferred: true, ic_vs_leadership: "ic", client_facing_tolerance: "none", team_size_preference: "small"} |
optimizing_for | array | ["comp", "autonomy", "interesting_problems"] |
unlisted_skills | array | ["MCP protocol implementation", "Windows installer packaging"] |
developing_skills | array | ["TypeScript", "RAG pipelines"] |
dealbreaker_detail | array | [{dealbreaker: "on-call", hardness: "absolute"}, {dealbreaker: "relocation", hardness: "strong_preference"}] |
rejection_patterns | array | ["roles that sounded like automation but were actually IT support"] |
これらは初期設定時に指定することも、後から update_profile ツールで追加することもできます。
仕組み
search_jobs は、プロフィールと指定したキーワードをもとに検索クエリを作成します。次に、Claude がそのクエリをウェブ検索機能で使用し、実際の求人情報を見つけます。このツール自体はウェブを検索しません。
analyze_fit は、2 段階のプロセスを実行します。まず、Claude API を使って求人情報を構造化されたシグナル(必須要件、あると望ましい条件、懸念事項、報酬に関するシグナル、職種)に解析します。次に、ポートフォリオを取得し、検出された職種に最適な履歴書のバリエーションを自動選択します。Claude は、マーケティング用の生テキストよりも先に構造化されたシグナルを確認します。
parse_jd は、単独で使える JD パーサーです。包括的な適合性分析を実行せずに求人情報を前処理する場合に、単独で使用してください。
log_application、get_applications、update_application は、求人検索用 CRM を構成します。ステータス(応募済み、書類選考、面接、内定、不採用、連絡なし)を追跡し、フォローアップ日を設定して、結果を記録できます。
get_follow_ups は、対応が必要な応募を表示します。フォローアップ日を過ぎても、まだ返答を待っている応募が対象です。
get_application_patterns は、応募履歴全体を分析し(10 件以上が必要です)、どの職種が返答につながるか、どのスキルが評価されるかを特定し、検索条件の調整を提案します。
email_ranked_jobs.py は、最新のランク付け済み求人レポートをメールで送信する、単独で実行できる Conductor ワーカースクリプトです。設定については、以下のメールワーカーのセットアップをご覧ください。
save_scouted_job は、求人の調査中に見つけた求人情報を保存します。URL を検証して検索結果ページを除外し、既存の調査済み求人や応募と重複していないか確認します。
get_scouted_jobs は、調査済みの求人情報をすべて返します。ランク付けされていない求人のみに絞り込むこともできます。mark_jobs_ranked は、ランク付けレポートの生成後に、ランク付けされていない求人をすべてランク付け済みとしてマークします。
add_resume と list_resumes は、複数の履歴書のバリエーションを管理します。各バリエーションは、特定の職種を対象とします(例:「AI Engineering」は ai_engineering と ml_engineering を対象とします)。適合性分析では、JD から検出された職種に基づいて最適なバリエーションが自動選択されます。
update_profile は、セットアップをやり直さずに、既存のプロフィールに新規または変更された項目を反映します。
get_portfolio と get_resume は、Claude にリポジトリのみ、または履歴書のみを確認させたい場合に、単独で呼び出すことができます。
クイックスタート(ファイルパス不要)
最も簡単にセットアップするには、履歴書を直接貼り付けてください。ローカルファイルは必要ありません。
You: Help me find a job.
Claude: What is your name?
You: Alex
Claude: What roles are you targeting?
You: AI engineer, ML engineer
Claude: Paste your resume or provide a file path.
You: [paste resume text here]
Claude: Profile saved. Let me search for jobs.
メールワーカーのセットアップ
email_ranked_jobs.py は、Gmail 経由でランク付けされた求人レポートを送信します。スケジュールに従って実行する Conductor ワーカーとして動作するよう設計されています。
認証情報は Git の追跡対象外の設定ファイルに保存します。ソースコードには絶対に含めないでください。 テンプレートをコピーして、内容を入力してください。
cp data/email_config.example.json data/email_config.json
次に、data/email_config.json を編集します。
{
"gmail_user": "[email protected]",
"gmail_app_password": "your-16-char-app-password",
"email_to": "[email protected]",
"email_cap": 15
}
| キー | 必須 | デフォルト |
|---|---|---|
gmail_user | はい | — |
gmail_app_password | はい | — |
email_to | いいえ | gmail_user にフォールバック |
email_cap | いいえ | 15 |
data/ フォルダー全体は Git の追跡対象外です(追跡されるのは .gitkeep と email_config.example.json のみ)。そのため、email_config.json が誤ってコミットされることはありません。
環境変数ではなく設定ファイルを使う理由は何ですか? ワーカープロセスの起動方法によっては、特に Windows 上で Conductor 経由で起動する場合、環境変数が子プロセスに引き継がれず、送信に失敗しても何も通知されないことがあります。設定ファイルはスクリプトからの相対パスで読み込まれるため、プロセスの起動方法にかかわらず動作します。環境変数(GMAIL_USER、GMAIL_APP_PASSWORD、EMAIL_TO、EMAIL_CAP)も、設定ファイルにキーがない場合のフォールバックとして引き続き利用できます。これは CI やコンテナー化された実行で便利です。どちらからも認証情報を取得できない場合、スクリプトはコード 2 で終了し、何も通知せずに失敗するのではなく、セットアップ手順を表示します。
Gmail アプリパスワードを作成するには、Google アカウント → セキュリティ → 2 段階認証プロセス → アプリパスワードに進みます。「メール」用に作成してください。これは通常のアカウントパスワードではありません。誤ってソースファイルに貼り付けてしまった場合は、同じ画面から無効にしてください。
スクリプトは data/ranked_jobs.md を読み込み、メールに掲載する求人を上位 15 件までに制限して送信した後、次回実行時に古いランキングが再利用されないよう ranked_jobs.md を削除します。
ファイル構成
skillmatch-mcp/
server.py # MCP server (stdio JSON-RPC)
requirements.txt # python-docx dependency
CLAUDE.md # Instructions for Claude
README.md # This file
email_ranked_jobs.py # Conductor worker: emails ranked job reports
cowork_monitor.py # Conductor worker: monitors Cowork VM, auto-recovers
cowork_tab.png # Reference image for Cowork tab UI automation
data/ # Entire folder gitignored except the two tracked files below
.gitkeep # Keeps the folder in git (tracked)
email_config.example.json # Credential template (tracked, no real secrets)
email_config.json # Your real Gmail credentials (gitignored)
profile.json # Created on first setup (gitignored)
applications.db # Created on first log (gitignored)
scouted_jobs.json # Scouted listings (gitignored)
ranked_jobs.md # Latest ranked report (gitignored)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。