mcpField
A
ApplyWise

ApplyWise

ローカル
github.com/tanmayagrawal21ビジネス・マーケティング03 日前に更新

ApplyWise について

ApplyWiseは、求人検索や応募計画、応募フォーム入力を行う求職者向けのMCPサーバーです。既定ではドライランとなり、実際の送信には承認または明示的な同意が必要です。

主な機能

  1. 01複数求人サイトの並列検索
  2. 02条件による求人の絞り込みと重複排除
  3. 03応募計画とドライラン
  4. 04応募フォームの入力と確認
  5. 05承認ゲートと安全チェック
  6. 06生成テキストの出典記録

活用シーン

  1. 01複数サイトを横断した求人探し
  2. 02送信前の応募内容の確認
  3. 03CAPTCHAや認証手順の人への引き継ぎ
  4. 04重複応募の防止と実行レポートの確認

MCP 対応

互換クライアントに求人検索、応募計画、フォーム処理のツールを提供します。stdioとbearer token付きのstreamable HTTPに対応し、実際の送信は承認と同意の制御下にあります。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"tanmayagrawal21-applywise": {
"command": "uvx",
"args": [
"applywise"
]
}
}
}
起動コマンドuvx applywise

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiapplywise0.1.0

ツール

33

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
limitintegerいいえ
querystringいいえ
boardsanyいいえ
cursorstringいいえ
locationstringいいえ
platformsanyいいえ
since_daysintegerいいえ
apply_policybooleanいいえ

詳細

job-apply-mcp (ApplyWise)

求人を検索して応募フォームに入力し、取り消せない操作の前に停止する MCP サーバーです。モジュール式(プラットフォーム、LLM プロバイダー、ブラウザードライバーを差し替え可能)、並列処理対応、トークン節約型(コンパクトなページ分割出力)、ローカルファースト(定型フォーム項目はお使いのマシン上の Ollama、LM Studio、または MLX に送信し、難しい文章だけをエスカレーション)です。macOS、Linux、Windows 上のあらゆる MCP クライアントで動作します。

警告

アルファ版です。 最初の実環境でのドッグフーディング実行(1人のユーザー、1晩、約330件の求人情報を発見)で得られた結果: 検索、ランキング、重複排除、計画は一連の流れで機能し、ブラウザードライバーは Greenhouse と Lever のフォームをすべて入力して確認できるようになりましたが、無人で応募が送信されたことはまだありません。Greenhouse の求人ページのほとんどは reCAPTCHA で保護されているため、ツールがフォームに入力した後、最後のクリックはあなたに引き継がれます(handoff)。これは意図された動作です。自由記述式の質問をあなたの操作なしで送信するには、writing.reviewer = "router"(ローカルでの厳格なレビュー)が必要です。まだ不安定な部分があります。取り消せない操作にはすべてゲートを設けてログに記録し、結果が不確かな場合は再試行しません。

Claude Code プラグインとしてインストールする

このリポジトリは Claude Code のプラグインマーケットプレイスでもあります。applywise プラグインはレビュー済みのバージョンに固定して MCP サーバーを起動し、ツールを安全に使う方法を Claude に伝えるスキルを追加します。

claude plugin marketplace add tanmayagrawal21/job-apply-mcp
claude plugin install applywise@applywise

続いて、以下のクイックスタートにある init と doctor をご自身のターミナルで実行し、/mcp に plugin:applywise:applywise があることを確認してください。同じ安全モデルが適用されます。デフォルトではドライランとなり、実際に送信するたびに人間が承認します。また、画面に表示される CAPTCHA は必ずあなたに引き継がれます。自分で同意のウィンドウを開かない限り、ログイン、コード、アカウント作成はあなた自身で行います(安全モデルの項目7と8)。更新するには、claude plugin update applywise@applywise を実行します。リリースとバージョン固定の仕組みについては、docs/release.md を参照してください。

5分で始める

uv(または pipx)が必要です。リポジトリをクローンする必要はありません。

# 1. Create config.toml, profile.toml, controls.toml (asks a few questions; --yes to skip them)
uvx --from git+https://github.com/tanmayagrawal21/job-apply-mcp job-apply-mcp init

