mcpField
H
HTTP Server with MCP Support

HTTP Server with MCP Support

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

HTTP Server with MCP Support について

Jake Gaylor の履歴書とプロフィールを基に、Web ページ、プレーンテキスト、MCP インターフェース、A2A エージェントを提供する Express/TypeScript サービスです。候補者情報の取得、職務適合性の評価、連絡の調整に AI を使う人向けです。

主な機能

  1. 01履歴書とプロフィール情報の取得
  2. 02面接質問の生成と職務適合性の評価
  3. 03候補者の希望条件データの提供
  4. 04空き時間の確認と面談予約
  5. 05MCP と A2A の両インターフェース

活用シーン

  1. 01AI クライアントで候補者の経験を検索
  2. 02職務記述に基づく適合性の評価
  3. 03空き時間の確認と面談予約
  4. 04明示的な依頼による候補者への連絡

MCP 対応

`/mcp` で Streamable HTTP と旧式の SSE を提供し、ローカルの 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 つのサーバーを複数のクライアントで再利用できます。