mcpField
E
ENTRA Jobs

ENTRA Jobs

リモート
entracareers.comビジネス・マーケティング05 週間前に更新
リポジトリ公式サイト

ENTRA Jobs について

ENTRA Jobs は、ENTRA の求人プラットフォームに接続する MCP サーバーです。求職者は確認済みの AI・テック求人を検索でき、雇用主は採用業務を管理できます。マッチングは決定的なルールに基づき、応募は本人が行います。

主な機能

  1. 01勤務地・給与・経験で求人を検索
  2. 02履歴書やスキルに基づく求人の順位付け
  3. 03給与統計と採用中の企業の確認
  4. 04応募リンクとチェックリストの準備
  5. 05雇用主による求人掲載と応募管理

活用シーン

  1. 01給与条件に合うリモート求人の絞り込み
  2. 02履歴書のスキルに合う求人の検索
  3. 03職種ごとの掲載給与帯の確認
  4. 04求人掲載と候補者情報の確認

MCP 対応

ローカルの npx またはホスト済み Streamable HTTP で接続できます。求職者向けツールに API キーは不要で、雇用主キーを設定すると求人掲載、応募管理、候補者検索などのツールが利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.entracareers.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.entracareers.com/mcp認証が必要
パッケージ
npmentra-mcp0.4.0

ツール

8
パラメーター型必須説明
limitintegerいいえ結果の最大数(デフォルト 10、最大 50)
querystringはいフリーテキスト検索。例:"machine learning engineer"
remotebooleanいいえwork_location="remote" の省略形
companystringいいえ企業の slug または名称。例:"openai" または "Stripe"
countrystringいいえISO-2 国コード(US、GB、DE、AE…)または国名
rank_byenumいいえdate(デフォルト) · salary(記載された給与のみ、高い順) · fit(profile_keywords が必要)date | salary | fit
experienceenumいいえ経験レベルno_experience | 1_3_years | 3_6_years | 6_plus_years
salary_minnumberいいえ最低年収(デフォルト通貨は USD。ENTRA が他の通貨を換算します)
work_locationenumいいえ勤務地で絞り込みますremote | onsite | hybrid
sort_by_salarybooleanいいえ非推奨—rank_by="salary" を使用してください
salary_currencystringいいえsalary_min に使用する通貨(デフォルトは USD)
profile_keywordsarrayいいえrank_by="fit" に使用する候補者のスキル。例:["python","pytorch","llm"]
posted_within_daysintegerいいえ過去 N 日以内に掲載された求人のみ

詳細

ENTRA MCP — エージェント対応の初の求人プラットフォーム

AI に仕事を探してもらいましょう。この MCP サーバーは、Claude、ChatGPT、Cursor、Windsurf、または任意の MCP クライアントを、ローカルの npx 経由またはホスト型の https://mcp.entracareers.com/mcp 経由で ENTRA に接続します。ENTRA には、企業の採用システムから直接集約された、検証済みの AI・テック系求人が数千件あります(OpenAI、Anthropic、SpaceX、Stripe など、ほか 300 社以上)。幽霊求人はゼロです。

エージェントは検索、マッチング、順位付け、応募準備を行います。応募するかどうかを決めて応募するのは人間です — スパム送信や自動応募はありません。

インストール

Claude Code

claude mcp add entra -- npx -y entra-mcp

Claude Desktop — ワンクリック拡張機能(.mcpb) entra-mcp.mcpb をダウンロードして、Claude Desktop で開きます(Settings → Extensions → Install from file)。Node のインストールは不要です。雇用主は拡張機能の設定に API キーを貼り付けられます。

Claude Desktop(claude_desktop_config.json)、Cursor(.cursor/mcp.json)、Windsurf(~/.codeium/windsurf/mcp_config.json)

{
  "mcpServers": {
    "entra": { "command": "npx", "args": ["-y", "entra-mcp"] }
  }
}

ソースからインストールする場合:

npm install && npm run build
claude mcp add entra -- node "/path/to/entra-mcp/dist/index.js"

Node 18 以降が必要です。候補者向けツールには API キーは不要です。公開 ENTRA API に対する読み取り専用ツールだからです。雇用主は環境変数を 1 つ追加してください。詳しくは雇用主モードをご覧ください。