# 2. Put your real details in the profile it printed the path of, then check everything
uvx --from git+https://github.com/tanmayagrawal21/job-apply-mcp job-apply-mcp doctor

# 3. Add the printed snippet to your MCP client (guides for ten clients: docs/clients/)
claude mcp add --transport stdio job-apply -- uvx --from git+https://github.com/tanmayagrawal21/job-apply-mcp job-apply-mcp

続いて、アシスタントに「greenhouse:examplecorp でデータ関連の求人を検索し、最適な求人の応募計画を立てて、ドライランを実行して」と依頼してください。 dry_run = false を設定するまでは、すべてドライランです。

インストール方法の別の選択肢:pipx install git+https://github.com/tanmayagrawal21/job-apply-mcp(その場合、コマンドは job-apply-mcp のみ)または、仮想環境に pip install します。最初の PyPI リリース後は uvx applywise も使えます(PyPI のディストリビューション名は applywise ですが、job-apply-mcp コマンドもエイリアスとして引き続き使えます)。 オプションの追加機能:[browser](Playwright)、[agent]、[jobspy]、[mlx]、[hf]、[litellm]、[keyring]。

機能

領域内容
検索Greenhouse、Lever、Ashby、SmartRecruiters、Workday、JobSpy の求人ボードをページネーションしながら並列検索します
ポリシーゲートスポンサーシップ、市民権、セキュリティクリアランス、経験、卒業時期、給与の下限、雇用主のパターンに基づいてスキップします
実行run_applications / job-apply-mcp run:渡したリンク、自分宛てにメールした求人リンク(メールは読み取り専用)、求人検索を1回の実行にまとめ、実行レポートを作成し、フィードバックを次回の実行に反映します
応募可能な場合はプラットフォーム API を使用し、それ以外の場合はブラウザードライバーを使用します。他のサイトには汎用の LLM 支援アダプターを使用します
ローカル LLM ルーティング複雑さでスコア付けした階層(small/medium/large/narrative)、フォールバック、任意のクラウド利用、最後の手段としての MCP クライアントを備えています
プロフィールビルダープロフィールで回答できなかった質問を収集して順位付けし、あなたに尋ねます(profile_questions、answer_profile_question、job-apply-mcp profile ask)。モデルが回答を生成することはありません
認可国ごとの事実(home_country には [authorization]、その他の国には [authorization.<CC>])を使用します。デフォルトの国はなく、不明な国は未解決のままです
文章作成スタイルルール、禁止フレーズ、経歴の空白を避けるためのチェックに基づいて、カバーレターと回答を作成します
出所情報生成したテキストはすべて記録され、あなたが検証または編集できます
重複排除応募データの保存に確認メールの任意の取り込み機能を加え、二重応募を防ぎます
制御レイヤークォータ、モード切り替え、証明と受信者のガード、文章のリント、プロンプトインジェクションの検出を備えています
トランスポートstdio(デフォルト)とベアラートークン付きのストリーム可能な HTTP に対応しています
運用init、doctor、Dockerfile、Linux/macOS/Windows での CI
実行ステータス

run_applications / run_report の結果に含まれる各求人には、必ず1つのステータスが設定されます。必要に応じて why も含まれます (ADR-0049)。

ステータス意味
submitted実際の送信を実行しました。確認が届く場合があります
confirmed照合により送信が確認されました
dry_run_okドライランが完了しました。実行モードなら送信されます(クォータについては live_preview を参照してください。CAPTCHA によって処理が停止するかどうかは、行の captcha モードに示されます:docs/tools.md)
needs_humanあなたの対応が必要です。why に理由(未解決のフィールド、レビューゲート、承認待ち、確認コード)が示されます
quota_blocked日次、プラットフォームごと、または実行ごとのクォータにより、実際の送信が拒否されました。何も送信されていません
skipped試行されませんでした。why に理由(ポリシー、重複、文章が未承認、max_applications 到達)が示されます
unsupported_siteホストに対応する有効なアダプターがありません
unknown結果が不明です(クリック後に障害が発生した場合など)。手動で確認してください
failedエラーが発生しました

