Job Search MCP について
Job Search MCPは、米国のソフトウェアエンジニア職を主な対象とする、Claude Desktop向けのローカル求人検索サーバー兼ランキングボードです。求人を検索し、Claudeが保存済みプロフィールに基づいて評価し、候補や応募状況を管理します。
主な機能
- 01職種と勤務地で求人サイトを検索
- 02プロフィールとの適合度を0~100で評価
- 03ランキング付きの埋め込みボードで求人を選別
- 04候補求人と応募済み求人を管理
- 05最近表示した求人の再表示を回避
活用シーン
- 01希望地域のシニアエンジニア職を探す
- 02履歴書プロフィールに基づいて求人を優先付け
- 03求人の応募や見送りを個別または一括で実行
- 04保存した求人と応募状況を確認
MCP 対応
stdioのMCPサーバーとしてClaude Desktopに接続し、`ui://`リソースで埋め込みボードを提供します。求人検索、評価、選別、プロフィール保存、保存済み求人の確認ツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @servation/job-search-mcpJOB_SEARCH_MCP_DATAOptional override for the per-user data file path (defaults to ~/.job-search-mcp/jobs.json).LINKEDIN_LI_ATシークレットOptional: your logged-in LinkedIn li_at cookie, for richer/Premium LinkedIn data instead of guest mode. Against LinkedIn's ToS; see README.LINKEDIN_JSESSIONIDシークレットOptional: your logged-in LinkedIn JSESSIONID cookie, paired with LINKEDIN_LI_AT for Premium mode.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
10掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | number | いいえ | 今回の実行で返す/保存する求人の最大数(デフォルト:15)。 |
| query | string | いいえ | 職種/キーワードのフィルター。例:'backend java spring'。プロフィールの希望職種を上書きします。 |
| remote | enum | いいえ | 勤務形態(LinkedIn)。リモート勤務の希望も設定します。on site | remote | hybrid |
| sort_by | enum | いいえ | LinkedIn の検索結果の並べ替え順。recent | relevant |
| sources | array | いいえ | これらのソースに限定します(デフォルト:すべて)。 |
| job_type | enum | いいえ | 雇用形態(LinkedIn)。full time | part time | contract | temporary | internship | volunteer |
| location | string | いいえ | 勤務地フィルター。例:'California' または 'Remote'。プロフィールの検索勤務地を上書きします。 |
| max_years | number | いいえ | この検索における候補者の経験年数(保存済みプロフィールを上書き)。シニアリティフィルターのデフォルト値にもなります。 |
| salary_min | number | いいえ | 最低年収フィルター(LinkedIn)。例:100000。 |
| date_posted | enum | いいえ | 投稿日フィルター(LinkedIn)。24hr | past week | past month |
| verify_urls | boolean | いいえ | true の場合、各求人 URL をネットワーク経由で検証します(時間がかかります)。デフォルトは false です。 |
| max_applicants | number | いいえ | 応募者数の少ない LinkedIn の求人を表示します(LinkedIn の早期応募者フィルターを使用し、約 25 人未満)。応募者数を正確に絞り込むには LinkedIn cookie が必要です。 |
| experience_level | enum | いいえ | シニアリティのフィルター(LinkedIn)。internship | entry level | associate | senior | director | executive |
詳細
job-search-mcp
Claude Desktop向けの個人用求人検索アシスタントです。Claudeに求人を探すよう頼むと、実際の求人サイトを検索し、自分との適合度を0〜100で評価して、ワンクリックで仕分けできるランキング形式のボードに表示します。すべてローカルで動作し、APIキーもアカウントも必要ありません。
M C P Appです。Claude Desktopと通信する小さなサーバーと、チャット内に表示されるボードで構成されています。
対象範囲: 米国のソフトウェアエンジニア職向けに調整されています(組み込みの求人ソースと職種フィルターは、米国のテクノロジー企業を対象としています)。ほかの分野や地域では、検索結果が少なくなります。
対応環境: Claude Desktop向けに開発・テストされています。ローカル(stdio)サーバーを実行でき、MCP AppのUIも表示できるほかのMCPクライアント(VS Code(Copilot)、Cursor、Gooseなど)でも動作するはずですが、未テストです。リモート専用クライアント(ChatGPT、ウェブ版/モバイル版Claude)はローカルサーバーを起動できないため、動作しません。