あとは、次のように尋ねてください:「年収 20 万ドル以上のリモート ML エンジニア職を探して、最も多く採用している企業を教え、最適な求人への応募準備をしてください。」

ホスト型エンドポイント(インストール不要)

同じサーバーが https://mcp.entracareers.com/mcp(MCP Streamable HTTP)で稼働しています。インストールは不要で、候補者向けツールにはアカウントも必要ありません。

クライアント設定方法
ChatGPTSettings → Connectors → Create → MCP Server URL に https://mcp.entracareers.com/mcp を指定し、認証を「None」に設定します(カスタムコネクターには、Plus/Pro/Business/Enterprise の開発者モードなど、対応する ChatGPT プランが必要です)
claude.aiSettings → Connectors → Add custom connector → URL に https://mcp.entracareers.com/mcp を指定します
Cursor(.cursor/mcp.json){ "mcpServers": { "entra": { "url": "https://mcp.entracareers.com/mcp" } } }
Claude Codeclaude mcp add --transport http entra https://mcp.entracareers.com/mcp
Gemini CLI / Smithery / 任意の Streamable HTTP クライアント上記の URL を指定します

HTTP 経由の雇用主モード: リクエストごとに Authorization: Bearer entra_live_… としてキーを送信すると、そのリクエストで 8 つの雇用主向けツールが利用できます(Cursor:url の隣に "headers": { "Authorization": "Bearer entra_live_…" } を追加します)。ChatGPT と claude.ai のコネクターは現在カスタムヘッダーを送信できないため、候補者モードのみ利用できます。雇用主は ENTRA_API_KEY を使ったローカルの npx セットアップを利用してください(雇用主モード)。

ホスト型サーバーの動作:

  • ステートレスです。各リクエストは独立しており(セッションも Mcp-Session-Id もありません)、クライアントに影響を与えることなくスケールや再デプロイが可能です。仕様で許可されているとおり、GET /mcp と DELETE /mcp は 405 を返します。
  • Authorization ヘッダーはそのリクエストにのみ使用され、保存もログ記録もされません。サーバーの環境変数からキーが読み取られることもありません。
  • /mcp ではクライアント IP ごとに 1 分あたり 120 リクエストまでに制限されます。リクエスト本文は最大 1 MB で、ブラウザベースのエージェント向けに CORS は開放されています。ヘルスチェック:GET /healthz。
  • 以下と同じ誠実さのルールが適用されます。ホスト型サーバーは、同一のツールを利用するための別のトランスポートにすぎません。

ツール

ツール機能呼び出し例
search_jobs現在募集中の確認済み求人を検索します。フィルター:work_location(リモート/出社/ハイブリッド)、country(ISO-2)、company(スラッグまたは名称)、salary_min(年収)、experience、posted_within_days。rank_by:date(デフォルト)・salary・fit(profile_keywords を指定)。total_found と、id/title/company/location/salary/published_at/url を含む求人を返します。{"query":"machine learning engineer","remote":true,"country":"US","salary_min":200000,"rank_by":"salary","posted_within_days":14,"limit":10}
get_job職務の詳細情報:職務内容、応募要件、スキル、給与幅、応募リンク{"job_id":"<id from search_jobs>"}
list_companiesENTRA で採用中の企業を、募集中の職種数とプロフィールリンクとともに表示します{"query":"anthropic"}
match_jobsAI によるライブ求人マッチング。 resume_text(最大8000文字)または skills[] を渡します。target_role、remote_only、country、min_salary、limit(最大20)は任意です。スキル/職種/シニアリティを決定論的に抽出し、2~4回の検索を実行して重複を除去し、fit_score(0~100)、why[]、matched_skills、skill_gaps、salary、interview_chance_hint(高/中/低)を含むランク付けされた一覧を返します。{"resume_text":"Senior ML engineer, 7 years, PyTorch, RAG, AWS…","remote_only":true,"limit":10}
match_profilematch_jobs の後方互換エイリアス(skills[]、role_hint){"skills":["python","llm","rag"],"role_hint":"ML engineer"}
salary_stats給与幅を掲載している求人情報に基づく職種別の給与統計:通貨ごとの count_with_salary、最低額/25パーセンタイル/中央値/75パーセンタイル/最高額(年換算。USD は USD 相当額、その他の通貨はそのまま)、上位5社{"query":"software engineer","country":"US"}
companies_hiring現在その職種を採用している企業:募集中の職種数、求人タイトルの例、最新の掲載日、確認済みフラグ、プロフィール URL{"query":"AI engineer","remote_only":true,"limit":15}
prepare_application人間による操作を介した応募リンクとチェックリスト{"job_id":"<id>"}