max_applications(1以上の整数)は、1回の実行で処理する応募可能な求人(送信準備が整っているもの、またはあなたの対応が必要なもの)の上限です。この上限はドライランと実行モードの両方に適用されます。スキップされた求人と未対応の求人はカウントされません。ドライランでは、現在の実行モードのクォータで許可される内容を示す live_preview も返されます。実際の送信は、日次(24時間の移動期間あたり25件)、プラットフォームごと(10件)、実行ごと(10件)の上限にもカウントされます。ユーザー設定で上限を引き下げたり引き上げたりできます。

安全性モデル

  1. デフォルトではドライランです。 変更しない限り dry_run = true です。init は常にこの値を書き込みます。
  2. 承認トークン。 plan_application は、回答そのもののハッシュに紐づくトークンを返します。実際に送信するにはこのトークンが必要なので、確認した内容がそのまま送信されます(apply.auto_approve を有効にするとこの機能は無効になります。無効にしないでください)。
  3. 制御レイヤー。 副作用が発生するたびに、独立したチェックが実行されます。日次および実行ごとの上限、二重送信防止、送信先拒否リスト、文章のリント、ページテキストのインジェクション検査、apply_enabled キルスイッチが対象です。独自のルールは controls.toml に追加できます。
  4. 強制停止。 表示されている CAPTCHA チャレンジと、policy.stop_phrases に一致する証明チェックボックス(たとえば「AIを使用していません」)がある場合は、必ず needs_human が返されます。これらの設定を変更して回避することはできません。確認コードが入力されるのは、ユーザー自身が入力した場合、許可された事前入力を確認した場合(ADR-0026/0027)、またはターミナルから無人実行に同意した場合(項目8)のみです。アカウント作成はデフォルトで無効です。有効にするには、ユーザー自身の設定ファイルで accounts.auto_create = true にし、さらに認証情報への同意ウィンドウを開く必要があります(ADR-0046)。
  5. 事実を捏造しません。 回答にはプロフィールの情報を使用するか、仮定であることを明示します。必須項目が未解決の場合、実行は停止します。自律性レベル(ADR-0052)。 ユーザー自身の設定ファイルにある [answers] autonomy で、ユーザーが対応できないときにエージェントが何を仮定できるかを決定します。strict(デフォルト:未解決の項目はすべてユーザーの応答を待ちます)、safe_default(連絡・マーケティングへの許可は拒否し、設定済みの「どのようにして知りましたか」のデフォルト値を使い、「自分についての回答を辞退する」を選択します)、infer(さらに、ツールやテクノロジーに関するスキル・経験の質問には、履歴書に基づいて回答します。「はい」と答えるのは履歴書に明確な記載がある場合のみで、それ以外は「いいえ」です。意欲、勤務可能時期、勤務地、条件に関する質問は推測しません)。就労資格・ビザ・身元、経歴などの審査、配慮、録音、証明、法的契約、雇用条件、ポリシーのない給与、開始日や勤務地に関する事実は、決して仮定しません。仮定した回答にはすべてラベルが付きます(assumed、プラン、根拠、実行レポート)。同じ質問について promote_after(3)回仮定すると、一度だけユーザーに質問し、その回答を再利用します。プロジェクトファイルや環境変数では、自律性レベルをより厳しくすることしかできません。init では使用するレベルを尋ね、control_status ではそのレベルを表示します。
  6. プライバシー。 プロフィールとシークレットはユーザーのマシン内に保持され、コミットされることはありません。API キーは環境変数からのみ読み込まれます。SECURITY.md を参照してください。
  7. 認証情報がモデルに渡されることはありません。 ATS のログイン情報は OS のキーチェーンに保存されます(job-apply-mcp vault add <host> --username U。パスワードは画面に表示されず、入力を求められます)。ブラウザーがページに直接入力し、MCP が公開するのは vault_status(ホストのみ。シークレットは含みません)だけです。1回の実行で、ホストごとのログイン試行は最大2回です。アカウントがロックされた場合、またはパスワードが誤っている場合、そのホストの処理を停止します(ADR-0046)。
  8. 同意ウィンドウ(任意、ADR-0048)。 job-apply-mcp consent --for 24h(または --per-run、--max N、--scopes ...)を、選択した期間ごとにターミナルから一度入力します。ウィンドウが開いている間は、送信が自動承認され(同意 ID とともに記録されます)、ボットチェックが非表示ウィジェットのみのページはワンクリックで送信されます。また、メールで届いたコードは、想定される送信元からの最新メッセージを読み取って一度だけ入力します。無人でのコード入力は、なりすましの送信者がコードを提供できないよう、verification.trusted_authserv_ids にユーザー自身のメールサーバーの Authentication-Results ID が登録されるまで無効です(ユーザー設定のみ)。結果は後から確認します(list_applications)。consent --revoke で終了できます。consent_status(MCP)は読み取り専用で、同意ウィンドウを作成できるツールはありません。
  9. ユーザー本人だけが回答できる質問(ADR-0050)。 連絡、メッセージ、マーケティングに関する許可(SMS、WhatsApp、電話、メール、求人アラート、タレントコミュニティ)には、決して「はい」と回答しません。適用されるのは、ユーザー自身の optin:<channel> の回答があり、かつ単独の明確な許可の質問である場合のみです。それ以外はユーザーに委ねるか、answers.autonomy = "safe_default" または "infer"(項目5)では拒否し、assumed とラベル付けします。就労資格とスポンサーシップについては、国ごとの構造化された事実情報のみを使用します。
  10. 最後のクリックはユーザーが行います(任意、ADR-0058)。 headless = false にして、[browser] final_click = "human" を設定します。エージェントは各フォームに入力して検証し、タブを前面に表示しますが、「送信」はクリックしません。クリックするのはユーザーです。監視機能は最大 human_click_timeout_s(デフォルトは900秒)の間、3秒ごとにページを読み取り、サイトに成功ページが表示されると送信を記録します。run_applications は、入力済みのタブを一度に1つずつユーザーに渡します。この設定は制限を厳しくすることしかできません。どの設定レイヤーでも human に設定できますが、agent に戻せるのはユーザー自身の設定のみです。 既知の制限:reCAPTCHA Enterprise を使用する Ashby。 reCAPTCHA Enterprise で保護された Ashby のフォームは、ウィジェットが非表示の場合でも、自動送信クリックを通知なく拒否するか、チャレンジを表示します。これらの求人には final_click = "human" を使用してください。

