Skip to main content
Glama

LaTeX Resume MCP

An MCP (Model Context Protocol) server for intelligent LaTeX resume generation with visual verification, quality scoring, and job description tailoring.

Features

  • Data-driven resumes: Store resume content in JSON, generate LaTeX on demand

  • Visual verification: Preview rendered PDFs as images directly in Claude

  • Quality scoring: Bullet analysis, ATS compatibility checks, keyword matching

  • Job tailoring: Auto-select and prioritize content based on job descriptions

  • Variant management: Create multiple resume versions for different roles

  • LaTeX compilation: Generate publication-quality PDFs using pdflatex

Related MCP server: Cover Letter MCP Server

Installation

uvx latex-resume-mcp

Using pip

pip install latex-resume-mcp

Configuration

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

Using uvx

{
  "mcpServers": {
    "latex-resume": {
      "command": "uvx",
      "args": ["latex-resume-mcp"]
    }
  }
}

Using pip installation

{
  "mcpServers": {
    "latex-resume": {
      "command": "latex-resume-mcp"
    }
  }
}

Custom directories (optional)

{
  "mcpServers": {
    "latex-resume": {
      "command": "uvx",
      "args": ["latex-resume-mcp"],
      "env": {
        "LATEX_RESUME_DATA_DIR": "/path/to/data",
        "LATEX_RESUME_OUTPUT_DIR": "/path/to/output"
      }
    }
  }
}

Prerequisites

LaTeX Installation

To compile resumes to PDF, you need LaTeX installed:

macOS:

brew install --cask mactex
# or for a smaller installation:
brew install --cask basictex

Ubuntu/Debian:

sudo apt install texlive-latex-base texlive-latex-extra texlive-fonts-extra

Windows: Download and install MiKTeX

Available Tools (15)

Data Management

Tool

Description

import_from_latex_file

Parse existing .tex file into structured JSON data

get_resume_data

Get the master resume data pool

update_resume_data

Add, edit, or remove entries (experience, projects, etc.)

list_variants

List all saved resume variants

get_variant

Get details of a specific variant

save_variant

Create or update a variant configuration

Generation & Compilation

Tool

Description

generate_resume

Generate .tex file from data (optionally using a variant)

compile_resume_tex

Compile .tex to PDF using pdflatex

compile_and_preview

Compile and return preview images

preview_resume

Preview an existing PDF as images

Intelligence

Tool

Description

score_resume_quality

Score bullets, check ATS compatibility, match keywords

parse_job_description_text

Extract keywords and requirements from job description

generate_tailored_resume

Auto-select content based on JD, compile, and preview

Utility

Tool

Description

assess_quality

Run programmatic checks (page count, encoding, overflow)

get_config

Show current configuration and available tools

Usage Examples

Basic Workflow

> Get my resume data
Shows all stored experience, projects, education, skills

> Generate my resume and compile it
Creates .tex file and compiles to PDF

> Preview my resume
Returns rendered images of each page

Quality Improvement

> Score my resume quality
Returns bullet scores, ATS report, improvement suggestions

> Score my resume against keywords: Python, AWS, Kubernetes
Shows keyword match percentage and missing terms

Job Tailoring

> Parse this job description: [paste JD text]
Extracts title, required skills, preferred skills, keywords

> Generate a tailored resume for this job description
Auto-selects most relevant experience/projects, reorders skills, compiles

Variant Management

> List my resume variants
Shows: swe, ml_engineer, backend, etc.

> Save a new variant called "startup" with experiences 0,1,3
Creates variant configuration

> Generate my resume using the startup variant
Uses variant's content selection and ordering

Data Model

Resume data is stored as JSON with these sections:

  • contact: Name, email, phone, LinkedIn, GitHub

  • education: Degrees with GPA, dates, coursework

  • publications: Academic publications

  • experience: Work history with bullets and tags

  • projects: Personal/open-source projects with tags

  • skills: Categorized skill lists

Each experience and project can have tags (e.g., ["swe", "ml", "cloud"]) for intelligent content selection.