できること
- 実際の求人サイトを検索します — LinkedInに加え、8つのATS/求人ソース(Greenhouse、Lever、Ashby、Workday、SmartRecruiters、Hacker News、RemoteOK、Remotive)を、希望する職種と勤務地に基づいて検索します。
- あなたに合った求人を評価します — Claudeが求人の詳細な説明を読み、スキル、経験年数、職位との適合性、職種を考慮して、適合度を0〜100で評価し、理由を1行で示します。
- すばやく仕分けできます — 各カードで「応募」/「スキップ」を選ぶか、まとめて操作できます(「60未満をすべて非表示にする」など)。
- 情報を記録します — 継続的に更新される候補リストと応募済み求人のトラッカーを保持し、同じ求人を6か月間表示しません。
セットアップ
1. Claude Desktopに設定を追加します。 設定ファイルを開きます。
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
"mcpServers"の下に次の内容を追加します。npxが公開済みパッケージを取得するため、クローンやビルドは不要です。
{
"mcpServers": {
"job-search": {
"command": "npx",
"args": ["-y", "@servation/job-search-mcp"]
}
}
}
2. Claude Desktopを完全に終了して再起動します(Windowsでは、システムトレイから終了してください。ウィンドウを閉じるだけでは不十分です)。これで完了です。
ソースから実行する場合
npm install
npm run build
次に、設定でこのフォルダーのdist/main.jsを指定します。
{
"mcpServers": {
"job-search": {
"command": "node",
"args": ["D:\\job-search-mcp\\dist\\main.js"]
}
}
}
使い方
Claudeに話しかけるだけです。たとえば、次のように頼めます。
- 「プロフィールを保存して」 — 先に履歴書を貼り付けると、Claudeがスキル、職種、経験年数、勤務地を抽出し、それに合わせて検索と評価を調整します。
- 「カリフォルニア州のシニアレベルのバックエンドエンジニア求人を探して。今週掲載されたもの。」
- 「応募者の少ない求人を探して」 — LinkedInの早期応募者フィルターを追加します。
- 「60未満をすべて非表示にして。」
- 「応募した求人を見せて。」
- 「ボードを再評価して。」
一般的な初回の流れ:プロフィールを保存 →「求人を探して」と頼む → Claudeが求人を評価してランキング形式のボードに表示 →「応募」/「スキップ」を選択。
ボード
ボードは継続的に更新される候補リストです。求人は、応募(トラッカーに移動)またはスキップ(以降非表示)を選ぶまでボードに残ります。新しい検索では、ボード上、トラッカー内、非表示にした求人、および過去6か月に表示された求人が自動的に除外されるため、同じ求人が続けて表示されることはありません。
カードの**「応募済み」または「スキップ」**をクリックするか、Claudeに操作を頼んでください。ウィジェットで仕分けした内容は、そのまま記録されます。
ツール(参考)
これらを名前で呼び出すことはほとんどありません。Claude が適切なものを選びます。内部で使われているものは次のとおりです。
| ツール | 機能 |
|---|---|
find_jobs | 求人ボードを検索して、希望する職種/勤務地の求人を探します(任意のフィルター:経験レベル、雇用形態、掲載時期、リモート、給与、応募者数、ソース)。 |
evaluate_jobs | Claude が見つかった求人の適合度を 0–100 で評価します(検索後に自動実行されます)。 |
show_board | ランク付けされたボード(または saved トラッカー)を表示します。 |
set_status | 1 件の求人を応募/スキップ/保存します(カードのボタンからも操作できます)。 |
bulk_status | スコアやソースを基準に、複数の求人を一度に選別します。例:スコアが 60 未満の求人をすべて除外する。 |
whats_promising | 現在のボードをテキストで一覧表示します(スコア評価済みの求人すべてと、まだ未評価の求人)。 |
review_saved | 保存または応募した求人を確認するトラッカーです。 |
rescore_board | ボード上のすべての求人を最初から再評価します。 |
clear_jobs | 未評価の求人、またはボード全体を整理します(応募済み/除外済みの求人には触れません)。 |
save_profile | 履歴書プロフィールを保存します(検索とスコア評価に使用されます)。 |
データの保存場所
お使いのマシン上にある JSON ファイル 1 つだけです。クラウドには保存されず、検索対象の求人ボード以外にデータが送信されることもありません。
- インストール済みの場合:
~/.job-search-mcp/jobs.json - ソースから実行する場合:
./data/jobs.json JOB_SEARCH_MCP_DATA環境変数で保存先を上書きできます。
オプション:LinkedIn Premium モード
デフォルトでは、LinkedIn は公開ゲスト用エンドポイントを使用します。ログインは不要で、アカウントのログインに伴うリスクもなく、求人の詳細情報もすべて取得できます。ただし、ゲストモードでも自動アクセスはご自身の IP アドレスから実行され、LinkedIn の User Agreement に違反しますので、ご自身の判断でご利用ください。より詳細な/Premium データを取得したい場合は、サーバー設定に env ブロックを追加して、ログイン済みアカウントを使用できます。
"job-search": {
"command": "npx",
"args": ["-y", "@servation/job-search-mcp"],
"env": {
"LINKEDIN_LI_AT": "<your li_at cookie>",
"LINKEDIN_JSESSIONID": "ajax:1234567890123456789"
}
}
ログイン済みの linkedin.com タブから、DevTools → Application → Cookies の順に開き、両方の Cookie を取得してください。
⚠️ ご注意: これは LinkedIn の Terms of Service に違反しており、アカウントにフラグが立てられたり、制限されたりする可能性があります。また、Cookie は約 1 か月で期限切れになり、LinkedIn の内部エンドポイントは予告なく変更されます。問題が発生した場合は、自動的にゲストモードにフォールバックします。安全性を確保するには、
envブロックを省略してください(ゲストモードのみ)。
スコア評価の仕組み
ホストモデルである Claude が直接スコア評価を行います。各求人の説明を読み、適合度を判断するため、適切に調整されています。決定論的な計算式(scoring.ts の computeMatchScore)は、すべてを過剰に高く評価しがちな、性能の低いローカルモデルを実行する場合のフォールバックとして残されています。デフォルトでは有効になっていません。
開発
npm run typecheck # type-check UI + server + harness
npm run build # build the UI bundle (vite single-file) + compile the server (tsc)
npm run serve:stdio # run the server from source (tsx) for local testing
npm run harness # work on the review UI without Claude Desktop (see harness/)
npm run canary # check every job source is still returning postings
サーバーは stdio 専用です(main.ts → server.ts)。UI は、単一のインライン HTML ファイルにバンドルされた React アプリです(src/mcp-app.tsx → dist/mcp-app.html)。サーバーはこれを ui:// リソースとして提供します。
UI を開発する場合は、harness/ を使用してください。これは Claude Desktop のローカルな代替環境で、合成した求人ストアと実際の ui/* ブリッジを使ってウィジェットを表示します。dist/mcp-app.html をブラウザーのタブで開くだけでは「接続中…」と表示されます。また、問題が起きやすい機能(リンクの開き方、テーマ設定、マウント後の更新)はすべてホスト側で処理されるため、ホストが接続されていないと問題は現れません。
求人ソースが応答しなくなった場合は、npm run canary を実行すると、どのソースかがわかります。会社のスラッグは頻繁に古くなるため、通常は新しいリリースを作成するのではなく、実行時に updateCompanyDirectoriesFromRegistry() が読み込み直すリモートスラッグレジストリーを修正します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。