mcpField
H
HTTP Server with MCP Support

HTTP Server with MCP Support

ローカル
github.com/jhgaylorその他111 週間前に更新

HTTP Server with MCP Support について

Jake Gaylor の履歴書やプロフィールを人や AI システムに提供する、Express と TypeScript によるサービスです。採用担当者や候補者を評価する AI クライアント向けで、履歴書 JSON を起動時に取得し、Web、テキスト、MCP、A2A の各インターフェースで公開します。

主な機能

  1. 01Webページとテキスト形式の履歴書
  2. 02候補者情報を取得する MCP ツール
  3. 03A2A エージェントカードとエンドポイント
  4. 04職務適合性評価と面接質問の生成
  5. 05空き状況の確認と面談予約

活用シーン

  1. 01AI クライアントから経歴やリンクを取得
  2. 02求人内容に基づく候補者の適合性評価
  3. 03構造化された選考情報と面談枠の確認

MCP 対応

Streamable HTTP または従来の SSE 経由で、履歴書やリンクの取得、職務評価、面接質問の生成、日程調整ツールを公開します。npx @jhgaylor/me-mcp を使った stdio 接続にも対応します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

ai.jakegaylor.com

Jake Gaylor の情報を AI システムが読み取れるようにする、Express + TypeScript サーバーです。1 つのデプロイで、同じ履歴書と略歴を基にした 4 つのインターフェースを提供します。

  • Web ページ(GET /):人間向け
  • プレーンテキストのコンテキスト(GET /llms.txt):LLM とクローラー向け
  • MCP サーバー(/mcp):人間が設定した AI クライアント向け
  • A2A エージェント(/a2a + エージェントカード):独自にサイトを検出するエージェント向け

履歴書の内容は起動時に jakegaylor.com/resume.json から取得して Markdown に変換されるため、手作業で編集しなくても、すべてのインターフェースに最新の内容が反映されます。

エンドポイント

エンドポイント提供内容
GET /Web ページ
GET /llms.txt履歴書 + 基本的な信条(プレーンテキスト)
POST /mcp(+ GET/DELETE)Streamable HTTP 経由の MCP
GET /sse + POST /messages従来の SSE トランスポート経由の MCP
GET /.well-known/agent-card.jsonA2A エージェントカード(v1.0。従来のクライアント向けに v0.3 へ変換)。キーが設定されている場合は JWS 署名付き
GET /.well-known/jwks.jsonカード署名の検証用公開鍵
POST /a2aA2A JSON-RPC エンドポイント(v1.0 + v0.3 互換)

MCP

@jhgaylor/candidate-mcp-server を基盤として構築されています。公開されるツール:

get_resume_text、get_resume_url、get_linkedin_url、get_github_url、get_website_url、get_website_text、contact_candidate(Jake にメールを送信)、generate_interview_questions、assess_role_fit、get_candidate_preferences(構造化されたスクリーニングデータ。src/preferences.ts を参照)、get_availability + book_intro_call(A2A スキルと同じ仮予約確認および 1 日あたりの上限ガードレールを備えた、Cal.com を利用したスケジュール調整)

クライアントを https://ai.jakegaylor.com/mcp に接続するか、ローカルで stdio 経由により npx @jhgaylor/me-mcp を実行してください。

A2A

@a2a-js/sdk を基盤とする A2A v1.0 エージェントです。v0.3 互換レイヤーが有効になっています。A2A-Version ヘッダーを送信しないクライアントは、プロトコル上 v0.3 として扱われます。また、デプロイ済みのクライアントのほとんどは、現在も v0.3 を使用しています。カードは同じ URL で両方のバージョンを案内します。

