resume-mcp
MCP server for maintaining a professional profile database and generating tailored, ATS-optimized resumes for specific job postings.
README
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 resume - No 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
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 call- The 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.py
Tip: 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.py
Optional: 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 |
|---|---|
~/.resume-mcp/profile.db |
SQLite profile database |
~/.resume-mcp/generated/ |
Generated .tex and .pdf files |
~/.resume-mcp/applications.xlsx |
Application tracker spreadsheet |
MCP tools
Profile
| Tool | Description |
|---|---|
get_profile |
Return full profile (contact, education, experience, projects, skills) |
set_contact_info |
Set name, email, phone, LinkedIn, GitHub, website, location |
add_experience |
Add a work experience entry with bullet points and tech tags |
update_experience |
Update fields on an existing experience by ID |
delete_experience |
Remove an experience by ID |
add_project |
Add a project with tech stack, bullets, URL, and status |
update_project |
Update fields on an existing project by ID |
delete_project |
Remove a project by ID |
add_education |
Add an education entry with GPA, coursework, honors |
add_skill |
Add or update a skill with category and proficiency (1–5) |
remove_skill |
Remove a skill |
bulk_add_skills |
Add multiple skills at once via {"Category": ["Skill1", "Skill2"]} |
Job scraping
| Tool | Description |
|---|---|
scrape_job_posting |
Fetch a job posting URL and extract structured data |
analyze_job_from_text |
Parse a job from pasted text when URL scraping fails |
Resume generation
| Tool | Description |
|---|---|
generate_resume |
Generate a tailored resume given job details |
scrape_and_generate |
One-shot: scrape URL and immediately generate resume |
match_score |
Check profile-to-job match without generating a resume |
get_resume_latex |
Retrieve full LaTeX source of a previously generated resume |
list_generated_resumes |
List recent resumes with job details and match scores |
Review & optimization
| Tool | Description |
|---|---|
full_pipeline |
Scrape → generate → analyze in one call; returns everything the LLM needs to rewrite |
review_resume_against_job |
Run deterministic analysis on a resume by ID or raw LaTeX |
get_resume_with_context |
Get resume LaTeX + job info + full profile in one call for rewriting |
save_optimized_resume |
Save LLM-rewritten LaTeX back to DB and compile to PDF |
Application tracker
| Tool | Description |
|---|---|
log_application |
Manually log an application to the spreadsheet |
update_application_status |
Update status (Generated → Applied → Interview → Offer/Rejected) |
get_application_stats |
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 stats
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。