ooligo
mcp-server

Claude向けAshby MCPサーバー

Difficulty
上級
Setup time
120min
For
recruiter · recruiting-ops · talent-acquisition · recruiting-engineer
Recruiting & TA

Stack

AshbyをClaudeへのツールサーフェスとして公開するModel Context Protocol(MCP)サーバーです。レクルーターと採用オペレーションは候補者データベースの照会、求人のパイプラインウォーク、停滞したアプリケーションの表面化、会話を離れることなく候補者へのコンテキストの記録が行えます。apps/web/public/artifacts/mcp-server-ashby-recruiting/ のアーティファクトバンドルには、読み取り、検索、採用ヘルパー、2つの限定スコープの書き込みにまたがる11のツールを登録する動作するスキャフォールド(README.mdpyproject.tomlsrc/ashby_recruiting_mcp/__init__.pysrc/ashby_recruiting_mcp/server.py)が収録されています。設計上、読み取り中心です。ステータスに相当するすべての変更は、監査証跡と承認ワークフローがすでに存在するAshby UIを通じて行われます。

使用すべきタイミング

採用チームが隣接する作業(アウトリーチの起草、スコアカードの要約、ハイヤリングマネージャーへの更新の構築)でClaudeを既に活用しており、「この候補者はどのステージにいるか」「今週動いていないアプリケーションはどれか」「このロールのオンサイトでの平均時間は何か」を調べるためにAshbyに戻るコンテキストスイッチが摩擦になっている場合に、このサーバーを選択してください。MCPサーバーはそのループを圧縮します。レクルーターはClaudeに留まり、質問を行い、会話にインラインでAshbyのライブデータを受け取り、作業を継続します。適切な対象は3名以上のレクルーターを持つ採用オペレーションとリクルーティングエンジニアリングのチームです。それ以下ではインストール/メンテナンスコストが質問ごとの節約を上回ります。

また、チームが他のClaude ネイティブの採用ワークフロー——面接デブリーフサマリースキル週次採用ダイジェスト採用ファネル異常検知——を構築している、または構築したい場合にも価値があります。これらのワークフローは、夜間エクスポートではなくオンデマンドでAshbyのライブステートを取得できることで恩恵を受けるからです。

使用すべきでないタイミング

採用チームが1名の場合、またはワークスペースにロールレベルで機密性が高いパイプライン(エグゼクティブサーチ、M&Aスタッフィング、未発表の組織再編)が含まれる場合はスキップしてください。AshbyのAPIキーは管理者スコープで動作するため、MCPサーバーを接続すると、すべての会話がすべての候補者への潜在的な読み取りアクセスを持ちます。APIにはレクルーターごとのACLがありません——スキャフォールドの ASHBY_ALLOWED_JOB_IDS のTODOが最も近い緩和策ですが、それはTODOです。ワークスペースがその公開を許容できない場合は、MCPインストールを専用の採用オペレーションマシンに限定するか、展開しないでください。

規制対象のスタックで候補者データをAnthropic APIを通じてルーティングすることをまだ承認していない場合もスキップしてください。EU候補者はGDPRデータ、カリフォルニア州候補者はCCPAデータです。Claudeを通じてメモを表示することで、規制データがサードパーティを通過します。まずAIポリシーのサインオフを取得してから展開してください。

採用がボリューム主導(レクルーターあたり週500件以上のアプリケーション)の場合もスキップしてください。その規模では、MCPコールの質問ごとのレイテンシ(1〜2秒、pipeline_velocity の場合はそれ以上)が複合的に悪化し、チームは同じ質問を事前にバッチ処理するダッシュボードの方が適しています。

セットアップ

完全な手順は apps/web/public/artifacts/mcp-server-ashby-recruiting/README.md にあります。短縮版:バンドルをクローンし、pip install -e . を実行し、candidatesReadcandidatesWriteapplicationsReadjobsReadopeningsReadinterviewsRead 権限でAshby APIキーを生成し、ASHBY_API_KEY と3つのチューニング環境変数を設定し、Claude Desktopの claude_desktop_config.json にサーバーを登録します。初回インストールに90分、ライブワークスペースに対してツールをサニティチェックするのにさらに30分を確保してください。アーティファクトの「Limits and TODOs」セクションには、本番稼働前に行う作業が列挙されています。

公開される内容

