Skip to main content

MCP server for generating professional PDF resumes from YAML/JSON data

Project description

Resume Generator MCP Server

A Model Context Protocol (MCP) server for generating professional PDF resumes from YAML/JSON data. Works seamlessly with Claude Desktop, ChatGPT Desktop, and other MCP-compatible AI assistants.

Features

  • Generate professional PDF resumes through natural language conversations
  • No local LibreOffice installation required - all processing happens on a remote service
  • Support for YAML and JSON input formats
  • Built-in validation and helpful error messages
  • Pre-configured professional resume template
  • Works with Claude Desktop, ChatGPT Desktop, Cline, and other MCP clients

Installation

Prerequisites

  • Python 3.10 or higher
  • Internet connection (to reach the remote PDF generation service)

Install via pip

pip install resume-generator-mcp

If you get an "externally-managed-environment" error:

pip install --break-system-packages resume-generator-mcp

Or use pipx (recommended for system Python):

pipx install resume-generator-mcp

Configuration

For Claude Desktop

Add the following to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "resume-generator": {
      "command": "python",
      "args": ["-m", "resume_generator_mcp"]
    }
  }
}

For ChatGPT Desktop

Add to your ChatGPT Desktop configuration file:

macOS: ~/Library/Application Support/ChatGPT/mcp_config.json

Windows: %APPDATA%\ChatGPT\mcp_config.json

{
  "mcpServers": {
    "resume-generator": {
      "command": "python",
      "args": ["-m", "resume_generator_mcp"]
    }
  }
}

For Cline (VS Code Extension)

Add to your Cline MCP settings:

{
  "mcpServers": {
    "resume-generator": {
      "command": "python",
      "args": ["-m", "resume_generator_mcp"]
    }
  }
}

Environment Variables (Optional)

You can customize the API endpoint by setting an environment variable:

{
  "mcpServers": {
    "resume-generator": {
      "command": "python",
      "args": ["-m", "resume_generator_mcp"],
      "env": {
        "RESUME_API_URL": "https://wrok-docx.fly.dev"
      }
    }
  }
}

Usage

Once configured, you can interact with the resume generator through natural language in Claude Desktop:

Example Conversations

Generate a resume from scratch:

Create a resume for Alex Johnson, a Senior Software Engineer at TechCorp in Seattle.
Email: alex@example.com, Phone: +1-555-0100.
Education: MS Computer Science from Stanford, 2015, GPA 3.9.
Current role since Jan 2022, led cloud migration project and reduced costs by 40%.

Generate from YAML:

Generate a resume using this YAML:
name: Alex Johnson
email: alex@example.com
phone: +1 555 123 4567
location: Seattle, WA
linkedin: https://www.linkedin.com/in/alexjohnson/
education:
  title: Master of Science in Computer Science
  college: Stanford University
  location: Stanford, CA
  period: June 2015
  gpa: 3.9 / 4.0
roles:
  - company: TechCorp
    title: Senior Software Engineer
    locations:
      - location: Seattle, USA
        start_date: Jan 2022
        end_date: Present
    achievements:
      - Led cloud migration reducing costs by 40%
      - Mentored 5 junior developers

Validate resume data:

Validate this resume YAML before generating the PDF

Check service status:

Is the resume generation service running?

Available Tools

The MCP server provides the following tools:

generate_resume

Generate a PDF resume from individual parameters (name, email, education, roles, etc.)

generate_resume_from_yaml

Generate a PDF resume from complete YAML content

validate_resume_yaml

Validate YAML resume content without generating a PDF

check_service_status

Check if the remote resume generation service is accessible

Available Resources

resume://schema

Get the complete YAML schema specification for resumes

resume://example

Get an example resume YAML for reference

Resume Data Format

Required Fields

name: string           # Full name
email: string          # Email address
phone: string          # Phone with country code (e.g., +1 555 123 4567)
location: string       # Current location
linkedin: string       # LinkedIn profile URL

education:
  title: string        # Degree and field
  college: string      # Institution name
  location: string     # Institution location
  period: string       # Graduation date
  gpa: string         # Grade point average

roles:                 # Array of work experience
  - company: string    # Company name
    title: string      # Job title
    locations:         # Array of locations for this role
      - location: string      # Work location
        start_date: string    # Start date
        end_date: string      # End date or "Present"
    achievements:      # Array of bullet points
      - string

Optional Fields

skills:                # Array of skills/technologies
  - string

Troubleshooting

Service Connection Issues