すべてのレスポンスに含まれるすべての求人には、verified: true、企業が掲載している場合は給与幅、次の形式の応募 URL が含まれます:https://entracareers.com/{country}/vacancies/{id}?utm_source=agent&utm_medium=mcp — エージェントからのアクセスを歓迎します。

例:match_jobs
{
  "source": "ENTRA — verified roles aggregated from company ATSs. Finds and ranks; you apply.",
  "profile": { "skills_used": ["machine learning", "python", "rag", "llm", "pytorch", "aws"], "target_role": "machine learning engineer", "seniority": "6+ yrs (7+ years mentioned)" },
  "queries_run": ["machine learning engineer", "python", "rag", "llm"],
  "candidates_considered": 142,
  "matches": [
    {
      "title": "Machine Learning Engineer, Inference",
      "company": "OpenAI",
      "location": "San Francisco, United States",
      "work_location": "remote",
      "salary": "$295K–555K/yr",
      "url": "https://entracareers.com/us/vacancies/…?utm_source=agent&utm_medium=mcp",
      "fit_score": 88,
      "interview_chance_hint": "high",
      "why": [
        "Skills: 5/6 matched (machine learning, python, llm, pytorch, aws)",
        "Title match: \"Machine Learning Engineer, Inference\" fits \"machine learning engineer\"",
        "Seniority: job asks 6+ yrs, you read as 6+ yrs — match",
        "Remote role (as requested)",
        "Salary band listed: $295K–555K/yr"
      ],
      "skill_gaps": ["rag"]
    }
  ]
}

誠実性に関する注記

  • マッチングは決定論的です。キーワード辞書とルールを使用し、LLM は処理に関与しません。fit_score は説明可能な指標であり、予測ではありません。interview_chance_hint は fit_score のみから算出されます(根拠のないパーセンテージを作ることはありません)。
  • salary_stats が使用するのは掲載済みの給与幅のみです。給与幅が公開されていない職種は除外され、推定は行いません。
  • search_jobs の rank_by: "salary" は給与掲載のある求人のみを返します。posted_within_days は、最も新しい500件の一致結果を対象にクライアント側で適用されます。
  • こちらがあなたに代わって応募を送信することはありません。prepare_application はリンクとチェックリストを返し、応募は人間が行います。

雇用主モード(API キー)

同じパッケージで、環境変数を 1 つ設定するだけです。ENTRA_API_KEY を設定すると、8 個の候補者向けツールはそのまま利用でき、さらに自社向けの 8 個の雇用主向けツールが追加されます。求人の掲載、求人情報の管理、応募の確認、候補者の検索とマッチングができます。

  1. entracareers.com/employer/profile?tab=api-keysでキーを作成します(必要なスコープを選択してください。キーは一度だけ表示されます)。
  2. 接続します。

Claude Code

export ENTRA_API_KEY="entra_live_…"
claude mcp add entra -e ENTRA_API_KEY=$ENTRA_API_KEY -- npx -y entra-mcp --employer

Claude Desktop / Cursor / Windsurf

{
  "mcpServers": {
    "entra": {
      "command": "npx",
      "args": ["-y", "entra-mcp", "--employer"],
      "env": { "ENTRA_API_KEY": "entra_live_…" }
    }
  }
}

次のように依頼します。「ドバイでシニアセールスマネージャーの求人を掲載してください。ハイブリッド勤務、月給 15~22K AED、45 日間で。その後、この求人に最適な候補者を 5 人表示し、すでに応募した人も教えてください。」

