mcpField
A
AI candidate scoring via MCP. Score resumes against job descriptions with Claude — returns dimension scores, strengths, and gaps.

AI candidate scoring via MCP. Score resumes against job descriptions with Claude — returns dimension scores, strengths, and gaps.

本地服务
github.com/Spaceghost99AI 与智能体031 周前更新

关于 AI candidate scoring via MCP. Score resumes against job descriptions with Claude — returns dimension scores, strengths, and gaps.

hrmcp-server 面向人力资源和招聘团队,可用 Claude 按职位描述评估简历。它按四个维度返回加权分数,并根据输入内容列出优势与不足。

主要功能

  1. 01基于 Claude 评估简历
  2. 02四个维度分别评分
  3. 03支持自定义评分权重
  4. 04列出有依据的优势与不足
  5. 05提供托管 API 和自托管

适用场景

  1. 01按职位描述比较候选人
  2. 02针对岗位调整评分侧重
  3. 03查看候选人的优势与不足

MCP 相关

它以原生 MCP 服务形式向支持 MCP 的 Agent 框架提供候选人评分功能,无需额外封装。

配置

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

暂未收录安装方式

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

代码仓库

工具

还没有获取到工具列表

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

详细介绍

hrmcp-server

一个用于 HR 和招聘工作流的源码可用 MCP 服务。使用 Claude 根据职位描述为候选人评分,并返回结构化的维度分数、优势和不足。任何支持 MCP 的 Agent 框架都可以直接调用它。

托管 API — 无需运行任何内容即可使用:recruitapi.app 自托管 — 不到 15 分钟即可部署到 Railway(见下文)


端点

POST /score-candidate

根据职位描述为候选人的简历评分。

请求

{
  "resume_text": "...",
  "job_description": "...",
  "weights": {
    "skills_match": 0.40,
    "experience": 0.30,
    "industry_background": 0.20,
    "education": 0.10
  },
  "recency_window_years": 10
}
字段类型必填默认值
resume_textstring是—
job_descriptionstring是—
weightsobject否{skills_match: 0.40, experience: 0.30, industry_background: 0.20, education: 0.10}
recency_window_yearsinteger > 0否10

权重之和必须为 1.0。每个值必须介于 0.0 和 1.0 之间。 两个文本字段的长度上限均为 15,000 个字符。简历至少须有 50 个单词。

响应 — 200

{
  "overall_score": 82,
  "dimension_scores": {
    "skills_match": 88,
    "experience": 85,
    "industry_background": 74,
    "education": 70
  },
  "strengths": [
    "Five years of hands-on Python in production ML pipelines",
    "Led cross-functional team during platform migration"
  ],
  "gaps": [
    "No experience with Kubernetes",
    "MBA preferred; candidate holds a BS"
  ],
  "recency_window_used": 10,
  "model": "claude-sonnet-4-20250514",
  "warnings": []
}

所有分数均为 0–100 的整数。strengths 和 gaps 各包含 2–4 条字符串,且内容须基于简历和职位描述,而非泛泛而谈。

幂等性

传入 Idempotency-Key 标头,可将响应缓存 24 小时。使用相同键重试时会返回缓存的响应,不会调用模型,也不会扣除额度。

Idempotency-Key: req_01J8XYZ

GET /health
{ "status": "ok", "model": "claude-sonnet-4-20250514" }

身份验证

每次请求 /score-candidate 都需要 API 密钥。可通过以下任一方式传入:

X-API-Key: hrmcp_sk_...
Authorization: Bearer hrmcp_sk_...

购买额度后会发放密钥。请前往 hrmcp-server-production.up.railway.app/billing 获取。


速率限制

限制按 API 密钥在滚动时间窗口内计算,而非按固定时钟边界计算。

限制默认值
每分钟30 个请求
每天500 个请求
并发5 个进行中的请求

每个响应都包含当前限制状态:

X-RateLimit-Limit-Minute: 30
X-RateLimit-Remaining-Minute: 28
X-RateLimit-Reset-Minute: 1712000060
X-RateLimit-Limit-Day: 500
X-RateLimit-Remaining-Day: 497
X-RateLimit-Reset-Day: 1712041234

自托管部署可通过 RATE_LIMIT_ENABLED=false 完全禁用速率限制。


额度

每次成功调用 /score-candidate 都会扣除一个额度。额度按 100 个一组购买,每组 $5,有效期为 180 天。

状态代码含义
402credits_exhausted余额为零
402credits_expired尚有额度,但该组额度已过期

错误格式

所有错误都使用相同的封装格式:

{
  "error": {
    "code": "missing_required_field",
    "message": "One or more required fields are missing.",
    "detail": { "missing_fields": ["resume_text"] }
  }
}
代码状态描述
unauthorized401API 密钥缺失、无效或已撤销
rate_limit_exceeded429超出滚动窗口限制;请查看 Retry-After 标头
credits_exhausted402没有剩余额度
credits_expired402额度已过期
missing_required_field400缺少 resume_text 或 job_description
resume_too_short400简历少于 50 个单词
payload_too_large400输入超过 15,000 个字符
weights_invalid_sum400权重之和不为 1.0
weights_missing_keys400缺少一个或多个权重键
weights_negative_value400权重值不在 0.0–1.0 范围内
recency_window_invalid400recency_window_years 不是正整数
idempotency_key_invalid400Idempotency-Key 标头值无效
model_unavailable503Anthropic API 超时或发生故障
response_parse_failure500模型返回了无法解析的输出

警告不会导致请求失败,并会随 200 响应一同返回:

代码触发条件
non_english_detected简历或 JD 中含有非拉丁字符
job_description_thinJD 少于 30 个单词

自托管

部署到 Railway

在 Railway 上部署

  1. 点击上方按钮 — Railway 会克隆代码仓库并配置一个 Postgres 服务
  2. 添加 5 个必需的环境变量(见下文)
  3. 在 Stripe 控制面板中注册 POST /webhooks/stripe;将签名密钥粘贴到 STRIPE_WEBHOOK_SECRET
  4. 查看部署日志,确认出现 db_migrated 和 server_started
  5. 访问 /health 进行确认
在本地运行
git clone https://github.com/Spaceghost99/hrmcp-server.git
cd hrmcp-server
npm install
cp .env.example .env
# Fill in ANTHROPIC_API_KEY at minimum
npm run dev

无需设置 DATABASE_URL 即可进行评分。身份验证和计费需要 Postgres。


环境变量

以下 5 个变量为必需项,缺少时服务器会在启动时崩溃。

变量必需默认值描述
ANTHROPIC_API_KEY是—Anthropic API 密钥
DATABASE_URL仅生产环境—PostgreSQL 连接字符串(Railway 会提供此值)
STRIPE_SECRET_KEY仅生产环境—Stripe 密钥(sk_test_... 或 sk_live_...)
STRIPE_WEBHOOK_SECRET仅生产环境—Stripe Webhook 签名密钥(whsec_...)
PORT否3000Railway 会自动设置此值
NODE_ENV否development在 Railway 上设置为 production
ANTHROPIC_MODEL否claude-sonnet-4-20250514用于评分的模型
ANTHROPIC_TIMEOUT_MS否25000Anthropic API 超时时间,单位为毫秒
BCRYPT_ROUNDS否10用于密钥哈希的 bcrypt 成本因子
RATE_LIMIT_ENABLED否true设置为 false 可禁用速率限制
RATE_LIMIT_PER_MINUTE否30每个密钥按滚动分钟计算的限制
RATE_LIMIT_PER_DAY否500每个密钥按滚动天数计算的限制
RATE_LIMIT_CONCURRENT否5每个密钥允许的最大并发请求数
MAX_RESUME_CHARS否15000简历字符数上限
MAX_JD_CHARS否15000职位描述字符数上限
STRIPE_PRICE_LOOKUP_KEY否credits_100Stripe 价格查询键
CREDITS_BUNDLE_SIZE否100每次购买获得的点数
CREDITS_EXPIRY_DAYS否180点数过期天数
LOG_LEVEL否infoinfo 或 error
IDEMPOTENCY_TTL_SECONDS否86400幂等缓存的存活时间,单位为秒
APP_URL否http://localhost:3000公共基础 URL;用于计费链接

每个变量的描述请参阅 .env.example。


架构

src/
  index.ts                  — HTTP server, request routing, middleware wiring
  config.ts                 — Environment variable loading
  middleware/
    auth.ts                 — API key extraction and validation
    rateLimit.ts            — Rolling window rate limiter (in-memory)
    logger.ts               — Structured JSON logging
  billing/
    keys.ts                 — Key generation, hashing, verification (pure functions)
    db.ts                   — PostgreSQL pool, schema migration, all queries
    stripe.ts               — Checkout sessions, webhook handler, credit lifecycle
  tools/
    score-candidate/
      handler.ts            — Input validation, orchestration
      scorer.ts             — Anthropic API call, response parsing
      schema.ts             — Zod schemas and default weights
      prompt.ts             — System prompt and user prompt builder
  errors/
    codes.ts                — Error code constants
    envelope.ts             — createError / createWarning helpers

POST /score-candidate 的请求流程:

  1. 身份验证 — 提取密钥、通过 SHA-256 查找、使用 bcrypt 验证
  2. 速率限制 — 检查滚动分钟/天数/并发窗口
  3. 解析并验证请求正文
  4. 幂等处理 — 如果密钥匹配,则返回缓存的响应
  5. 扣除点数 — 在 Postgres 中原子执行 SELECT FOR UPDATE
  6. 评分 — 调用 Anthropic,解析并验证响应
  7. 如果存在幂等键,则缓存响应
  8. 添加 X-RateLimit-* 标头并发送响应
  9. 释放并发槽位并写入请求日志行

替代方案

还有其他托管候选人评分方案。hrmcp-server 源码可用、可自托管,并原生支持 MCP — 对于支持该协议的 Agent 框架,无需使用包装器。


许可证

本软件基于 Elastic License 2.0 授权。可免费使用、自托管和修改。不得将本软件作为托管或管理式服务提供给第三方。如需商业托管,请联系 [email protected]。

评论

支持 Markdown

第一次接触 MCP?

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

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