If you see connection errors, check:

  1. Internet connection: The MCP server needs internet access to reach the PDF generation service
  2. Service status: Use the check_service_status tool to verify the service is running
  3. Firewall: Ensure your firewall allows outbound HTTPS connections

Installation Issues

If installation fails:

# Upgrade pip
pip install --upgrade pip

# Install with verbose output
pip install -v resume-generator-mcp

# Or install from source
git clone https://github.com/yourusername/resume-generator-mcp
cd resume-generator-mcp
pip install -e .

Claude Desktop Not Recognizing the Server

  1. Verify the configuration file path and JSON syntax
  2. Restart Claude Desktop after adding the configuration
  3. Check Claude Desktop logs for errors

Development

Running from Source

# Clone the repository
git clone https://github.com/yourusername/resume-generator-mcp
cd resume-generator-mcp

# Install in development mode
pip install -e .

# Run the server
python -m resume_generator_mcp

Testing

# Install test dependencies
pip install pytest

# Run tests
pytest

Architecture

The system consists of two components:

  1. MCP Server (this package): Runs locally on your machine, communicates with Claude Desktop via STDIO
  2. PDF Generation API: Hosted service that performs template rendering and PDF conversion using LibreOffice
Claude Desktop → MCP Server (local) → HTTPS → PDF API (remote) → PDF file

This architecture means:

  • Users don't need to install LibreOffice
  • No template files needed locally
  • Fast and consistent PDF generation
  • Works on all platforms (macOS, Windows, Linux)

Privacy & Security

  • Resume data is sent to the remote API via HTTPS
  • PDFs are generated on-demand and not stored on the server
  • No data is logged or retained after generation
  • The service is stateless and ephemeral

License

MIT License - see LICENSE file for details

Support

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Changelog

1.0.0 (2025-11-05)

  • Initial release
  • Support for YAML/JSON resume input
  • Remote PDF generation via Fly.io service
  • Integration with Claude Desktop
  • Built-in validation and error handling

Project Structure

.
├── app.py                      # Main Flask application
├── Dockerfile                  # Docker container definition
├── pyproject.toml             # Python package configuration
├── requirements.txt           # Python dependencies
├── fly.toml                   # Fly.io deployment config
├── docs/                      # Documentation files
│   ├── QUICKSTART.md
│   ├── DEPLOYMENT_GUIDE.md
│   └── ...
├── examples/                  # Example YAML files and generated PDFs
│   ├── document.yaml
│   ├── sravan_resume.yaml
│   └── *.pdf
├── scripts/                   # Utility scripts
│   ├── setup_mcp.sh
│   ├── process_template.py
│   ├── explode_docx.py
│   └── implode_docx.py
├── templates/                 # DOCX templates and schemas
│   ├── doc_template_roles.xml
│   ├── resume/               # Exploded DOCX structure
│   ├── resume_schema.json
│   └── openapi.yaml
└── resume_generator_mcp/      # MCP server package
    ├── __init__.py
    └── __main__.py

Docker Development (for contributors)

If you're contributing to the backend service:

# Build the Docker image
docker build . -t docx

# Run the service locally
docker run -p 3002:5000 docx

# Test the service
curl http://localhost:3002/test
curl -X POST -F "yaml_file=@examples/document.yaml" http://localhost:3002/process_resume --output resume.pdf

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resume_generator_mcp-1.7.1.tar.gz (94.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

resume_generator_mcp-1.7.1-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file resume_generator_mcp-1.7.1.tar.gz.

File metadata

File hashes

Hashes for resume_generator_mcp-1.7.1.tar.gz
Algorithm Hash digest
SHA256 fdad3fe4bc143eceae9666b04a6da5d258ee5eb10881d339fdf0b8cb83b9ce0c
MD5 43f1d39f7a24dc594a1273210ac69edf
BLAKE2b-256 d8ebd1877d6d02ebf1acdf4152c83d0d0bc3f4b5bad989f5d754d94f80e1c85c

See more details on using hashes here.

File details

Details for the file resume_generator_mcp-1.7.1-py3-none-any.whl.

File metadata

File hashes

Hashes for resume_generator_mcp-1.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b9d558a8f7404032730887a90a8aafea4e22e136a2df7fb5c859e71160c8dbe4
MD5 1d9ab33337c499d2612e8c0101b7ea59
BLAKE2b-256 a6cfa609d2e6794fa84cdb4ecf8a64a7b1d04f032f9dd89082ab56a47f30032a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page