mcpField
H
HTTP Server with MCP Support

HTTP Server with MCP Support

本地服务
github.com/jhgaylor其他111 周前更新

关于 HTTP Server with MCP Support

这是一个 Express 与 TypeScript 服务,将 Jake Gaylor 的简历和个人资料提供给人类及 AI 系统,面向招聘方和希望了解候选人的 AI 客户端。它从简历 JSON 获取内容,并同时提供网页、文本、MCP 与 A2A 接口。

主要功能

  1. 01网页与纯文本简历接口
  2. 02MCP 工具查询候选人资料
  3. 03A2A Agent 卡片与接口
  4. 04角色匹配评估及面试问题生成
  5. 05查询并预约介绍通话

适用场景

  1. 01让 AI 客户端查询候选人的经历与链接
  2. 02根据职位描述评估候选人匹配度
  3. 03获取结构化筛选信息和可预约时段

MCP 相关

服务通过 Streamable HTTP 或旧版 SSE 暴露简历查询、链接获取、角色匹配、面试问题生成及预约等工具。客户端也可通过 stdio 使用 npx @jhgaylor/me-mcp。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

ai.jakegaylor.com

一个基于 Express + TypeScript 的服务,让 AI 系统能够理解 Jake Gaylor。一次部署即可通过四种接口访问同一份简历和个人简介:

  • 网页(GET /),供人类查看
  • 纯文本上下文(GET /llms.txt),供大模型和爬虫使用
  • MCP 服务(/mcp),供人类配置的 AI 客户端使用
  • A2A Agent(/a2a + Agent 卡片),供自主发现此网站的 Agent 使用

服务启动时会从 jakegaylor.com/resume.json 获取简历内容并渲染为 Markdown,因此所有接口始终保持最新,无需手动编辑。

端点

端点提供内容
GET /网页
GET /llms.txt纯文本格式的简历和核心信念
POST /mcp(+ GET/DELETE)基于 Streamable HTTP 的 MCP
GET /sse + POST /messages基于旧版 SSE 传输的 MCP
GET /.well-known/agent-card.jsonA2A Agent 卡片(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(基于 Cal.com 的日程安排,采用与 A2A 技能相同的待确认和每日上限防护机制)

将客户端连接到 https://ai.jakegaylor.com/mcp,或通过 npx @jhgaylor/me-mcp 在本地通过 stdio 运行。

A2A

一个基于 @a2a-js/sdk 构建的 A2A v1.0 Agent,并启用了 v0.3 兼容层——根据协议,未发送 A2A-Version 标头的客户端会被视为使用 v0.3,而目前大多数已部署的客户端仍使用该版本。卡片会在同一 URL 上声明支持这两个版本。

技能:

  • about-jake — 使用基于简历、个人简介和筛选数据的小型大模型回答有关 Jake 经验的问题。如果未配置大模型密钥或调用失败,则会回退为返回完整的 Markdown 简历,确保技能契约始终成立。
  • candidate-preferences — 返回结构化筛选数据(职位类型、级别、地点、搬迁、远程办公、工作许可、薪酬态度、可工作时间、简历链接),格式为 JSON 数据部分加 Markdown。由筛选/后勤相关关键词或 metadata.skill 触发。值存储在 src/preferences.ts 中。
  • assess-role-fit — 发送职位描述(使用 JD: 前缀,或任何较长且符合职位描述格式的文本),即可获得由大模型评估的真实匹配度:结论、附有简历引用的优势、明确列出的差距、后勤条件核对,以及建议的面试问题。如果没有可用的大模型,则回退为返回简历。
  • schedule-intro-call — 表达日程安排意图的消息会返回自托管 Cal.com(cal.jakegaylor.com,公开预约端点,无需授权 API)的可选时段;BOOK: <slot> | <email> | <name> | <note> 会创建预约。防护机制:预约需要 Jake 确认(由 Cal.com 原生支持)、必须使用明确的 BOOK: 前缀才会执行副作用,并设有每日尝试次数上限。通过 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_KEY通过 Resend SMTP 发送邮件(设置后优先使用)
EMAIL_FROMResend 的发件地址(域名必须在 Resend 中完成验证)
MAILGUN_API_KEY通过 Mailgun 发送邮件(未配置 Resend 时作为备用方案)
OPENROUTER_API_KEY通过 OpenRouter 为 about-jake 提供大模型(设置后优先使用)
OPENAI_API_KEY直接通过 OpenAI 为 about-jake 提供大模型(备用方案)
LLM_MODEL覆盖模型(默认值:OpenRouter 上为 openai/gpt-5.4-nano,OpenAI 上为 gpt-5.4-nano)
A2A_BASE_URL写入 Agent 卡片的公开基础 URL(默认值为 https://ai.jakegaylor.com)
A2A_SIGNING_KEY_JWK用于签署 Agent 卡片的私有 ES256 JWK(需包含 kid);未设置时提供未签名的卡片
POSTHOG_API_KEY服务端 Agent 流量分析(卡片获取、MCP/A2A 请求、技能路由);未设置时会停用分析
POSTHOG_HOSTPostHog 端点(默认值为 https://us.i.posthog.com)

未设置任何邮件密钥时,contact_candidate/contact-jake 会妥善报告失败。未设置任何大模型密钥时,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 集群上滚动更新部署。运行时密钥由 Infisical 通过 InfisicalSecret 提供(参见 k8s/infisicalsecret.yaml),并通过 envFrom 注入 Pod。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。