トランスポート

job-apply-mcp                                                  # stdio (what clients launch)
job-apply-mcp --transport http --host 127.0.0.1 --port 8765   # http://127.0.0.1:8765/mcp
JOB_APPLY_MCP_TOKEN=... job-apply-mcp --transport http --host 0.0.0.0   # non-local: token required

HTTP はデフォルトでループバックにバインドされます。それ以外のアドレスでは、JOB_APPLY_MCP_TOKEN (Authorization: Bearer ...)が設定されていないと起動しません。ネットワーク経由でアクセスする場合は、TLS リバースプロキシを使用してください。Dockerfile が含まれています (デフォルトではブラウザーなし。--build-arg BROWSER=1 を指定すると Playwright と Chromium が追加されます)。

ドキュメント

開発

git clone https://github.com/tanmayagrawal21/job-apply-mcp && cd job-apply-mcp
uv sync --extra dev
uv run ruff check . && uv run pytest -q      # offline; live tests need JAM_LIVE=1
uv run python scripts/gen_config_docs.py     # after changing config.py

プライバシースキャン:python scripts/privacy_scan.py --terms ~/.config/job-apply-mcp/privacy_terms.txt。所有者が承認した検出結果は、リポジトリ外の ~/.config/job-apply-mcp/privacy_allow.txt(--allow FILE)に記録します。ADR-0051 を参照してください。コミット済みの .privacy-allow に含めてよいのは、架空のフィクスチャとマニフェスト内の公開プロジェクト ID(ADR-0042)に対する、完全一致のアンカー付き正規表現のみです。個人情報やフィンガープリントは絶対に追加しないでください。

MIT ライセンスです。行動規範に従ったコントリビューションを歓迎します。

コメント

MCP は初めてですか?

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

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