HR分析工具集

MCP-сервер 'HR-Аналитик' 是一个为HR代理提供自动化招聘流程分析工具的服务,包括GitHub仓库分析、简历解析和面试问题生成等功能,适用于技术招聘和技能评估场景。

  • by Danilka88
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Danilka88/mcp_cloudru

使用说明

人力资源分析员MCP服务器

它是一个为人力资源代理提供工具的MCP服务器,由Cloud.ru“MCP for Business AI Transformation”案例研究开发。

企业价值与人力资源应用

在当今的IT市场中,招聘速度和准确性是成功的关键因素,MCP服务器“HR Analytics”提供了一套自动化和优化人力资源流程的工具。与LLM代理的集成允许:

  • 提高精确度 30-40%通过对候选人实际技能的分析。
  • 缩短招聘时间 40-50%,自动化常规任务,如存储库分析,简历筛选和候选人搜索。
  • 形成完整的端到端管道 对于人力资源专家:从搜索候选人到发送反馈。

该项目的重点是“基于技能的招聘”和“基于代码的招聘”,这是技术招聘的一个热门趋势。

项目的主要优势

“人力资源分析师”MCP服务器的设计考虑到现代开发方法,确保其可靠性、通用性和可扩展性。

建筑和方法

  • 模块化和可扩展性:项目具有明确定义的模块化结构,其中业务逻辑(src/logic(2)与工具分离(src/tools).这允许您轻松添加新工具或修改现有工具,而不影响系统的其他部分。这种方法是创建可扩展和支持的解决方案的基础。

  • 普遍性:服务器基于框架构建 FastMCP实现标准MCP协议。这确保了通用性,并能够与任何支持该协议的AI代理和平台集成。服务器中的工具解决了通用的人力资源分析任务,使该项目适用于各种场景。

  • 可靠性和可观测性(Observability):

    • 测试1.每个仪器的完整测试覆盖范围(tests/)确认了对高质量和可靠代码的关注。
    • 跟踪和监测: 与整合 开放遥测 允许分布式交易请求。这是生产运营的关键方面,因为它简化了调试、性能监控和系统瓶颈检测。
    • 可靠的依赖关系管理:使用 uv 和 pyproject.toml 确保创建可重复和可靠的运行时环境,避免版本冲突和依赖问题。
  • 异步体系结构:应用 asyncio 异步组件(例如 httpx.AsyncClient)提供高性能,并允许高效地处理大量同时请求,这是现代Web服务的标准。

  • 易于使用和记录:该项目包括完整的文档作为开发人员(README.md)和AI代理(docs/AGENT_USAGE_GUIDE_*.md这大大简化了其集成和日常使用。基于文件的自动生成 mcp_tools.json 和 env_options.json 进一步降低了入门门槛。

工具描述

analyze_github_repository

该工具旨在自动分析公共GitHub存储库。它帮助人力资源专业人员在没有深入编程知识的情况下快速获得项目技术堆栈的客观图像,从而简化和加快了空缺要求的形成过程。

  • 关键功能:
    • 检索有关存储库的一般信息:描述、星号、主编程语言。
    • 定义项目中的语言分布(例如,Python:60%,TypeScript:40%)。
    • 查找和解析依赖文件(如 pyproject.toml, requirements.txt, package.json)列出正在使用的库和框架(例如Fastapi、React、Sclalchemy)。
    • 形成结构化JSON报告和可读分析摘要。
  • 优点:
    • 使人力资源管理人员只需使用GitHub链接即可快速了解项目的技术堆栈。
    • 加快制定准确和相关的空缺要求。
    • 减少主观性,消除了对项目评估的“代码分析”需求。
    • 节省时间: 将手动存储库分析从几个小时缩短到5-10分钟,这在基于技能的存储条件下特别有用。
  • 重要的是: 完整的依赖关系分析(搜索依赖关系文件)需要 GITHUB_TOKEN它可以作为参数传递,也可以从环境变量读取。没有令牌,只能执行基本的存储库分析。见E/CN.4/Sub.2/2000/SR.1。 .env.example 设置。
  • AI代理详细说明: 关于AI代理使用此工具的更详细的指南(何时使用,如何解释结果,示例)在 docs/AGENT_USAGE_GUIDE_ANALYZE_GITHUB_REPOSITORY.md.

parse_resume

此工具用于解析和分析简历文件。

  • 关键功能:
    • 从各种格式的摘要文件(PDF、DOCX、RTF、TXT、MD)中提取原始文本。
    • 重要的是: 该工具只提取原始文本。为了获得结构化信息(联系方式、技能、工作经验、教育)和过滤,需要进一步处理收到的文本。
  • 优点:
    • 从简历中获取文本内容的统一方法,无论格式如何。
    • 使用LLM进行进一步挖掘和处理的基础。
    • 效率: 自动进行初始筛选,将单个简历的处理时间从10-15分钟缩短到不到1分钟。
  • AI代理详细说明: 关于AI代理使用此工具的更详细的指南(何时使用,如何解释结果,示例)在 docs/AGENT_USAGE_GUIDE_PARSE_RESUME.md.

generate_interview_questions

该工具旨在收集关于公共GitHub存储库的结构化上下文。收集的上下文可以被调用LLM(如AI代理本身)使用,然后独立生成技术面试的问题。

  • 关键功能:
    • 自动分析GitHub提供的存储库。
    • 提取和结构化关键信息:描述、主要语言、语言分布、检测到的依赖关系、星号、许可证。
    • 创建具有存储库上下文的复杂JSON对象。
  • 优点:
    • 提供完整和结构化的项目信息,为面试生成相关问题所需。
    • 允许LLM呼叫专注于基于准确数据的问题生成。
    • 减少LLM自行分析存储库的需要。
    • 提高面试质量: 它有助于创建适合候选人具体经验的问题,缩短准备时间,提高面试的相关性。
  • 重要的是: 为了全面收集上下文和分析依赖关系,建议提供 GITHUB_TOKEN (作为参数或环境变量)。它也是访问私人存储库所必需的。没有代币,分析可能会受到限制。
  • AI代理详细说明: 关于AI代理使用此工具的更详细的指南(何时使用,如何解释结果,示例)在 docs/AGENT_USAGE_GUIDE_GENERATE_INTERVIEW_QUESTIONS.md.

candidate_feedback_prompt

此PROMPT模板旨在在面试后生成候选人的反馈。

  • 关键功能:
    • 输入: 候选人的优势/劣势,总分(score)。
    • 生成: 礼貌的信息和建议(例如,“你很擅长编码,但会提高软技能”)。
    • 变体: 支持消息生成以拒绝或邀请下一步。
  • 优点:
    • 改善雇主品牌: 通过快速和个性化的反馈增强候选人体验,这在人才竞争激烈的环境中至关重要。
    • 日常自动化: 为更具战略性的任务腾出人力资源专家的时间,将手工写作从15-30分钟减少到每位候选人不到5分钟。
  • AI代理详细说明: 关于AI代理使用此工具的更详细的指南(何时使用,如何解释结果,示例)在 docs/AGENT_USAGE_GUIDE_CANDIDATE_FEEDBACK_PROMPT.md.

search_candidate_profiles

这个工具在GitHub中搜索候选人的个人资料,专注于他们的开源贡献。它提供了一种客观的技术来源方式,根据真实的代码和活动发现人才。

  • 关键功能:
    • 输入: 允许您设置搜索参数,如编程语言、关键字(在生物/存储库中)、位置、最小星星数(min_stars(仓库)min_repos,订户(min_followers)以及年的近似经验(experience_years).支持返回的结果数量限制(limit).
    • 搜索: 使用GitHub API限定符进行精确搜索(例如, language:Python location:Moscow repos:>5).
    • 详细信息: 返回每个配置文件的详细信息,包括名称,生物,位置,恒星总数(total_stars),前5个存储库(有星星的数量,语言)和近似的经验。
    • 过滤器: 允许您按恒星、订阅者和经验应用客户端筛选器,因为GitHub API不支持对这些参数进行本体排序。
    • 返回: 列出JSON配置文件或错误消息(例如,超过请求限制)。
  • 优点:
    • 客观选择: 它允许你根据他们对开源(code-based hiring)的实际贡献来发现“隐藏”的人才,这是一个比简历更客观的指标。
    • 高效: 将搜索时间从几个小时缩短到几分钟,允许快速搜索技术技能、位置和活动配置文件。
  • 重要的是:
    • GITHUB令牌: 为了这个工具的工作 需要 设置环境变量 GITHUB_TOKEN 你的个人GitHub代币。这项要求是为了规避GitHub API的严格限制(经过身份验证的用户每小时5000次请求)。
    • GDPR: 该工具仅使用公共数据。未经候选人同意,请勿储存或联系他们。
    • 费率限制: 如果超过请求限制,工具将返回错误并建议等待。
    • GitHub限制: GitHub API将结果限制为每次搜索1000个。工具进一步限制 limit=20 为了优化。
  • AI代理详细说明: 关于AI代理使用此工具的更详细的指南(何时使用,如何解释结果,示例)在 docs/AGENT_USAGE_GUIDE_SEARCH_CANDIDATE_PROFILES.md.

项目结构

mcp/
├── .env.example                 # Пример файла с переменными окружения
├── pyproject.toml               # Конфигурация проекта и зависимости (используется uv)
├── conftest.py                  # Конфигурация pytest для разрешения импортов
├── env_options.json             # Описание переменных окружения для автоматической генерации документации
├── mcp_tools.json               # JSON описание инструментов MCP для автоматической генерации документации
├── mcp-server-catalog.yaml      # Каталог MCP сервера для автоматической генерации документации
├── README.md                   # Этот файл
├── src/                         # Исходный код сервера и логики
│   ├── logic/                   # Бизнес-логика инструментов
│   │   └── github_analyzer.py   # Логика для анализа GitHub
│   │   └── interview_question_generator.py # Логика для генерации вопросов для интервью
│   │   └── resume_parser.py     # Логика для парсинга резюме
│   ├── mcp_instance.py          # Единый экземпляр FastMCP
│   ├── server.py                # Точка входа для запуска MCP-сервера
│   └── tools/                   # Реализация MCP-инструментов
│       ├── __init__.py          # Инициализация пакета инструментов
│       ├── analyze_github_repo.py # Инструмент для анализа GitHub-репозиториев
│       ├── candidate_feedback.py # Инструмент для генерации обратной связи кандидатам
│       ├── generate_interview_questions.py # Инструмент для генерации вопросов для интервью
│       ├── parse_resume.py      # Инструмент для парсинга резюме
│       ├── search_candidate_profiles.py # Инструмент для поиска кандидатов на GitHub
│       └── utils.py             # Вспомогательные функции для инструментов
├── tests/                       # Тесты для инструментов
│   ├── test_github_analyzer.py      # Тесты для анализа GitHub-репозитория
│   ├── test_interview_question_generator.py # Тесты для генератора вопросов
│   ├── test_resume_parser_tool.py   # Тесты для парсера резюме
│   └── pdf/                     # Пример PDF-файла для тестирования парсера резюме
├── .venv/                       # Виртуальное окружение проекта (создается uv)
└── docs/                        # Документация и руководства
    ├── AGENT_USAGE_GUIDE_ANALYZE_GITHUB_REPOSITORY.md     # Руководство по использованию инструмента analyze_github_repository для AI-агентов
    ├── AGENT_USAGE_GUIDE_GENERATE_INTERVIEW_QUESTIONS.md  # Руководство по использованию инструмента generate_interview_questions для AI-агентов
    ├── AGENT_USAGE_GUIDE_PARSE_RESUME.md                  # Руководство по использованию инструмента parse_resume для AI-агентов
    ├── AGENT_USAGE_GUIDE_CANDIDATE_FEEDBACK_PROMPT.md     # Руководство по использованию инструмента candidate_feedback_prompt для AI-агентов
    └── AGENT_USAGE_GUIDE_SEARCH_CANDIDATE_PROFILES.md     # Руководство по использованию инструмента search_candidate_profiles для AI-агентов

配置和启动项目

要启动MCP服务器,请按照以下说明:

  1. 安装包管理器 uv:
    • 如果您在Homebrow上使用macOS: brew install uv.
    • 关于其他系统,见下文。正式文件 uv.
  2. 转到项目根目录:
    cd mcp/ # или путь к вашей директории hr_analyst_mcp
    
  3. 创建虚拟环境:
    uv venv
    
  4. 安装所有依赖项(包括用于测试的dev依赖项):
    uv sync --dev
    
  5. 创建文件 .env:
    • 复制文件示例: cp .env.example .env
    • 编辑文件 .env: 请输入您的 GITHUB_TOKEN="ВАШ_ТОКЕН" 使用GitHub API(例如 analyze_github_repository, generate_interview_questions, search_candidate_profiles).
    • OpenTelemetry配置(可选):
      • OTEL_ENDPOINT="http://localhost:4318/v1/traces":您的OpenTelemetry Collector地址(例如Jaeger)。
      • SERVICE_NAME="hr-analyst-mcp":将显示在跟踪器中的服务名称。
      • ENVIRONMENT="development":运行时环境(开发、生产等)。
  6. 启动MCP服务器:
    uv run python src/server.py
    
    • 服务器将在地址可用 http://localhost:8000/mcp.
    • Prometheus度量: http://localhost:8000/metrics.
    • 状态检查: http://localhost:8000/health.

跟踪和监测

该项目与OpenTelemetry集成,用于分布式交易。如果环境变量 OTEL_ENDPOINT 安装后,轨道将导出到指定的集合(例如Jaeger)。在开发模式下,Trace也被输出到控制台中。