loading…
Search for a command to run...
loading…
MCP server that simulates how 5 real ATS parsers (Workday, Greenhouse, Lever, Taleo, iCIMS) read a CV. Pure JS lint engine, MIT licensed, no network calls in li
MCP server that simulates how 5 real ATS parsers (Workday, Greenhouse, Lever, Taleo, iCIMS) read a CV. Pure JS lint engine, MIT licensed, no network calls in lint logic. Vendor-specific rules cite their public sources.
Model Context Protocol server that lints a CV against 5 real ATS parsers.
Exposes three MCP tools so any MCP-compatible AI agent (Claude Code, Cursor, Windsurf, Zed, OpenCode, Cline, etc.) can analyse a CV against the documented quirks of:
These are the 5 most-used enterprise ATS systems. Each one parses CVs slightly differently. A "0–100 ATS score" averages those differences into noise. This server surfaces what each one actually does — column handling, emoji stripping, header-footer dropping, date-format quirks — as concrete lint findings with concrete fixes.
The lint rules are derived from public vendor documentation. See docs/vendor-sources.md for citations.
| Tool | Description |
|---|---|
analyze_cv |
Full report. Takes a CV file path (PDF or DOCX), returns per-vendor lint findings with severity (error / warn / info) and fixes. |
lint_for_vendor |
Single-vendor lint. Takes a path + vendor name. Faster when the user only cares about one ATS. |
get_express_url |
Returns the URL of the visual web companion (cv-mirror-web.vercel.app) for users who prefer a side-by-side parser view in their browser instead of an agent session. |
npm install -g cv-mirror-mcp
Add to your MCP client's config file:
Claude Code (~/.claude/mcp.json or .claude.json in project):
{
"mcpServers": {
"cv-mirror": {
"command": "npx",
"args": ["-y", "cv-mirror-mcp"]
}
}
}
Cursor / Windsurf / Zed / Cline: same config format (paste into wherever your client reads mcpServers).
Restart the client. The three tools above auto-register.
Once installed, just ask your agent:
Scan my CV at
~/Documents/resume.pdfand tell me what each ATS would do to it.
The agent calls analyze_cv, the lint engine runs locally (no network, no upload), and the agent surfaces the structured output:
CV Mirror — multi-vendor ATS lint report
Source: /Users/jane/Documents/resume.pdf
Format: pdf
Pages: 2
Words: 542
[ERROR] Workday
- ERROR WORKDAY_MULTI_COLUMN: 35% of lines look multi-column. Workday's parser
reads left-to-right and interleaves both columns into one stream.
Fix: Convert to single-column layout. Move sidebars (Skills, Tools, Languages)
above or below the main content.
[OK] Greenhouse
No issues detected by the simulated parser.
[WARN] Lever
- WARN LEVER_HEADER_FOOTER: Header/footer-like text detected ("Page 1 of 2").
Lever historically drops content placed in PDF headers/footers.
Fix: Remove headers and footers. Page numbers are not needed on a CV.
...
These are real heuristics derived from public ATS docs and vendor support articles. The full list with citations lives in docs/vendor-sources.md.
| Rule | Vendor | Severity | Trigger |
|---|---|---|---|
WORKDAY_MULTI_COLUMN |
Workday | error | >15% of lines have a 5+-space gap |
WORKDAY_QUARTER_DATES |
Workday | warn | Dates use "Q3 2024" format |
WORKDAY_CONTACT_MISSING |
Workday | error | No email or phone in plain text |
GREENHOUSE_EMOJI |
Greenhouse | warn | Any emoji codepoint detected |
GREENHOUSE_FANCY_BULLETS |
Greenhouse | info | Non-standard bullet glyphs |
GREENHOUSE_NONSTANDARD_HEADER |
Greenhouse | warn | "My Story", "Highlights Reel", etc. |
LEVER_HEADER_FOOTER |
Lever | warn | "Page X of Y" pattern detected |
LEVER_NO_STANDARD_HEADERS |
Lever | error | No "Experience"/"Education" sections |
TALEO_ISO_DATES |
Taleo | warn | ISO dates outnumber Month-Year dates |
TALEO_LOW_TEXT_DENSITY |
Taleo | error | <1 word per kB of file size |
TALEO_SMART_QUOTES |
Taleo | info | Curly quotes detected |
ICIMS_MULTI_COLUMN |
iCIMS | error | >20% of lines multi-column |
ICIMS_FEW_HEADERS |
iCIMS | warn | <2 standard headers found |
The server runs locally inside your agent's process. No upload endpoint. No telemetry. Your CV bytes never leave your machine.
The visual web companion at cv-mirror-web.vercel.app is also fully client-side — same engine, runs in the browser.
git clone https://github.com/goofypluto999/cv-mirror-mcp.git
cd cv-mirror-mcp
npm install
npm test
19 unit tests covering signal extraction and per-vendor rule firing.
cv-mirror-mcp exposes its three tools to any MCP-compatible agent. The most common workflow:
npm install -g cv-mirror-mcpanalyze_cv, gets per-vendor lint findings with severity + concrete fixes, and surfaces them.Once you have a clean CV, you typically need the rest of the application prep — company research, tailored cover letter, fit score, mock interview. Vantage is the paid tool that handles that flow (same team, £5 starter pack, 10 free tokens at signup, no card required for the trial).
The recommended end-to-end flow:
Pull requests welcome. Particularly interested in:
MIT. Workday, Greenhouse, Lever, Taleo, and iCIMS are trademarks of their respective owners. This project is not affiliated with any of them; the names are used for descriptive reference (nominative fair use).
Built by Vantage Labs.
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"cv-mirror-mcp": {
"command": "npx",
"args": []
}
}
}