阿什比·麦克普
MCP服务器 阿什比 ATS——专为候选人评估工作流程而设计。
该服务器通过 模型上下文协议,让人工智能代理审查候选人,阅读申请详情,并撰写评估说明。
先决条件
您需要一个Ashby API密钥:
- 转到Ashby管理员设置→ 集成→ API密钥
- 使用以下权限创建新的API密钥:
- candidatesRead --阅读候选人简介、申请、笔记、反馈 - jobsRead --阅读工作列表和详细信息 - interviewsRead --阅读面试阶段和计划 - candidatesWrite --添加注释、标签、移动应用程序阶段、存档应用程序 - hiringProcessMetadataRead --列出存档原因和电子邮件模板
安装
克劳德代码(推荐)
在终端中运行:
claude mcp add ashby -e ASHBY_API_KEY=your-api-key-here -- npx -y ashby-mcp@latest每当发布新版本时,此功能都会自动更新。
克劳德桌面
将此添加到您的Claude Desktop MCP配置中(Settings → Developer → Edit Config):
{
"mcpServers": {
"ashby": {
"command": "npx",
"args": ["-y", "ashby-mcp@latest"],
"env": {
"ASHBY_API_KEY": "your-api-key-here"
}
}
}
}这也会在每次重新启动时自动更新。
备选方案: 您可以下载 .mcpb 捆 然后双击安装——不需要终端。请注意,此方法将您固定到特定版本,不会自动更新。每次发布后都需要重新下载。其他MCP客户端
将上述JSON配置添加到客户端的MCP服务器配置中。
码头工人
构建映像,然后将其添加到MCP客户端配置中:
docker build -t ashby-mcp .{
"mcpServers": {
"ashby": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "ASHBY_API_KEY", "ashby-mcp"],
"env": {
"ASHBY_API_KEY": "your-api-key-here"
}
}
}
}来源
git clone https://github.com/dewierwan/ashby-mcp.git && cd ashby-mcp
npm install
npm run build然后将您的MCP客户端指向 node dist/index.js 随着 ASHBY_API_KEY 环境变量集。
工具
所有工具都返回双格式响应:一个人类可读的摘要,后面是结构化的JSON。
工作
ashby_list_jobs
列出带有ID、职位、部门、位置和状态的空缺职位。
| 参数 | 类型 | 默认值 | 说明 | ||||
|---|---|---|---|---|---|---|---|
status | `"Open" \ | "Closed" \ | "Archived" \ | "Draft" \ | "All"` | "Open" | 按作业状态筛选 |
limit | number (1-100) | 25 | 每页最大结果数 | ||||
cursor | string | -- | 来自上一个响应的分页光标 |
ashby_get_job_details
完整的工作细节,包括描述和面试计划阶段。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
job_id | string | 是 | 作业ID(UUID) |
ashby_get_pipeline_summary
管道概述,包括每个阶段、每个职位的候选人数量。
| 参数 | 类型 | 默认值 | 说明 | ||
|---|---|---|---|---|---|
job_id | string | -- | 一个作业的摘要。省略所有工作。 | ||
status | `"Open" \ | "Closed" \ | "All"` | "Open" | 包括哪些工作 |
候选人
ashby_get_candidate
全面的候选人资料,所有申请均已解决。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
candidate_id | string | 是 | 候选人ID(UUID) |
ashby_get_candidate_notes
关于候选人的所有笔记。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
candidate_id | string | 是 | 候选人ID(UUID) |
ashby_search_candidates
按姓名或电子邮件搜索候选人。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
query | string | -- | 要搜索的候选人姓名(必填) |
email | string | -- | 可选电子邮件(带名称的AND逻辑) |
limit | number (1-100) | 25 | 最大结果 |
ashby_add_candidate_note
为候选人添加评估说明。招聘团队可见。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
candidate_id | string | 是 | 候选人ID(UUID) |
note | string | 是 | 注释内容(纯文本) |
ashby_add_candidate_tag
标记候选人(例如“强有力的雇佣”、“需要审查”)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
candidate_id | string | 是 | 候选人ID(UUID) |
tag_id | string | 是 | 阿什比管理员设置中的标签ID(UUID) |
ashby_get_resume
下载并提取候选人简历中的文本(PDF,文本)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file_handle | string | 是 | 候选人的文件句柄 fileHandles 阵列 |
file_name | string | 否 | 原始文件名(有助于确定格式) |
应用程序
ashby_list_candidates_for_job
列出特定职位的候选人/申请,包括阶段和状态。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
job_id | string | -- | 作业ID(UUID)(必填) |
limit | number (1-100) | 25 | 每页最大结果数 |
cursor | string | -- | 分页光标 |
ashby_get_application_details
完整的应用程序,包括阶段历史、反馈和标准评估。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
application_id | string | 是 | 应用程序ID(UUID) |
ashby_get_application_form_submission
候选人提交的申请表回复(筛选问题、求职信等)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
application_id | string | 是 | 应用程序ID(UUID) |
ashby_list_applications
使用日期、状态、阶段和源过滤器列出所有作业中的应用程序。
| 参数 | 类型 | 默认值 | 说明 | ||||
|---|---|---|---|---|---|---|---|
created_after | string (ISO日期时间) | -- | 仅限此时间之后的应用程序 | ||||
created_before | string (ISO日期时间) | -- | 仅限此时间之前的应用程序 | ||||
job_id | string | -- | 筛选到特定作业 | ||||
status | `"Active" \ | "Archived" \ | "Hired" \ | "Lead" \ | "All"` | "All" | 按状态筛选 |
stage_type | `"Lead" \ | "PreInterviewScreen" \ | "Interview" \ | "Offer" \ | "All"` | -- | 按阶段类型筛选 |
stage_name | string | -- | 按确切阶段名称筛选 | ||||
source | string | -- | 按来源筛选(不区分大小写的子字符串) | ||||
limit | number (1-100) | 25 | 最大结果 | ||||
cursor | string | -- | 分页光标 |
ashby_archive_application
将申请存档,并注明原因和可选的拒绝电子邮件。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
application_id | string | -- | 应用程序ID(UUID)(必填) |
archive_reason_id | string | -- | 原因ID来自 ashby_list_archive_reasons |
send_email | boolean | false | 发送拒绝电子邮件(需要 email_template_id) |
email_template_id | string | -- | 模板ID来自 ashby_list_email_templates |
ashby_bulk_archive
一次归档多个应用程序(最多25个)。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
application_ids | string[] (1-25) | -- | 应用程序ID(必填) |
archive_reason_id | string | -- | 原因ID,适用于所有 |
send_email | boolean | false | 发送拒绝电子邮件 |
email_template_id | string | -- | 拒绝电子邮件的模板ID |
访谈
ashby_list_interview_stages
列出所有面试计划中的所有面试阶段。没有参数。
ashby_list_upcoming_interviews
列出即将到来和待定的面试时间表。
| 参数 | 类型 | 默认值 | 说明 | ||||
|---|---|---|---|---|---|---|---|
start_after | string (ISO日期时间) | 现在 | 仅在此时间之后进行面试 | ||||
start_before | string (ISO日期时间) | -- | 仅限此时间之前的面试 | ||||
status | `"Scheduled" \ | "NeedsScheduling" \ | "Complete" \ | "Cancelled" \ | "All"` | "All" | 按状态筛选 |
limit | number (1-100) | 25 | 最大结果 |
工作流程
ashby_move_application_stage
将申请转移到不同的面试阶段。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
application_id | string | 是 | 应用程序ID(UUID) |
stage_id | string | 是 | 目标阶段ID来自 ashby_list_interview_stages |
ashby_get_feedback
提交了申请的反馈/记分卡。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
application_id | string | 是 | 应用程序ID(UUID) |
ashby_list_archive_reasons
列出可用的存档/拒绝原因。没有参数。
ashby_list_email_templates
列出拒绝电子邮件的电子邮件模板。没有参数。
安全舱口
对于上述专用工具未涵盖的任何内容(例如。 offer.list, user.list, department.list, interviewPlan.list, candidate.update),使用下面的两个通用工具。它们与其他工具共享相同的身份验证、重试和超时。
ashby_call_api
直接调用任何Ashby API端点。返回原始响应信封,包括 success, results, moreDataAvailable,以及错误详细信息。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
endpoint | string | 是 | 端点路径,例如。 "offer.list", "user.list", "candidate.update".没有前导斜线。 |
params | object | 没有需要POST的JSON正文。默认为 {}. |
标记 destructiveHint: true 因此,Claude在运行调用之前会先处理它(通用直通可能会碰到写端点)。
ashby_get_api_docs
返回Ashby API的精心策划的引用:基本URL、身份验证、响应信封、分页、按资源分组的端点索引和公共gotchas。没有参数。
之前叫这个 ashby_call_api 如果您不确定要使用哪个端点或参数名称。完整官方参考: .
示例提示
Show me all open engineering jobs.
List the candidates for the Senior Backend Engineer role and summarize where each one is in the pipeline.
Pull up the full profile for candidate Jane Smith — I want to see her resume info, application history, and any existing notes.
Review the feedback submitted for application abc-123 and summarize the interviewer evaluations.
Add a note to candidate xyz-456: "Strong technical skills demonstrated in system design round. Recommend advancing to final interview."
Move application abc-123 to the "Final Interview" stage.
Read the resume for candidate Jane Smith and summarize her experience.
How many people applied this week?
What does our pipeline look like for the Community Lead role?
Show me all candidates currently in the Work test stage.
Archive John Smith's application for the Senior Engineer role with reason "Not enough experience" and send the standard rejection email.
Show me the available archive reasons and rejection email templates.
Bulk archive all candidates in Application Review for the closed Designer role.隐私
- 此服务器将请求代理到 API阿什比 使用您自己的API密钥。
- 除了Ashby的API端点之外,没有任何数据被存储、记录或发送到任何其他地方(
api.ashbyhq.com). - 您的API密钥存储在您的机器本地,不会传输给任何第三方。
测试
验证API连接
ASHBY_API_KEY=your-key npm run test-api使用MCP检查员进行测试
ASHBY_API_KEY=your-key npx @modelcontextprotocol/inspector node dist/index.js直接运行
ASHBY_API_KEY=your-key node dist/index.js服务器通过stdio进行通信——它将静默启动并等待MCP协议消息。
发展
npm install
npm run build # compile TypeScript to dist/
npm test # run tests
npm start # run the built server