動作について:

  • キーは環境変数からのみ読み取られます(引数から読み取ることはありません)。キーがない場合、雇用主向けツールは登録されません。--employer だけを指定すると、stderr にヒントが表示されます。
  • 起動時に API は呼び出されません。最初の雇用主向け呼び出し時に、GET /employer/api-keys/me を通じて会社とスコープを特定し、キャッシュします。
  • Bearer ヘッダーが付与されるのは雇用主向けエンドポイントのみです。公開情報(国、都市、専門分野、求人の詳細)は匿名で検索されます。
  • レート制限はキーごとに 1 分あたり 120 リクエストです。429 が返された場合は、retry-after の時間経過後に 1 回再試行します。
雇用主向けツール
ツールスコープ機能呼び出し例
employer_whoamiany会社、キー名/プレフィックス、付与されたスコープ、利用可能なツールを表示します{}
post_jobjobs:write求人を掲載します。人が入力しやすい形式の入力項目:title、description、employment_type(full_time/part_time/contract/freelance/internship)、work_location(remote/onsite/hybrid)、country(ISO-2 または国名)、city(都市名。リモート勤務でも ENTRA では必須)、任意項目の specialization(自由記述から最適な有効な専門分野を選択。デフォルトは求人タイトル)、experience_level、salary_min/max/currency/period、benefits、skills(スキル名)、internal_job_id、expires_in_days(デフォルトは 30)。公開 URL、管理 URL、およびすべての解決内容(resolved、notes)を返します。{"title":"Senior Sales Manager","description":"…","employment_type":"full_time","work_location":"hybrid","country":"AE","city":"Dubai","salary_min":15000,"salary_max":22000,"salary_currency":"AED","salary_period":"monthly","expires_in_days":45}
my_jobsjobs:read自社の求人を表示します。status は active(デフォルト)/closed/all、search、limit、page を指定できます。ステータス、給与、応募数、有効期限、URL が表示されます。{"status":"active"}
update_jobjobs:write一部の項目を変更します:title、description、requirements、employment/work location、experience、salary、benefits、expires_in_days(延長)、country+city、specialization、is_active(再掲載){"job_id":"…","salary_max":25000,"expires_in_days":60}
close_jobjobs:write求人の掲載を停止します。confirm:true がない場合はプレビューのみを返します。指定した場合は PATCH {isActive:false} を実行します(元に戻せます)。{"job_id":"…","confirm":true}
job_applicationsapplications:read1 件の求人(job_id)または会社のすべての求人への応募を表示します。任意で status(クライアント側)、limit、page を指定できます。候補者、職務経歴書の見出し、カバーレター、連絡先は、返された内容をそのまま表示します。{"job_id":"…","status":"pending"}
search_candidatescandidates:read公開済みの職務経歴書を検索します。query、skills[](いずれかに一致)、specialization、country/city、experience、work_location/remote_only、employment_type、ready_to_relocate、希望給与の範囲、has_linkedin/has_portfolio、published_within_days、limit(最大 25)を指定できます。{"query":"sales manager","country":"AE","experience":"3_6_years"}
match_candidatescandidates:readjob_id(または job_text)に基づいて候補者をランク付けします。スキル、職種、職位のレベルを決定論的に抽出し、職務経歴書を 2~3 回検索します。fit_score(0~100)、why[]、matched_skills、skill_gaps を返します。{"job_id":"…","limit":10}
明確な結果(予期しない動作はありません)
状況結果
キーが無効/失効している{"error":…,"code":"AUTH_ERROR","status":401,"hint":"…create a new key at …/employer/profile?tab=api-keys"}
キーに必要なスコープがない{"code":"MISSING_SCOPE","scope":"jobs:write",…} — リクエストを送信する前にローカルでチェックします
空き求人枠がないpost_job → {"needs_subscription":true,"pricing_url":"https://entracareers.com/employer/pricing","note":"Founding plan from $10"}(エラーではありません)
履歴書データベースの利用にプランが必要search_candidates / match_candidates → {"needs_subscription":true,…,"note":"Resume Access"}
レート制限に達した1 回再試行し、その後 {"code":"API_KEY_RATE_LIMIT_EXCEEDED","status":429,…} を返します
バリデーションに失敗した{"status":400,"validation":[{field,message}]}
正直な説明(雇用主向け)
  • match_candidates は 決定論的なキーワードスコアリング(スキルの一致、見出しと職種の一致、経験レベル、勤務地/リモート)を行います。説明可能な評価であり、予測ではありません。連絡する前にプロフィールを確認してください。
  • 連絡先情報(メールアドレス、電話番号、WhatsApp、LinkedIn、ポートフォリオ)は、ENTRA から返された場合にのみ表示されます。つまり、候補者があなたの求人に応募したか、招待を承諾した場合に限られます。情報を推測したり、スクレイピングしたりすることはありません。
  • post_job は、推測した内容をすべて報告します。都市/専門分野の一致度、検出またはデフォルト設定された experience_level(検出できない場合は 1_3_years)、およびデフォルトで 月額 となる salary_period(ENTRA のデフォルトです。年額を指定する場合は "yearly" を渡してください)。
  • データは削除されません。close_job は isActive:false に設定するだけで、update_job {is_active:true} で取り消せます。応募ステータスの変更は API キーでは利用できません。雇用主向けダッシュボードを使用してください。