スキル:

  • about-jake — 履歴書、略歴、スクリーニングデータに基づき、低コストの LLM を使用して Jake の経験に関する質問に回答します。LLM キーが設定されていない場合や呼び出しに失敗した場合は、履歴書全体を Markdown で返すため、どちらの場合もスキルの契約が維持されます。
  • candidate-preferences — 構造化されたスクリーニングデータ(職種、レベル、勤務地、転居、リモート勤務、就労資格、報酬に関する方針、稼働状況、履歴書へのリンク)を、JSON データパートと Markdown で返します。スクリーニング/日程調整関連のキーワード、または metadata.skill によって起動します。値は src/preferences.ts にあります。
  • assess-role-fit — 職務記述書(JD: プレフィックス、または職務記述書形式の長文テキスト)を送信すると、率直な LLM 評価による適合性評価が返されます。判定、履歴書の引用付きの強み、率直に示した不足点、日程などの条件確認、面接での質問案が含まれます。LLM を利用できない場合は履歴書を返します。
  • schedule-intro-call — 日程調整の意図を含むメッセージには、セルフホストされた Cal.com(cal.jakegaylor.com、公開予約エンドポイント。ライセンスが必要な API は不要)の空き枠を返します。BOOK: <slot> | <email> | <name> | <note> で予約を作成します。ガードレール:予約には Jake の確認が必要(Cal.com 標準機能)、副作用の実行には明示的な BOOK: プレフィックスが必要、1 日あたりの試行回数に上限あり。設定は src/calcom.ts の CAL_* 環境変数で行います。
  • connect-via-mcp — MCP に言及するメッセージには、より豊富な MCP インターフェースへの接続手順を返します。
  • contact-jake — CONTACT: で始まるメッセージをメールで Jake に転送します。明示的なプレフィックス、または metadata.skill = "contact-jake" がある場合に限り、メール送信が実行されます。

例:

curl -X POST https://ai.jakegaylor.com/a2a \
  -H "Content-Type: application/json" -H "A2A-Version: 1.0" \
  -d '{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{
        "messageId":"m1","role":"ROLE_USER",
        "parts":[{"text":"What is Jake's experience with Kubernetes?"}]}}}'

設定

環境変数用途
PORTHTTP ポート(デフォルトは 3000)
RESEND_API_KEYResend SMTP 経由のメール(設定されている場合に優先)
EMAIL_FROMResend の送信元アドレス(ドメインは Resend で認証済みである必要があります)
MAILGUN_API_KEYMailgun 経由のメール(Resend が設定されていない場合のフォールバック)
OPENROUTER_API_KEYOpenRouter 経由の about-jake 用 LLM(設定されている場合に優先)
OPENAI_API_KEYOpenAI を直接利用する about-jake 用 LLM(フォールバック)
LLM_MODELモデルの上書き(デフォルトは OpenRouter で openai/gpt-5.4-nano、OpenAI で gpt-5.4-nano)
A2A_BASE_URLエージェントカードに埋め込まれる公開ベース URL(デフォルトは https://ai.jakegaylor.com)
A2A_SIGNING_KEY_JWKエージェントカードに署名する秘密 ES256 JWK(kid を含む)。未設定の場合は署名なしのカードを配信します
POSTHOG_API_KEYサーバー側のエージェントトラフィック分析(カードの取得、MCP/A2A リクエスト、スキルのルーティング)。未設定の場合、分析は無効です
POSTHOG_HOSTPostHog エンドポイント(デフォルトは https://us.i.posthog.com)

メールキーが設定されていない場合、contact_candidate/contact-jake は適切に失敗を報告します。LLM キーが設定されていない場合、about-jake は完全に決定論的に動作します。

開発

npm install
npm run build        # tsc
npm run dev          # stdio transport, auto-reload
npm run dev:web      # HTTP transport on :3000, auto-reload
src/
  ├── index.ts           # Entry point; picks stdio or HTTP transport
  ├── express.ts         # HTTP server: web, MCP, A2A mounting
  ├── a2a.ts             # A2A agent card, executor, skills
  ├── preferences.ts     # Structured screening data (edit values here)
  ├── stdio.ts           # STDIO transport for MCP
  ├── config.ts          # Server + candidate config; fetches resume at boot
  ├── resumeMarkdown.ts  # JSON Resume → markdown renderer
  └── types.ts           # Shared types

デプロイ

main へのプッシュをトリガーとして、GitHub Actions がマルチアーキテクチャの Docker イメージ(jhgaylor/jake-gaylor-com-mcp-server)をビルドします。その後、ワークフローは k8s/kustomization.yaml を新しい sha-<commit> タグに固定し、変更をコミットしてリポジトリに戻します。Flux がリポジトリを監視し、home-cloud k3s クラスターでデプロイをロールアウトします。実行時のシークレットは InfisicalSecret(k8s/infisicalsecret.yaml を参照)経由で Infisical から取得され、envFrom を通じてポッドに渡されます。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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