src/ashby_recruiting_mcp/server.py に定義された4つのバケットにまたがる11のツール:

  • オブジェクト読み取りget_candidateget_applicationget_jobget_opening — 素直なレコードフェッチ。
  • 検索search_candidates(query, limit?)list_applications(job_id, status?)list_jobs(status?) — カーソルページネーション、ヘルパーで最大20ページ上限。
  • 採用ヘルパーstale_candidates(days_inactive=30, job_id?) は現在のステージ別にグループ化してN日間アクティビティのないアクティブなアプリケーションを返します。pipeline_velocity(job_id) は設定されたルックバックウィンドウ(デフォルト90日)にわたってステージごとの平均日数を計算し、ファネルが詰まっている場所を表面化します。
  • 軽量書き込みadd_note(candidate_id, body) は候補者のアクティビティフィードにメモを追加し、add_tag(candidate_id, tag) は説明的なタグを適用します。ステージ進行なし、アプリケーションのアーカイブなし、オファー作成なし、候補者の削除なし。

エンジニアリングの選択

読み取り中心、ステータス書き込みなし。 軽量書き込みは意図的に追加的で影響範囲の小さな操作にスコープされています。メモとタグは説明的なものです——候補者をパイプラインで前進させず、下流の自動化をトリガーせず、レクルーターが2クリックで元に戻せます。ステージ変更、アーカイブ、オファー作成ルートは検討され却下されました。これらは影響範囲の大きな操作であり、Ashby UIは明示的な確認フローで保護されていますが、MCPツールには同等のガードがありません。UIに維持し、監査ストーリーをクリーンに保つ方が良いです。

コールごとに1つのHTTPクライアント。 スキャフォールドはリクエストごとに httpx.AsyncClient を開閉し、セッションを再利用しません。生スループットには最適ではありませんが、長期クライアントがイベントループより長く生存した際にMCPランタイムが歴史的に表面化してきたすべての共有状態バグを回避します。本番環境では、READMEのTODOで言及されている非同期ロック付きシングルトンクライアントとリトライミドルウェアに切り替えてください。

ページネーションは最大20ページ。 ashby_post_paginated は停止するまで最大20カーソルページをドレインします。Ashbyのデフォルトページサイズ100で2,000レコード——合理的な単一クエリには十分で、暴走したツールコールがワークスペースのレート制限予算を数分間占有するほど大きくはありません。ワークスペースが実際により多くを表示する必要がある場合は上限を調整しますが、より良い答えは通常より厳格なフィルターです。

ステージ名はすべてのコールで最新を読み取る。 pipeline_velocity はキャッシュするのではなく、各呼び出しで application.interviewStageChanges からパイプラインを再読み込みします。ステージ名はパイプライン間でずれます(「Phone Screen」から「Initial Call」への四半期ごとの名前変更は一般的)。古いキャッシュは混乱を招くラベルを返します。コストは1回の追加ラウンドトリップ。利点はレクルーターがラベルを信頼できることです。

監査姿勢は「明示的な追加のみ」。 すべての書き込みは名前に add_ を持つツールを通じて行われます。update_set_delete_ はありません。これにより監査ログのフィルタリングが簡単になります:MCPサーバーログで add_noteadd_tag をgrepすれば、AIがワークスペースに対して作成した変更の完全なインベントリになります。

コストの現実

3つの項目。どれも劇的ではありませんが、予算化する価値があります:

  • Claudeサブスクリプション。 個人向けClaude Proは$20/レクルーター/月。共有ワークスペース向けClaude Teamは$25/レクルーター/月。6名のレクルーターチームで$150/月。MCP自体はこの請求に何も追加しません。
  • サーバーのセルフホスト。 スキャフォールドはClaude Desktop内でstdioプロセスとして実行されます——ホスティングコストはゼロ。チームがホスト型MCPエンドポイント(マルチレクルーター、単一共有インストール)に移行する場合、現実的なコストはFly.ioまたはRenderの$5/月コンテナにオブザーバビリティを加えた額です。オールインで$10〜30/月。
  • Ashby APIクォータ。 AshbyのAPIはワークスペースごとにレート制限されています(公開ガイダンスは「合理的な範囲内に収める」ことで、実際の上限は毎分数百コール程度)。MCPを通じた1分に1回の質問を8時間実施するパワーユーザーは約480コール——上限を大幅に下回ります。pipeline_velocity が最も負荷が高い:1件の application.list コールに加えてアプリケーションごとに1件の interviewStageChanges コールを発行するため、200件のアプリケーションを持む求人は201回のコール操作になります。ワークスペース内のすべての求人でループしないでください。

6名のレクルーターチームが本格的に使用する場合の総計:$200/月未満。

