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:
- Internet connection: The MCP server needs internet access to reach the PDF generation service
- Service status: Use the
check_service_statustool to verify the service is running - 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
- Verify the configuration file path and JSON syntax
- Restart Claude Desktop after adding the configuration
- 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:
- MCP Server (this package): Runs locally on your machine, communicates with Claude Desktop via STDIO
- 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
- GitHub Issues: https://github.com/yourusername/resume-generator-mcp/issues
- Documentation: https://github.com/yourusername/resume-generator-mcp
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file resume_generator_mcp-1.7.1.tar.gz.
File metadata
- Download URL: resume_generator_mcp-1.7.1.tar.gz
- Upload date:
- Size: 94.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdad3fe4bc143eceae9666b04a6da5d258ee5eb10881d339fdf0b8cb83b9ce0c
|
|
| MD5 |
43f1d39f7a24dc594a1273210ac69edf
|
|
| BLAKE2b-256 |
d8ebd1877d6d02ebf1acdf4152c83d0d0bc3f4b5bad989f5d754d94f80e1c85c
|
File details
Details for the file resume_generator_mcp-1.7.1-py3-none-any.whl.
File metadata
- Download URL: resume_generator_mcp-1.7.1-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9d558a8f7404032730887a90a8aafea4e22e136a2df7fb5c859e71160c8dbe4
|
|
| MD5 |
1d9ab33337c499d2612e8c0101b7ea59
|
|
| BLAKE2b-256 |
a6cfa609d2e6794fa84cdb4ecf8a64a7b1d04f032f9dd89082ab56a47f30032a
|