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 ─┐
├─► Claude rewrites the CV ─► ats_gap_check ─► export_resume
fetch_job_posting ─►│ ▲
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 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. |
Installation
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 six 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):
{
"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 six 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" }Claude: Tailored your CV — keyword match went from 20% → 85%. I added your Docker/AWS and testing experience to match their stack. Exported here:
~/.resume-mcp/exports/Jane_Developer_….pdf
Configuration
Env var | Default | Purpose |
|
| Where the master CV JSON lives. Exports go to |
Everything runs locally. No secrets, no external accounts.
ATS-safe export
Single column — no text boxes or multi-column tricks that break ATS parsers
Standard fonts (Calibri / Helvetica)
Real, selectable text — never image-rendered
Plain headings and bullet lists that map cleanly to résumé 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.
Latest Blog Posts
- 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