ENTRA がエージェントに対応し、ほかのサービスがそうでない理由

  • LinkedIn はエージェントを禁止しています。Indeed の MCP は検索専用です。スクレイピングするツールは CAPTCHA によって動作しなくなります。
  • ENTRA は 求人情報を自ら管理 しています。企業の ATS から確認済みの求人を提供しているため、エージェントは同意を得た応募リンクを通じて、整備された合法的な構造化アクセスを利用できます。
  • すべての求人情報には verified: true、給与幅、utm_source=agent が含まれます(エージェントからのアクセスを歓迎します)。

match_jobs による AI マッチングは利用可能です。entracareers.com でプロフィールを連携してください。

ロードマップ

  • API キーを通じた応募ステータスの変更と招待(現時点では応募情報は読み取り専用です)。
  • ホスト型エンドポイントでの OAuth により、ChatGPT / claude.ai のコネクターがローカルインストールなしで雇用主向けモードを利用できるようにします。

雇用主の方:entracareers.com/employer/pricing — Founding プランは $10 からです。

リンク

開発

npm run build           # tsc → dist/
npm run selftest        # calls the live API directly, no MCP client (candidate tools)
npm run smoke           # spawns the server over stdio with the MCP SDK client and exercises every candidate tool (live API)
npm run smoke:employer  # employer mode against an in-process mock of the employer API (no network, no real key)
npm run smoke:http      # starts dist/http.js on a random port and drives it with the SDK's Streamable HTTP client (live API + fake employer key)
npm run start:http      # hosted transport locally: http://localhost:8080/mcp (PORT, HOST, RATE_LIMIT_PER_MINUTE, TRUST_PROXY, MCP_ALLOWED_HOSTS)
npm run bundle          # builds dist-bundle/entra-mcp.mcpb (Claude Desktop extension / Smithery local bundle) from manifest.json
docker build -t entra-mcp . && docker run -p 8080:8080 entra-mcp   # the image the hosted endpoint runs (node:22-alpine, dist/http.js)

レイアウト:src/server.ts はサーバーを構築します(createServer({ apiKey? }) — ツールとリクエストごとのキーコンテキスト)。src/index.ts は stdio エントリ(npx entra-mcp)、src/http.ts はホスト型 Streamable HTTP エントリです。

環境変数:ENTRA_API_KEY(stdio のみ — 雇用主向けモードを有効化)、ENTRA_API_URL(デフォルトは https://entracareers.com/api)、ENTRA_SITE_URL(デフォルトは https://entracareers.com)。

MIT © ENTRA

プライバシーポリシー

このサーバーは、ツールへの入力のみを公開 ENTRA API(https://entracareers.com/api)に送信します。テレメトリーやサードパーティサービスは使用しません。ローカル環境(`npx entra-mcp)では、雇用主向けモードは ENTRA_API_KEY環境変数の API キーを使用します。ホスト型エンドポイント(https://mcp.entracareers.com/mcp)では、各リクエストのAuthorization` ヘッダーからキーを取得し、ENTRA の雇用主向けエンドポイントにのみ転送します。キーが保存またはログに記録されることはありません。ホスト型サーバーはセッションやリクエスト履歴を保持しません。ただし、短期間のアクセスログ(メソッド、ツール名、ステータス、所要時間)は保持します。ポリシー全文:https://entracareers.com/privacy-policy

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。