主要な節約はレクルーターの時間です。このサーバーを接続したチームからの概算:「Ashbyに戻ってXを調べる」から1レクルーターあたり1日約15分を回収。6名のレクルーターで月約30時間——フル原価のレクルーターコスト(時給$100として)で月$3,000の能力が返ってきます。ドルの節約はドルのコストを1桁上回ります。チームが依然として展開不足なのは、ROIではなくインストールの摩擦が原因です。

成功基準

最初の1か月間、週次で監視する3つの指標:

  1. レクルーターあたり1日のMCPツールコール数。 目標:10〜30。10未満はレクルーターが実際に使用していないことを意味します(おそらく存在を忘れているか、早期のバグで諦めた)。50以上は、対話型ツールではなくスケジュールされたジョブにすべきワークフローが実行されていることを意味します。
  2. stale_candidates の減少。 週次で30日以上非アクティブなアクティブなアプリケーションの数を追跡します。展開の1か月以内に30〜50%減少するはずです——ヘルパーが作業を可視化し、可視化された作業は片付けられます。
  3. 「ClaudeはAshbyの作業に有用か」に関するレクルーターNPS。 1週目と4週目にサーベイします。4週目に明確に肯定的でない場合、インストールが壊れているか、間違ったツールがリリースされています——レクルーターに戻って、どの2つのツールを使用し、どの9つを無視しているかを尋ねてください。

代替手段との比較

AshbyエクスポートをペーストするカスタムClaude.aiプロンプト。 これがほとんどのチームの現状です:AshbyからCSVをエクスポートし、Claude会話に貼り付け、質問する。動作しますが追加コストはかかりません。ただし、ペーストした瞬間にデータが古くなり、レクルーターはエクスポート作業を毎回行い、コンテキストをAshbyに記録するパスがありません。MCPが勝る理由はデータがライブでループが往復であることです——ClaudeがAshbyを読み取り、(限定的に)書き戻せます。

Ashbyのネイティブ機能。 AshbyはAI搭載の候補者検索、サマリー、マッチングを提供しています。有用ですがAshby内にあります——レクルーターが他の作業でClaude内にいる場合は役立ちません。Ashby+Linear+Slackなどクロスツールの統合にも役立ちません。これが最も興味深いフロンティアです。レクルーターがClaudeを基盤にしたい場合はMCPが正しい選択。AshbyをベースにしたいならAshbyのネイティブAIが正しい選択。多くのチームは両方を求めています。

Zapierベースの接続。 Zapperは、Ashbyのイベントが発生したときにSlackに送信したりClaude.aiに通知したりできますが、Zapを使ったフローは単方向でイベント形式です。「上級バックエンドポジションの停滞候補者を表示して」といったアドホックな質問には答えられません。MCPは質問の形が対話型の場合に正しい選択で、Zapperは「Xが発生したら教えて」の場合に正しい選択です。

注意点

3つの名前付きの失敗モードと、各々に対するガード:

  • APIキーは管理者スコープで動作する。 このMCPが接続されたClaude インストールにアクセスできる人は誰でも、上級リーダーシップのパイプラインを含めてすべての候補者を読み取ることができます。対策:MCPインストールを採用チームのマシンのみにスコープし、セキュリティへの公式な書面での公開を文書化し、四半期ごとにキーをローテーションし、Claudeのインストールを特権エンドポイントとして扱います(共有ログイン不可、claude_desktop_config.json をコミット不可)。
  • 軽量書き込みはAshby承認ワークフローをバイパスする。 add_noteadd_tag はAPIを通じて直接書き込みます——Ashby UIで通常発火する承認をトリガーしません。対策:ステータスに相当するタグ(hiredoffer-extendeddo-not-hire)に軽量書き込みツールを使用しないでください。スキャフォールドの add_tag のツール説明にはこれが明示されており、採用オペレーションリードはオンボーディングでこれを強調すべきです。
  • pipeline_velocity はレート制限の大食い。 求人のパイプライン内のアプリケーションごとに1コールを発行します。500件のアプリケーションを持つ求人は501コールの操作であり、ワークスペースのレート制限予算を数分間占有して他の自動化に429として現れる可能性があります。対策:同時使用を上限設定し(求人ごとに1度に1名のレクルーター)、READMEのTODOである429への指数バックオフはチーム全体への展開前に必須です。

スタック

Ashby(ATS、データソース)。Claude DesktopまたはClaude Code(MCPホスト)。Python 3.11+のランタイム。mcp Pythonライブラリ(mcp>=1.2.0)、非同期HTTPクライアント用の httpx、バリデーション用の pydantic。データベースなし、キューなし、ブローカーなし——サーバーはステートレスでコールごとにすべてを再読み込みします。

Files in this artifact

Download all (.zip)