招聘CRM MCP

MCP(模型上下文协议)服务器 招聘CRM,使人工智能助手能够搜索候选人、查看职位和管理招聘工作流程。
快速开始
一键安装(推荐)
macOS/Linux --在终端中运行:
curl -LsSf https://raw.githubusercontent.com/ebragas/recruitcrm-mcp/main/install.sh | bash视窗 --在PowerShell中运行:
powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/ebragas/recruitcrm-mcp/main/install.ps1 | iex"安装程序将:
- 安装
uv如果你没有 - 提示您的Recruit CRM API密钥
- 备份现有的Claude Desktop配置
- 添加招聘CRM MCP服务器条目
Want to review the script first?
macOS/Linux:
curl -LsSf https://raw.githubusercontent.com/ebragas/recruitcrm-mcp/main/install.sh -o install.sh
cat install.sh # review the script
bash install.sh窗户:
Invoke-WebRequest -Uri https://raw.githubusercontent.com/ebragas/recruitcrm-mcp/main/install.ps1 -OutFile install.ps1
Get-Content install.ps1 # review the script
powershell -ExecutionPolicy Bypass -File .\install.ps1已有的uv?您可以跳过引导程序,直接运行安装程序: ``uvx --from recruit-crm-mcp recruit-crm-mcp-install``
手动设置
如果您更喜欢手动配置,请添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"recruit-crm": {
"command": "uvx",
"args": ["--refresh-package", "recruit-crm-mcp", "recruit-crm-mcp"],
"env": {
"RECRUIT_CRM_API_KEY": "your-api-key-here"
}
}
}
}为什么--refresh-package? 没有它,uvx缓存已安装的venv并无限期重用它——即使在我们发布错误修复后,您也会继续使用先安装的版本。旗帜部队uvx在每次启动Claude Desktop时(约100毫秒热)重新获取包的PyPI索引条目,并在可用时提取较新版本。无需运行任何操作即可自动更新。
安装预发布(测试)版本
预发布版本(例如。 0.16.0rc1)发布到PyPI进行内部 测试。他们是 不 由默认安装程序或裸机拾取 uvx recruit-crm-mcp --你必须明确地固定它们。
要从命令行运行一次预发布,请执行以下操作:
uvx recruit-crm-mcp@0.16.0rc1要使用Claude Desktop的预发行版,请编辑 claude_desktop_config.json 并更改 args 输入以包含版本号:
{
"mcpServers": {
"recruit-crm": {
"command": "uvx",
"args": ["recruit-crm-mcp@0.16.0rc1"],
"env": {
"RECRUIT_CRM_API_KEY": "your-api-key-here"
}
}
}
}完全退出并重新打开Claude Desktop(应用程序继续在dock中运行 关闭窗户后)。
回滚到稳定状态,set args 回到 ["--refresh-package", "recruit-crm-mcp", "recruit-crm-mcp"] (或固定一个特定的稳定点,如 ["recruit-crm-mcp@0.15.0"])并重新启动克劳德桌面。
为什么其他用户是安全的。uvx的默认解析器策略为--prerelease=if-necessary:除非没有稳定版本,否则跳过预发布 版本符合规范。因为recruit-crm-mcp有一个稳定 在PyPI上发布,unpinneduvx recruit-crm-mcp默认情况下 安装程序的配置解析为最新的稳定版本,并且永远不会选择 预发布。只有一个明确的别针@0.16.0rc1选择加入。
发展
uv sync # install dependencies
make test # run tests
make lint # run linter
make check # run lint + tests工具
| 工具 | 说明 |
|---|---|
ping | 运行状况检查-验证服务器正在运行并且配置了API密钥 |
候选人
| 工具 | 说明 |
|---|---|
search_candidates | 按姓名、电子邮件、领英、电话、州、国家或创建/更新日期范围搜索候选人 |
get_candidate | 通过slug/ID获取候选人的完整个人资料详细信息 |
create_candidate | 创建新的候选人记录 |
update_candidate | 更新现有候选人的标准字段 |
set_candidate_custom_fields | 在不接触标准字段的情况下,为候选人设置自定义字段值 |
工作
| 工具 | 说明 |
|---|---|
list_jobs | 按逆时间顺序列出工作申请 |
search_jobs | 按状态、姓名、城市、国家、公司、所有者或创建/更新日期范围搜索职位 |
get_job | 通过slug/ID获取作业的完整详细信息 |
create_job | 创建新的职位申请(需要姓名、职位空缺、company_slug、contact_slug,描述、货币、申请表标志) |
update_job | 更新现有作业上的标准字段 |
set_job_custom_fields | 在作业中设置自定义字段值,而不接触标准字段 |
get_assigned_candidates | 列出分配给某个工作的候选人(可选按招聘阶段筛选) |
联系人
| 工具 | 说明 |
|---|---|
search_contacts | 按姓名、电子邮件、领英、电话、公司、所有者或日期范围搜索联系人 |
get_contact | 通过slug获取联系人的完整详细信息 |
create_contact | 创建新的联系人记录 |
update_contact | 更新现有联系人的标准字段 |
set_contact_custom_fields | 在联系人上设置自定义字段值,而不接触标准字段 |
公司
| 工具 | 说明 |
|---|---|
search_companies | 按名称、所有者、限制标志或日期范围搜索公司(支持排序和精确匹配) |
get_company | 通过slug获取公司的完整详细信息 |
create_company | 创建新的公司记录 |
update_company | 更新现有公司的标准字段 |
set_company_custom_fields | 在不接触标准字段的情况下在公司上设置自定义字段值 |
笔记/任务/会议
| 工具 | 说明 |
|---|---|
search_notes | 按以下方式搜索笔记 added_from/to 和 updated_from/to |
get_note | 按ID获取备注 |
create_note | 创建附加到候选人、工作、联系人或公司的注释 |
delete_note | 按ID删除注释 |
search_tasks | 按标题、所有者和创建/更新/开始日期范围搜索任务 |
get_task | 按ID获取任务 |
create_task | 创建附加到相关实体的任务,并可选择提醒 |
update_task | 更新现有任务上的字段 |
search_meetings | 按标题、所有者和创建/更新/开始日期范围搜索会议 |
get_meeting | 按ID获取会议 |
log_meeting | 记录(创建)一个包含与会者和时间的相关实体会议 |
update_meeting | 更新现有会议上的字段 |
作业
| 工具 | 说明 |
|---|---|
assign_candidate | 为候选人分配工作 |
unassign_candidate | 删除候选人的工作分配 |
update_hiring_stage | 在工作中移动候选人的招聘阶段 |
文件
| 工具 | 说明 |
|---|---|
upload_file | 将公共URL文件附加到候选人、公司、联系人或职位 |
用户/查询
| 工具 | 说明 |
|---|---|
list_users | 列出团队成员/用户 |
list_note_types | 枚举笔记类型ID和标签 |
list_meeting_types | 枚举会议类型ID和标签 |
list_task_types | 枚举任务类型ID和标签 |
list_hiring_pipelines | 列出帐户中配置的招聘渠道 |
list_hiring_pipeline_stages | 招聘流程的各个阶段(pipeline_id=0=master) |
list_contact_stages | 列出销售渠道阶段(接触阶段) |
list_industries | 列出账户中可用的行业 |
list_company_custom_fields | 公司的自定义字段定义 |
list_contact_custom_fields | 联系人的自定义字段定义 |
list_job_custom_fields | 作业的自定义字段定义 |
list_candidate_custom_fields | 候选人的自定义字段定义 |
反馈
| 工具 | 说明 |
|---|---|
report_issue | 构建一个预填充的GitHub Issues URL,用户可以单击该URL提交错误报告 |
资源
| 资源 | 描述 |
|---|---|
recruitcrm://candidate/{id}/resume | 获取候选人的简历URL |
recruitcrm://job/{id}/description | 获取完整的职位描述 |
配置
在MCP客户端配置中设置环境变量(例如。 claude_desktop_config.jsons env 块):
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
RECRUIT_CRM_API_KEY | 是 | - | 招募CRM API令牌。 |
RECRUIT_CRM_MCP_SENTRY_DSN | no | unset | 您自己的哨兵项目DSN。如果设置,工具调用异常和每工具使用遥测将自动报告给该项目。看 错误报告 在......下面 |
SENTRY_DSN | no | unset | 回退DSN(如果已全局导出)。 RECRUIT_CRM_MCP_SENTRY_DSN 优先。 |
RECRUIT_CRM_MCP_ENV | 没有 | production | 哨兵环境标签。 |
RECRUIT_CRM_MCP_SENTRY_TRACES_RATE | 没有 | 1.0 | 哨兵追踪采样率(0.0–1.0)。默认为全采样,因此MCP仪表板会立即填充。降低它(例如。 0.2)如果你的哨兵配额很紧。集 0.0 在保持错误捕获的同时禁用跟踪。 |
错误报告
两个互补的、完全可选的渠道来解决问题:
1. report_issue MCP工具(始终可用)
当出现问题并且您想发送结构化的错误报告时,请Claude“报告此问题”或“提交错误”。MCP会公开一个 report_issue 构建预填充的GitHub Issues URL的工具——Claude返回链接,您单击它,GitHub打开预填充摘要、最后一个错误和您的环境详细信息的新问题表单。像其他问题一样从浏览器提交。适用于任何GitHub帐户;MCP中没有令牌,不需要合作者访问,回购是公开的。
2.哨兵自动捕获(携带自己的DSN)
如果你想要被动可观察性——使用堆栈跟踪、span上下文和HTTP面包屑自动捕获每个工具调用异常,再加上一个填充的MCP仪表板,显示你的用户实际调用了哪些工具——set RECRUIT_CRM_MCP_SENTRY_DSN 转到您控制的Sentry项目DSN。在没有设置DSN(默认设置)的情况下,MCP对Sentry进行零网络呼叫。
这是 严格携带自己的DSN。我们不发布或嵌入项目DSN。如果你想要这个,注册一个免费的Sentry帐户,创建一个Python项目,复制它的DSN,并将其放入你的MCP客户端配置中:
{
"mcpServers": {
"recruit-crm": {
"command": "uvx",
"args": ["--refresh-package", "recruit-crm-mcp", "recruit-crm-mcp"],
"env": {
"RECRUIT_CRM_API_KEY": "...",
"RECRUIT_CRM_MCP_SENTRY_DSN": "https://@.ingest.sentry.io/
"
}
}
}
}你得到了什么 *你的* 哨兵项目:
- 错误。 工具名称、异常类型、堆栈跟踪、HTTPX面包屑(URL和状态代码)、MCP请求/会话ID和包版本。
- 使用遥测技术。 每个工具调用都被捕获为一个跨度(
traces_sample_rate默认为1.0),标记有工具名称、参数、结果、持续时间和传输。这些填充哨兵 MCP仪表板 --每个工具请求计数、错误率、p95延迟、客户端分布。这就是你如何找出你的用户实际使用的工具。
通过工具(候选人姓名、电子邮件、公司信息)流动的招聘CRM数据将出现在span和事件有效载荷中——这就是重点,因为如果没有触发错误的数据,错误和使用分析都是无用的。因为DSN是你的,所以数据只会进入你的哨兵项目。
如果交易量是一个问题(免费哨兵计划每月上限为5K个事件),请设置 RECRUIT_CRM_MCP_SENTRY_TRACES_RATE=0.2 20%取样,或 0.0 在保留错误捕获的同时完全禁用跟踪。
隐私
- 默认情况下没有遥测。 在没有配置哨兵DSN的情况下,MCP对除以下人员之外的任何人进行零网络呼叫
api.recruitcrm.io. - 没有捆绑DSN。 我们不嵌入我们自己的哨兵DSN——哨兵捕获只有在您自己提供的情况下才有效。
report_issue是明确同意。 它只构建一个可点击的URL;在浏览器中提交预先填写的表单之前,不会发送任何内容。- 公共回购问题。 通过以下方式提交的报告
report_issue在GitHub上公开可见。不要粘贴你不想公开的秘密或个人身份信息。