Default Directories

  • Data: ~/.latex-resumes/data/ (resume JSON and variants)

  • Output: ~/.latex-resumes/output/ (generated .tex and .pdf files)

License

MIT

Available Tools

11 tools
add_educationB
Add a new education entry to a resume (works with modern template).

Args:
    filename: Name of the resume file
    institution: School/University name
    degree: Degree and major
    dates: Dates attended (e.g., 'Sep 2016 -- May 2020')
    location: Location - optional
    details: Additional details (GPA, honors, coursework) - optional

Inputs: filename (required), institution (required), degree (required), dates (required), +2 more. Returns: result

add_experienceA
Add a new work experience entry to a resume (works with modern template).

Args:
    filename: Name of the resume file
    company: Company name
    title: Job title
    dates: Employment dates (e.g., 'Jan 2020 -- Present')
    bullets: List of bullet points describing responsibilities/achievements
    location: Location (city, state/country) - optional

Inputs: filename (required), company (required), title (required), dates (required), +2 more. Returns: result

compile_resumeA
Compile a LaTeX resume to PDF using pdflatex.

Args:
    filename: Name of the resume file to compile
    output_dir: Output directory for the PDF (default: same as resumes directory)

Returns the path to the generated PDF or compilation errors.

Inputs: filename (required), output_dir. Returns: result

create_resumeA
Create a new LaTeX resume file.

Args:
    filename: Name for the new resume file (with or without .tex extension)
    content: Full LaTeX content for the resume. If not provided, uses a template.
    template: Template to use if content not provided. Options: 'modern', 'classic', 'minimal'

Returns confirmation of file creation.

Inputs: filename (required), content, template. Returns: result

delete_resumeB
Delete a LaTeX resume file.

Args:
    filename: Name of the resume file to delete

Inputs: filename (required). Returns: result

edit_resumeA
Edit an existing LaTeX resume file.

Args:
    filename: Name of the resume file to edit
    content: New complete content for the resume (replaces everything)
    find: Text to find for targeted replacement (use with 'replace')
    replace: Text to replace the found text with

Either provide 'content' for full replacement, or 'find' and 'replace' for targeted edit.

Inputs: filename (required), content, find, replace. Returns: result

get_configB

Get current configuration including directories and pdflatex status.

Inputs: no named parameters. Returns: result

get_templateB
Get the content of a resume template.

Args:
    template_name: Name of the template (modern, classic, minimal)

Returns the full LaTeX template content.

Inputs: template_name (required). Returns: result

list_resumesA

List all LaTeX resume files in the resumes directory. Returns filename, last modified date, and file size for each resume.

Inputs: no named parameters. Returns: result

list_templatesA

List available resume templates. Returns the names and descriptions of built-in LaTeX resume templates.

Inputs: no named parameters. Returns: result

read_resumeA
Read the contents of a LaTeX resume file.

Args:
    filename: Name of the resume file (with or without .tex extension)

Returns the full LaTeX content of the resume.

Inputs: filename (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose with no ambiguity: add_education and add_experience handle specific resume sections, create_resume/edit_resume/delete_resume manage file lifecycle, compile_resume handles PDF generation, and list_resumes/read_resume/get_template/list_templates provide information access. The tools are well-differentiated by their specific functions.

    Naming Consistency5/5

    All tools follow a consistent verb_noun naming pattern throughout (e.g., add_education, create_resume, list_templates). The naming convention is perfectly uniform with clear, descriptive names that use snake_case consistently across all 11 tools.

    Tool Count5/5

    With 11 tools, this server is well-scoped for managing LaTeX resumes. Each tool earns its place by covering distinct aspects of resume creation, editing, compilation, and management. The count is appropriate for the domain without being overwhelming or insufficient.

    Completeness5/5

    The tool surface provides complete coverage for LaTeX resume management: create/edit/delete for file lifecycle, add_education/add_experience for content building, compile_resume for PDF generation, and multiple tools for information access (list_resumes, read_resume, get_template, list_templates, get_config). There are no obvious gaps in the workflow.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers