Resume-Tailor MCP Server
The Resume-Tailor MCP Server enables you to persistently store, tailor, score, and export your résumé to match any job posting — all driven by an AI assistant like Claude, running locally for full data privacy.
Save & load a master CV: Store a structured JSON résumé (contact info, summary, experience, skills, education, projects) that persists across sessions — set it once, reuse it for every application.
Fetch job postings: Scrape and clean a job description from a URL, or accept pasted text if the site is login-walled or blocked.
Extract ATS keywords: Deterministically rank skills, tools, and terms an Applicant Tracking System would scan for using frequency-based analysis.
ATS gap analysis: Compare your résumé against extracted keywords to get a match score, a list of matched terms, and the exact missing terms to address.
Export ATS-safe files: Render your tailored résumé as a clean PDF or DOCX — single-column layout, standard fonts, and real selectable text.
AI-driven tailoring: Claude uses your stored CV, job data, and gap analysis together to rewrite and optimize your résumé before export.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Resume-Tailor MCP ServerTailor my master resume for this job posting and export as PDF"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
An open-source Model Context Protocol server that gives Claude Desktop (or any MCP client) a persistent master résumé, a real ATS keyword score, and clean PDF / DOCX export.
🌐 View the live site →
Quick start · Tools · How it works · Contributing · Releases
You: "Here's a job link — tailor my CV and export a PDF."
Claude reads the posting and your master CV, rewrites it to match, checks the ATS keyword score, and hands you a clean file ready to send.
Table of Contents
Related MCP server: ats-resume-writer
Why this exists
Claude can already rewrite a CV in a normal chat. This MCP is worth installing for the three things a plain chat can't do:
Feature | What it gives you |
Persistent master CV | Stored locally as JSON. Set it up once, reuse it for every job. |
Real ATS gap score | Deterministic keyword math — not vibes. Tells you exactly which keywords you're missing. |
Clean file export | ATS-safe PDF / DOCX: single column, standard fonts, real selectable text. |
The MCP does not rewrite your CV — Claude does that. The server supplies the persistence, the job fetch, the ATS math, and the export. Claude ties it together.
How it works
load_master_resume ─┐ ┌─► export_resume
├─► Claude rewrites the CV ─► ats_gap_check ─►──┤
fetch_job_posting ─►│ ▲ └─► export_cover_letter
extract_keywords ───┘─────────────────────────────────────┘Load your master CV —
load_master_resumeAnalyze the job —
fetch_job_posting→extract_keywordsRewrite — Claude rewrites the CV to honestly surface the missing keywords
Check the rewrite —
ats_gap_check(did the score go up?)Export —
export_resume→ a clean PDF or DOCXCover letter (optional) —
export_cover_letter→ a matching PDF or DOCX
Tools
Tool | Purpose |
| Store/update the base CV (structured JSON: contact, summary, experience, projects, skills, education). |
| Return the stored master CV so Claude can work from it. |
| Fetch a job URL → clean text. Falls back to pasted text if the site is blocked or login-walled. |
| Deterministically pull the ranked skills/tools an ATS scans for. |
| Compare a CV against the job keywords → match score (%) + the exact missing terms. |
| Render finished CV content (markdown or JSON) → a clean PDF or DOCX. Returns the file path. |
| Render a finished cover letter → a matching PDF or DOCX. Optionally adds a letterhead (name + contact) from the master CV. Returns the file path. |
Installation
Option A — install from PyPI (recommended)
pip install resume-tailor-mcp # or: uvx resume-tailor-mcpThat installs a resume-tailor-mcp command that runs the MCP server.
Option B — from source
git clone git@github.com:NmaaAlhawary/MCP-Resume-Tailor.git
cd MCP-Resume-Tailor
python3 -m venv .venv
source .venv/bin/activate # fish: source .venv/bin/activate.fish
pip install -r requirements.txtSmoke-test that all seven tools register:
python -c "import asyncio, server; print([t.name for t in asyncio.run(server.mcp.list_tools())])"PDF export usesreportlab (pure Python — no system libraries needed on macOS/Windows/Linux). DOCX export uses python-docx.
Connect to Claude Desktop
Add this to your claude_desktop_config.json
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS).
If you installed from PyPI (simplest — uvx fetches and runs it):
{
"mcpServers": {
"resume-tailor": {
"command": "uvx",
"args": ["resume-tailor-mcp"],
"env": { "RESUME_STORE_PATH": "~/.resume-mcp/master.json" }
}
}
}If you installed from source, point at your venv's Python and server.py:
{
"mcpServers": {
"resume-tailor": {
"command": "/absolute/path/to/MCP-Resume-Tailor/.venv/bin/python",
"args": ["/absolute/path/to/MCP-Resume-Tailor/server.py"],
"env": { "RESUME_STORE_PATH": "~/.resume-mcp/master.json" }
}
}
}Restart Claude Desktop — the seven tools appear under the tools menu.
Usage
First-time setup — store your master CV (once)
Copy master.template.json, fill in your details, then ask Claude:
"Save this as my master resume: (paste the JSON)"
Claude calls save_master_resume and it persists at RESUME_STORE_PATH.
Everyday flow — tailor to a job
You: Here's a job link — tailor my CV for it and export a PDF:
https://example.com/careers/senior-frontend
Behind the scenes Claude runs:
1. load_master_resume() → your stored CV
2. fetch_job_posting(url="…/senior-frontend") → clean job text
3. extract_keywords(job_text) → ["REST APIs", "GraphQL", "TypeScript",
"Docker", "AWS", "Next.js", "CI/CD", …]
4. ats_gap_check(resume_text, keywords) → { match_score: 20.0,
missing: ["GraphQL","Docker","AWS",…] }
5. ── Claude rewrites the CV to surface real, matching skills ──
6. ats_gap_check(new_resume_text, keywords) → { match_score: 85.0 }
7. export_resume(content=<rewritten>, format="pdf")
→ { path: "~/.resume-mcp/exports/….pdf" }
8. export_cover_letter(content=<letter>, format="pdf")
→ { path: "~/.resume-mcp/exports/…_cover_letter.pdf" }Claude: Tailored your CV — keyword match went from 20% → 85%. I added your Docker/AWS and testing experience to match their stack, and drafted a matching cover letter. Exported here:
~/.resume-mcp/exports/Jane_Developer_….pdf~/.resume-mcp/exports/Jane_Developer_…_cover_letter.pdf
Configuration
Env var | Default | Purpose |
|
| Where the master CV JSON lives. Exports go to |
Everything runs locally. No secrets, no external accounts.
Safety & robustness
SSRF-guarded fetching —
fetch_job_postingonly followshttp/httpsURLs to public hosts. Requests tolocalhost, private/LAN ranges, or cloud metadata (169.254.169.254) are refused, and redirects are re-checked on every hop. Downloads are capped at ~3 MB.Synonym-aware ATS scoring — the gap check treats common equivalents as a match (e.g.
K8s↔Kubernetes,JS↔JavaScript,Postgres↔PostgreSQL), so scores reflect real coverage.Unicode-safe PDFs — a bundled Unicode font renders accented names (
José,résumé) correctly instead of empty boxes.Master-CV backup — saving over an existing master CV first writes a
.bakcopy.
ATS-safe export
Single column — no text boxes or multi-column tricks that break ATS parsers
Standard fonts (Calibri for DOCX, a Unicode sans for PDF)
Real, selectable text — never image-rendered
Plain headings and bullet lists that map cleanly to resume sections
Contributing
Contributions of any size are welcome. The quickest way in: fork the repo, make your change, and open a pull request.
# 1. Fork on GitHub, then clone your fork
git clone git@github.com:YOUR-USERNAME/MCP-Resume-Tailor.git
cd MCP-Resume-Tailor
# 2. Set up and branch
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
git checkout -b my-improvement
# 3. Change, commit, push
git commit -am "Describe your change"
git push origin my-improvement
# 4. Open a Pull Request on GitHubGreat first contributions: add skills to KNOWN_TERMS / KNOWN_PHRASES in
server.py, filter a filler word in STOPLIST, or improve the export layout.
See CONTRIBUTING.md for the full step-by-step guide.
License
Released under the MIT License. By contributing, you agree your contributions are licensed under the same terms.
Built by Nmaa Hawary · If this helped, consider giving it a star.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceGenerates professional PDF resumes using LaTeX templates through natural language descriptions. Supports 9 professional templates, AI-powered resume tailoring, and organized folder management for job applications.Last updated422MIT
- AlicenseAqualityCmaintenanceRewrites resumes to beat ATS screening (Workday, Greenhouse, iCIMS, Taleo) against a specific job description, with strict truthfulness guardrails — never invents dates, metrics, titles, or seniority. Pay-what-you-want access codes ($0 works).Last updated2MIT
- Flicense-qualityDmaintenanceAI-powered job matching and CV generation tool that searches jobs on LinkedIn and Seek, analyzes CV fit, and generates tailored CVs.Last updated
- Flicense-qualityDmaintenanceEnables automatic analysis and comparison of CVs against a job description, scoring candidates and generating professional reports.Last updated
Related MCP Connectors
Tailor resumes, generate cover letters, render CVs as PDF, and browse 22+ templates.
Search 6.3M+ live jobs from companies' own career pages, plus resume tailoring & cover letters.
Turn a description into a shareable, editable PDF — invoices, certificates, reports, resumes.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NmaaAlhawary/MCP-Resume-Tailor'
If you have feedback or need assistance with the MCP directory API, please join our Discord server