mcpField
H
HTTP Server with MCP Support

HTTP Server with MCP Support

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

关于 HTTP Server with MCP Support

这是一个以 Jake Gaylor 的简历和个人资料为基础的 Express 与 TypeScript 服务,同时提供网页、纯文本内容、MCP 接口和 A2A Agent。它面向希望让 AI 系统查询候选人经历、评估职位匹配度或安排沟通的用户。

主要功能

  1. 01提供简历与个人资料查询
  2. 02生成面试问题并评估职位匹配
  3. 03提供候选人筛选偏好数据
  4. 04查询空闲时段并安排通话
  5. 05同时提供 MCP 与 A2A 接口

适用场景

  1. 01让 AI 客户端查询候选人经历
  2. 02根据职位描述评估匹配情况
  3. 03查看时段并预约介绍通话
  4. 04通过指定请求联系候选人

MCP 相关

服务在 `/mcp` 提供 Streamable HTTP,并支持旧版 SSE;也可通过 stdio 本地运行。工具涵盖简历、链接、职位评估、联系和预约等操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。