resume-mcp
Provides an option to compile generated LaTeX resumes to PDF using Overleaf's online LaTeX editor.
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-mcpGenerate a tailored resume for the job at https://example.com/job/123"
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.
resume-mcp
MCP server for maintaining a professional profile database and generating tailored, ATS-optimized resumes for specific job postings.
Features
Profile database — SQLite store for contact info, education, work experience, projects, and skills with proficiency ratings
Job scraping — fetch and parse job postings from URLs; extract tech stack, experience level, requirements, and salary automatically
Tailored resume generation — scores every experience and project against the job, selects the most relevant ones, and produces a clean LaTeX resume
Relevance scoring — deterministic match score based on tech overlap, keyword coverage, and description similarity
ATS/keyword analysis — identifies keyword gaps, naming mismatches (
ReactvsReact.js), weak action verbs, bullets lacking metrics, and unused profile items that could strengthen the resumeNo extra API keys — all analysis is pure Python (regex + keyword matching). The calling LLM (Claude, GPT, etc.) does the creative rewriting using its own subscription
Application tracker — auto-logs every generated resume to a formatted
applications.xlsxspreadsheet with color-coded scores and status tracking
Related MCP server: cv-forge-mcp
How tailoring works
Each experience and project is scored 0–1 against the job posting:
Signal | Weight |
Tech stack tag overlap | 40% |
Keyword match against requirements | 35% |
Description keyword match | 25% |
Items are ranked by score, the top 4 experiences and top 4 projects are selected, and skills matching the JD are reordered to appear first.
Review pipeline
full_pipeline(url)— scrapes job → generates initial resume → runs deterministic analysis in one callThe analysis returns: keyword gaps, ATS issues (exact phrasing mismatches), weak verb flags, bullets missing metrics, and unused profile items from the DB
The calling LLM acts as a hiring manager and rewrites bullets, weaves in missing keywords, reorders sections
save_optimized_resume(...)— saves the LLM-rewritten LaTeX back to the DB and compiles to PDF
No API keys are consumed in step 2. The LLM you're already talking to does the creative work.
Setup
cd ~/resume-mcp
pip install -r requirements.txt
# seed_profile.py is a template — open it and replace the placeholder data
# with your own info, then run it to populate the database:
python seed_profile.pyTip: To keep your personal data out of git, copy the template to a private file:
cp seed_profile.py seed_yourname.py
echo "seed_yourname.py" >> .gitignore
python seed_yourname.pyOptional: Install pdflatex to compile resumes to PDF locally. Without it, .tex files are saved and can be compiled via Overleaf.
Claude Desktop config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"resume-builder": {
"command": "python3",
"args": ["/Users/your-username/resume-mcp/server.py"]
}
}
}Data storage
Path | Contents |
| SQLite profile database |
| Generated |
| Application tracker spreadsheet |
MCP tools
Profile
Tool | Description |
| Return full profile (contact, education, experience, projects, skills) |
| Set name, email, phone, LinkedIn, GitHub, website, location |
| Add a work experience entry with bullet points and tech tags |
| Update fields on an existing experience by ID |
| Remove an experience by ID |
| Add a project with tech stack, bullets, URL, and status |
| Update fields on an existing project by ID |
| Remove a project by ID |
| Add an education entry with GPA, coursework, honors |
| Add or update a skill with category and proficiency (1–5) |
| Remove a skill |
| Add multiple skills at once via |
Job scraping
Tool | Description |
| Fetch a job posting URL and extract structured data |
| Parse a job from pasted text when URL scraping fails |
Resume generation
Tool | Description |
| Generate a tailored resume given job details |
| One-shot: scrape URL and immediately generate resume |
| Check profile-to-job match without generating a resume |
| Retrieve full LaTeX source of a previously generated resume |
| List recent resumes with job details and match scores |
Review & optimization
Tool | Description |
| Scrape → generate → analyze in one call; returns everything the LLM needs to rewrite |
| Run deterministic analysis on a resume by ID or raw LaTeX |
| Get resume LaTeX + job info + full profile in one call for rewriting |
| Save LLM-rewritten LaTeX back to DB and compile to PDF |
Application tracker
Tool | Description |
| Manually log an application to the spreadsheet |
| Update status (Generated → Applied → Interview → Offer/Rejected) |
| Summary stats: total, by-status breakdown, average scores |
Usage examples
These are natural language commands you'd send to Claude with the MCP server connected:
Generate a resume for this job posting: [paste URL]
Scrape this job and run the full pipeline so you can optimize my resume: [URL]
Add a new experience: I worked at Acme Corp as a backend engineer from Jan 2024 to present.
Bullets: [...]
What's my match score for a job that requires React, TypeScript, and AWS experience?
Update my application status for row 3 to "Interview"
Show me my application statsThis server cannot be installed
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
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/ddavidgao/resume-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server