cv-tailor-mcp
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., "@cv-tailor-mcpTailor my CV to the ACME job posting using tags backend and cloud, then compile it."
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.
cv-tailor-mcp
An MCP server that tailors a one-page LaTeX CV to a specific job posting
without burning tokens on repetitive work: re-reading your whole CV source,
writing the same LaTeX boilerplate over and over, or pasting pdflatex
compiler logs into the chat.
It works identically from Claude Code and Cursor (or any other MCP-compliant client) -- MCP is an open protocol, so the same server binary is just registered in each client's own config file.
This repo contains no personal data. You keep your own cv_facts.yaml
(your real experience/projects/skills) in your own private repo, and point
this server at it via environment variables. See
cv_tailor_mcp/examples/cv_facts.example.yaml for a
fictional but complete example, and docs/SCHEMA.md for
the full schema.
What it does
Instead of:
Reading your entire CV source file into the model's context every time,
reading a previous tailored variant as a style reference,
having the model write ~150-250 lines of near-identical LaTeX by hand, and
pasting compiler output into the chat 3-5 times while manually tightening spacing to fit one page...
...you get a small set of tool calls:
Tool | Purpose |
| Discover the tags in your |
| Get only the relevant slice of your experience/projects/skills |
| See CVs you've already generated (tagline, tags) without re-reading each file |
| Generate |
| Run |
| Render, auto-fit to one page, compile, and validate the PDF in one call |
render_and_compile tries default, compact, and tight spacing when
spacing_profile is auto, then returns paths, page count, the selected
profile, and structured diagnostics.
Related MCP server: LaTeX Resume MCP
Install
Requires Python 3.10+. A LaTeX distribution is optional during setup:
without pdflatex, the MCP can still generate .tex files and reports a
clear error if compile_cv is called.
git clone https://github.com/AaronUgalde/cv-tailor-mcp.git
cd cv-tailor-mcp
./setup.shThe setup script:
Installs the command in a project-local virtual environment.
Creates
~/.cv-tailor/cv_facts.yamlwith fictional starter data.Creates
~/.cv-tailor/generated/.Safely adds
cv-tailorto~/.cursor/mcp.json, preserving other servers.
It never replaces an existing facts file or cv-tailor MCP entry unless you
explicitly choose the corresponding --force-facts or --force-config flag.
Next, replace the fictional information in ~/.cv-tailor/cv_facts.yaml,
restart Cursor, and ask it to call list_tags.
Install as a user command
Install the published PyPI package as an isolated command with:
uv tool install cv-tailor-mcp
cv-tailor-mcp initpipx install cv-tailor-mcp works as an alternative to uv.
Useful setup options:
cv-tailor-mcp init --no-cursor
cv-tailor-mcp init --facts-path ~/private-cv/facts.yaml --output-dir ~/CVs
cv-tailor-mcp init --force-config # never overwrites facts
cv-tailor-mcp init --force-facts # explicit facts reset
cv-tailor-mcp configure --client all --facts-path ~/private-cv/facts.yaml --output-dir ~/CVs
cv-tailor-mcp configure --client all --project-dir ~/my-cv --force-config
cv-tailor-mcp doctorconfigure updates or migrates Cursor and Claude MCP entries without creating
or changing CV facts. Existing configuration files are backed up before a
write, and unrelated MCP servers and custom environment values are preserved.
Use --cursor-config or --claude-config for non-default locations.
cv-tailor-mcp serve starts the stdio server and is normally invoked by
Cursor rather than run manually.
Configuration
Environment variables
Variable | Required | Default |
| yes | -- |
| yes | -- |
| no | bundled |
| no | resolved via |
The server fails fast if the facts or output paths are missing. A missing
pdflatex only disables compile_cv; all other tools remain available.
Other MCP clients can use the command and environment variables generated in
Cursor's mcp.json. The transport is standard MCP over stdio.
Example session
> list_tags
{"tags": [{"name": "backend", "experience": 1, "projects": 1, ...}, ...]}
> get_facts(tags=["backend", "cloud"])
{... only the entries/bullets tagged backend or cloud ...}
> render_and_compile({
"variant": "acme",
"tagline": "Backend Engineering Intern Candidate & Cloud",
"summary": "Plain text is escaped safely by default.",
"education": [{
"id": "edu_utaustin",
"header_override": {"graduation": "Expected Graduation: December 2027"}
}],
"skill_group_ids": ["languages", "backend_cloud"],
"experience": [{
"id": "acme_backend_intern",
"bullet_ids": ["acme_api_bullet", "acme_pipeline_bullet"],
"bullet_overrides": {
"acme_api_bullet": "Tailored plain-text wording with 25% improvement."
},
"extra_bullets": [{"latex": "Explicit raw \\textbf{LaTeX} opt-in."}]
}],
"projects": [{
"id": "proj_taskflow",
"bullet_ids": ["taskflow_realtime_bullet"],
"header_override": {"subtitle": "Distributed Systems Project"}
}],
"spacing_profile": "auto"
})
{"success": true, "tex_path": ".../cv_acme.tex", "pdf_path": ".../cv_acme.pdf",
"pages": 1, "spacing_profile": "default", "diagnostics": []}Bring your own template
If the bundled one-page style doesn't match yours, write your own
.tex.j2 (Jinja2, using << >> for variables and <% %> for blocks/loops
instead of the default {{ }}/{% %}, since LaTeX already uses {/}) and
point CV_TEMPLATE_PATH at it. It must accept the same context documented in
docs/SCHEMA.md -- see
cv_tailor_mcp/templates/default_cv_template.tex.j2
for a working reference.
Safety model
cv_facts.yamlremains immutable from the MCP's perspective. Education, experience, project, and bullet overrides exist only in the generated CV.Existing YAML text remains trusted LaTeX for backward compatibility. New request text is plain and escaped by default; raw LaTeX requires
{"latex": "..."}.Output validation reports malformed commands, placeholders, missing sections, page-count problems, and suspicious PDF whitespace. Always review the final PDF before submitting it.
License
MIT, see LICENSE.
This 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.
Related MCP Servers
- AlicenseBqualityDmaintenanceAutomatically generates and updates CVs/resumes by aggregating data from git commits, Jira tickets, Credly certifications, and existing PDF resumes, with LaTeX formatting support.1413MIT
- AlicenseAqualityCmaintenanceEnables creating, editing, and compiling LaTeX resumes directly from Claude using built-in templates, with support for managing multiple resume files and automatic PDF generation.11MIT
- AlicenseAqualityCmaintenanceGenerates 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.422MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to fetch a master resume, tailor it to a job description, and generate a polished PDF resume using headless Chromium.
Related MCP Connectors
Tailor resumes, generate cover letters, render CVs as PDF, and browse 22+ templates.
Turn a description into a shareable, editable PDF — invoices, certificates, reports, resumes.
Generate PDFs from templates via AI chat. Works with Claude, ChatGPT, Cursor, and any MCP client.
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/AaronUgalde/cv-tailor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server