{
  "markdown": "# AI HR Management Toolkit\n\n> AI-powered resume parser & full Applicant Tracking System with **21 MCP tools**. Parse PDFs, extract skills, detect patterns, score candidates, and manage a complete hiring pipeline — all from your AI assistant, no manual work required.\n\n<img width=\"1889\" height=\"781\" alt=\"image\" src=\"https://github.com/user-attachments/assets/572b4dd8-8fd4-469c-b71d-a4f513c4b466\" />\n<img width=\"1896\" height=\"635\" alt=\"image\" src=\"https://github.com/user-attachments/assets/aa0fc7c1-6373-4a48-9faf-3b15c42871f1\" />\n<img width=\"1562\" height=\"572\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4a0ec218-b61f-43c8-b6b8-657219e30dab\" />\n\n**Live demo:** https://ai-hr-management-toolkit.vercel.app\n\n[![npm version](https://img.shields.io/npm/v/mcp-ai-hr-management-toolkit)](https://www.npmjs.com/package/mcp-ai-hr-management-toolkit)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n<a href=\"https://glama.ai/mcp/servers/mcp-ai-hr-management-toolkit\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/mcp-ai-hr-management-toolkit/badge\" alt=\"mcp-ai-hr-management-toolkit server\" />\n</a>\n\n---\n\n## What Is This?\n\nYou have 50 resumes to screen. Your AI assistant can reason about candidates — but it cannot open PDFs, extract structured data, or track pipeline stages. This toolkit bridges that gap.\n\n**Give your AI assistant 21 tools** covering the entire hiring workflow:\n\n- Parse PDFs, DOCX, TXT, Markdown, and URLs into structured JSON\n- Extract skills, experience, keywords, and entities algorithmically\n- Score and rank candidates against job descriptions\n- Run a full ATS: jobs, candidates, interviews, offers, notes, and analytics\n\n**20 of 21 tools are 100% algorithmic** — no LLM calls, no API keys required. The AI calls tools, interprets the results, and delivers analysis. You just ask questions.\n\n---\n\n## Quick Start (MCP Clients)\n\nNo installation needed. Point your MCP client at the package:\n\n**Claude Desktop** — Edit `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):\n```json\n{\n  \"mcpServers\": {\n    \"ai-hr-management-toolkit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-ai-hr-management-toolkit\"]\n    }\n  }\n}\n```\n\nExample usage: \n\n<img width=\"1101\" height=\"556\" alt=\"image\" src=\"https://github.com/user-attachments/assets/34a8fd29-5f51-4f8b-9f3c-df0e31f36354\" />\n\n<img width=\"1094\" height=\"314\" alt=\"image\" src=\"https://github.com/user-attachments/assets/fb641f07-a977-413c-903c-b67f806d75b1\" />\n\n**Cursor** — Add to `.cursor/mcp.json` in your project root:\n```json\n{\n  \"mcpServers\": {\n    \"ai-hr-management-toolkit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-ai-hr-management-toolkit\"]\n    }\n  }\n}\n```\n\n**VS Code Copilot** — Create `.vscode/mcp.json` in your project root:\n```json\n{\n  \"servers\": {\n    \"ai-hr-management-toolkit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-ai-hr-management-toolkit\"]\n    }\n  }\n}\n```\n\n> **VS Code users:** Run the `npx` command from a directory that contains a `package.json` (i.e. any project root). The `cwd` key in `.vscode/mcp.json` can override the working directory if needed.\n\n**Windsurf / other MCP clients** — Use the same `npx` pattern above.\n\n---\n\n## Installation Options\n\n### Option 1: NPX (Zero-install, recommended)\n\nWorks from any project directory (requires a `package.json` in the working directory):\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-hr-management-toolkit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-ai-hr-management-toolkit\"]\n    }\n  }\n}\n```\n\n### Option 2: Global install\n\nInstall once, use from any directory:\n\n```bash\nnpm install -g mcp-ai-hr-management-toolkit\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-hr-management-toolkit\": {\n      \"command\": \"mcp-ai-hr-management-toolkit\",\n      \"args\": []\n    }\n  }\n}\n```\n\n### Option 3: Remote HTTP endpoint\n\nDeploy the Next.js app and use the Streamable HTTP transport:\n\n```\nhttps://your-domain.com/api/mcp\n```\n\nTest locally:\n```bash\nnpx @modelcontextprotocol/inspector http://localhost:3000/api/mcp\n```\n\n### Option 4: Local development (Web UI + MCP)\n\n```bash\ngit clone <repo-url>\ncd Resume-parser\nnpm install\nnpm run dev\n```\n\nWeb UI at `http://localhost:3000`. MCP endpoint at `http://localhost:3000/api/mcp`. No `.env` needed — configure API keys in the UI or pass them per tool call.\n\n---\n\n## All 21 MCP Tools\n\nAll tools return structured JSON with `next_steps` hints so the AI knows what to call next.\n\n### Resume Parsing & Ingestion\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `parse_resume` | Parse PDF / DOCX / TXT / MD / URL → raw text + contacts, keywords, section map | No |\n| `batch_parse_resumes` | Parse up to 20 files in one call, full pipeline on each | No |\n| `inspect_pipeline` | Run the 5-stage analysis pipeline → confidence scores, entity counts, data quality report | No |\n\n### Unified Analysis\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `analyze_resume` | Master analysis tool with selectable aspects: `keywords` (TF-IDF + bigrams), `patterns` (date ranges, metrics, team sizes, career trajectory), `entities` (NER with 12 types + context disambiguation), `skills` (13 categories with proficiency estimation), `experience` (structured timeline), `similarity` (cosine, Jaccard, TF-IDF overlap vs. job description), or `all` | No |\n\n> `analyze_resume` consolidates what were previously 7 separate tools (`extract_keywords`, `detect_patterns`, `classify_entities`, `extract_skills_structured`, `extract_experience_structured`, `compute_similarity`, `analyze_resume_comprehensive`) into a single entry point with aspect selection.\n\n### Candidate Matching & Scoring\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `assess_candidate` | Score against up to 8 weighted criteria axes → weighted total + pass / review / reject decision | Optional |\n\n### Export & Notifications\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `export_results` | Export structured parse results to JSON or CSV | No |\n| `send_email` | Send results via SMTP (config passed per call — no server-side secrets stored) | No |\n\n### ATS — Jobs\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `ats_manage_jobs` | Full CRUD for job postings: create, read, update, delete, list, search by title/department/status | No |\n\n### ATS — Candidates & Pipeline\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `ats_manage_candidates` | CRUD + analytics: add, update, move stage, bulk-move, filter, rank, compare, recommend stage changes, summarize | No |\n| `ats_analytics` | Unified dashboard + pipeline analytics: stage distribution, conversion rates, avg time-in-stage, bottleneck detection, offer acceptance rate | No |\n| `ats_search` | Global full-text search across all ATS entities (candidates, jobs, interviews, offers, notes) | No |\n\n### ATS — Interviews\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `ats_schedule_interview` | Create, update, and delete interviews with conflict detection and interviewer availability check | No |\n| `ats_interview_feedback` | Submit structured feedback, compute consensus score, summarize feedback across all interviewers | No |\n\n### ATS — Offers & Notes\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `ats_manage_offers` | Full offer lifecycle: draft → pending → approved → sent → accepted / declined / expired | No |\n| `ats_manage_notes` | Add, update, search, and delete timestamped candidate notes | No |\n\n### ATS — Enterprise HR\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `ats_compliance` | EEO/EEOC reporting, GDPR export/erasure, audit trail, data retention policies | No |\n| `ats_talent_pool` | Passive candidate talent pools (CRM): create pools, add/remove candidates, search, analytics | No |\n| `ats_scorecard` | Structured interview scorecards with weighted criteria, per-evaluator scores, aggregate rankings | No |\n| `ats_onboarding` | Post-hire onboarding checklists: tasks by category, assignees, progress tracking, overdue alerts | No |\n| `ats_communication` | Email templates with `{{variable}}` interpolation, send/preview, communication history, stats | No |\n\n### Testing & Seeding\n\n| Tool | What it does | AI? |\n|------|-------------|:---:|\n| `ats_generate_demo_data` | Generate a realistic sample ATS dataset (jobs, candidates, interviews, offers) for testing | No |\n\n> **`assess_candidate`** optionally calls an LLM when you supply `provider` + `apiKey`; it falls back to fully algorithmic scoring otherwise.\n\n---\n\n## Example Multi-Turn Flow\n\n```\nYou: \"Parse this resume and tell me if they're a good fit for our Senior Engineer role\"\n\nAI → parse_resume(file)\n     → raw text, contact info, section map\n\nAI → inspect_pipeline(rawText)\n     → 5-stage confidence scores, entity classification\n\nAI → analyze_resume(text, aspects=[\"skills\", \"patterns\", \"similarity\"], jobDescription=...)\n     → 13 skill categories with proficiency levels\n     → career trajectory, metrics, date ranges\n     → cosine 0.74, skill match 82%, gap analysis\n\nAI synthesizes → \"Strong match. 6 of 8 required skills present.\n                  Two gaps: Kubernetes and system design at scale.\n                  Recommend: Technical Screen\"\n```\n\n---\n\n## Analysis Pipeline\n\nEvery resume runs through a 5-stage algorithmic pipeline:\n\n```\n┌─────────────┐    ┌──────────────┐    ┌──────────────┐    ┌────────────────┐    ┌───────────────┐\n│  Ingestion  │───▶│ Sanitization │───▶│ Tokenization │───▶│ Classification │───▶│ Serialization │\n│ (file/URL)  │    │ (noise trim) │    │  (TF-IDF)    │    │ (NER + disamb) │    │ (structured)  │\n└─────────────┘    └──────────────┘    └──────────────┘    └────────────────┘    └───────────────┘\n```\n\n1. **Ingestion** — PDF via pdf-parse v2, DOCX via mammoth, HTML/URL via cheerio, plain text/markdown natively\n2. **Sanitization** — Removes non-ASCII artifacts, normalizes whitespace, strips formatting noise\n3. **Tokenization** — TF-IDF with unigrams, bigrams, and trigrams; scored by document frequency\n4. **Classification** — NER with domain-aware disambiguation (e.g. \"Java\" as language vs. Indonesian city; \"Go\" as language vs. verb)\n5. **Serialization** — Maps entities to typed `ResumeSchema` with confidence scores and data quality metrics\n\n---\n\n## Supported File Formats\n\n| Format | Extensions | Parser |\n|--------|-----------|--------|\n| PDF | `.pdf` | pdf-parse v2 |\n| DOCX | `.docx` | mammoth |\n| Plain text | `.txt` | direct read |\n| Markdown | `.md`, `.markdown` | regex-based |\n| URL / HTML | any URL string | cheerio |\n\nMax file size: **10 MB**\n\n---\n\n## Structured Output Schema\n\n```\ncontact        — name, email, phone, location, LinkedIn, GitHub, website, portfolio\nsummary        — professional summary text\nskills[]       — name, category (13 types), proficiency, usage context\nexperience[]   — company, title, start/end dates, highlights, achievements (with metrics), technologies\neducation[]    — institution, degree, field, dates, GPA\ncertifications[] — name, issuer, date, credential URL\nprojects[]     — name, description, URL, technologies, highlights\nlanguages[]    — spoken language and proficiency\n```\n\n---\n\n## Web UI\n\nThe app ships with a full web interface:\n\n| Tab | Description |\n|-----|-------------|\n| **Single Parse** | Upload one file or paste a URL. Returns structured data, pipeline visualization, and AI-enhanced analysis |\n| **Batch Parse** | Upload up to 20 files. Export to JSON / CSV / PDF or email results |\n| **Chat** | Conversational interface with tool access — ask questions about any parsed resume |\n| **ATS** | Full pipeline board: jobs, candidates (Kanban), interviews, offers, and analytics dashboard |\n\nSwitch AI providers from the selector at the top. Supports OpenAI, Anthropic, Google, DeepSeek, GLM, Qwen, OpenRouter, and OpenCode Zen.\n\n---\n\n## REST API Endpoints\n\nAll endpoints accept `multipart/form-data` with optional headers:\n\n| Header | Description |\n|--------|-------------|\n| `x-api-key` | Your AI provider API key |\n| `x-ai-provider` | `openai` / `anthropic` / `google` / `deepseek` / `glm` / `qwen` / `openrouter` / `opencodezen` |\n| `x-ai-model` | Specific model ID |\n\n```bash\n# Parse a single resume\ncurl -X POST http://localhost:3000/api/parse \\\n  -H \"x-api-key: sk-...\" \\\n  -F \"file=@resume.pdf\"\n\n# Batch parse (up to 20 files)\ncurl -X POST http://localhost:3000/api/batch-parse \\\n  -H \"x-api-key: sk-...\" \\\n  -F \"files=@resume1.pdf\" \\\n  -F \"files=@resume2.docx\"\n\n# MCP endpoint (Streamable HTTP)\ncurl -X POST http://localhost:3000/api/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"tools/list\",\"id\":1}'\n\n# Export parsed data\ncurl -X POST http://localhost:3000/api/export \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"format\":\"csv\",\"results\":[...]}'\n```\n\n---\n\n## Tech Stack\n\n| Layer | Technologies |\n|-------|-------------|\n| Framework | Next.js 16 (App Router, Turbopack), React 19, TypeScript |\n| AI | Vercel AI SDK v6, multi-provider (OpenAI, Anthropic, Google, DeepSeek, GLM, Qwen, OpenRouter) |\n| MCP | `@modelcontextprotocol/sdk` v1.29 — Streamable HTTP + stdio transports |\n| Parsing | pdf-parse v2, mammoth, cheerio |\n| NLP | TF-IDF, NER, cosine similarity, Jaccard index (all in-process, no external services) |\n| Schema | Zod v4 |\n| Export | ExcelJS (CSV/XLSX), jsPDF + jspdf-autotable |\n| Email | Nodemailer |\n| Styling | Tailwind CSS v4, Framer Motion |\n\n---\n\n## Development\n\n```bash\nnpm install\n\n# Start dev server (Web UI at :3000 + MCP at /api/mcp)\nnpm run dev\n\n# Build the standalone MCP CLI (stdio transport)\nnpm run build:mcp\n\n# Build the Next.js app for production\nnpm run build\n\n# Test MCP with the official inspector\nnpx @modelcontextprotocol/inspector http://localhost:3000/api/mcp\nnpx @modelcontextprotocol/inspector node dist/mcp-stdio.js\n\n# Lint\nnpm run lint\n```\n\n---\n\n## Project Structure\n\n```\nsrc/\n├── app/\n│   ├── page.tsx              # Main UI (tabs, provider selector, chat, ATS)\n│   ├── layout.tsx            # Root layout + global styles\n│   └── api/\n│       ├── parse/route.ts    # Single resume parse\n│       ├── batch-parse/route.ts\n│       ├── chat/route.ts     # Conversational AI with tool access\n│       ├── mcp/route.ts      # MCP server (Streamable HTTP)\n│       ├── models/route.ts   # Provider model listing\n│       ├── export/route.ts   # JSON / CSV / PDF export\n│       └── email/route.ts    # SMTP email\n├── components/               # React UI components (parse, batch, chat, ATS)\n│   └── ats/                  # ATS-specific views (Kanban, Dashboard, Scheduler…)\n└── lib/\n    ├── ai-model.ts           # Multi-provider model config (no env fallback)\n    ├── mcp-server.ts         # MCP server — registers all 21 tools\n    ├── schemas/\n    │   ├── resume.ts         # Zod v4 ResumeSchema\n    │   └── criteria.ts       # Assessment criteria schema\n    ├── analysis/\n    │   ├── pipeline.ts       # 5-stage pipeline orchestrator\n    │   ├── sanitizer.ts      # Text cleaning\n    │   ├── keyword-extractor.ts  # TF-IDF\n    │   ├── classifier.ts     # NER with context disambiguation\n    │   ├── pattern-matcher.ts    # Regex extraction (metrics, dates, contacts)\n    │   └── scoring.ts        # Cosine similarity, Jaccard, skill matching\n    ├── parser/\n    │   ├── pdf.ts, docx.ts, text.ts, markdown.ts, url.ts\n    │   └── index.ts\n    ├── ats/\n    │   ├── types.ts          # ATS entity types\n    │   ├── store.ts          # In-memory ATS state\n    │   ├── demo-data.ts      # Realistic seed data generator\n    │   └── context.tsx       # React context for ATS state\n    └── tools/\n        ├── parse-resume.ts       # parse_resume\n        ├── inspect-pipeline.ts   # inspect_pipeline\n        ├── export-results.ts     # export_results\n        ├── send-email.ts         # send_email\n        └── mcp/                  # 17 MCP-specific tools\n            ├── analyze-resume.ts     # analyze_resume (unified: keywords, patterns, entities, skills, experience, similarity)\n            ├── batch-parse.ts        # batch_parse_resumes\n            ├── assess-candidate.ts   # assess_candidate\n            ├── ats-manage-candidates.ts  # ats_manage_candidates (includes rank/filter/compare/summarize)\n            ├── ats-manage-jobs.ts\n            ├── ats-manage-offers.ts\n            ├── ats-manage-notes.ts\n            ├── ats-analytics.ts      # ats_analytics (unified dashboard + pipeline)\n            ├── ats-schedule-interview.ts\n            ├── ats-interview-feedback.ts\n            ├── ats-search.ts\n            ├── ats-generate-demo-data.ts\n            ├── ats-compliance.ts     # Enterprise: EEO / GDPR / audit\n            ├── ats-talent-pool.ts    # Enterprise: passive candidate CRM\n            ├── ats-scorecard.ts      # Enterprise: structured scorecards\n            ├── ats-onboarding.ts     # Enterprise: onboarding checklists\n            └── ats-communication.ts  # Enterprise: email templates & history\n```\n\n---\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 16998,
  "sha": "902278bb1b9fea48c4ca0795fbd49b79fb58644af52056ad52729b8cbdc4894d",
  "repo_slug": "xjtlumedia/ai-hr-management-toolkit",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_xjtlumedia_ai_hr_management_to_ed6ec148/readme"
}