generate-resume-pdf
Convert JSON Resume format data into a professional PDF document with customizable styling options for layout, fonts, and formatting.
Instructions
Generate a professional resume PDF from JSON Resume format. Follows the standard JSON Resume schema (https://jsonresume.org/schema). Supports basics, work, education, projects, skills, awards, certificates, languages, and more. Includes customizable styling options.
Input Schema
Name | Required | Description | Default |
---|---|---|---|
filename | No | Optional filename for the PDF (defaults to "resume.pdf"). SECURITY: Filenames are sanitized and written to a sandboxed directory: • Default: ~/.mcp-pdf/ • Override: Set PDF_OUTPUT_DIR environment variable • Path traversal attempts (.., /, etc) are blocked • Only alphanumeric, spaces, hyphens, underscores, and dots allowed • If file exists, timestamp is appended automatically | |
font | No | Font for the PDF. Defaults to "auto" (system font detection). Options: • Built-in: Helvetica, Times-Roman, Courier (+ Bold/Italic variants) • URL: https://cdn.../font.woff2 (for Unicode/emoji support) • Path: /System/Library/Fonts/Arial.ttf • "auto": Auto-detect Unicode-capable system font Built-in fonts only support ASCII. For Unicode, use a font URL or path. Find Unicode fonts at https://fontsource.org | |
resume | Yes | Resume data in JSON Resume format | |
styling | No | Optional styling customization for the resume layout |
Input Schema (JSON Schema)
{
"properties": {
"filename": {
"description": "Optional filename for the PDF (defaults to \"resume.pdf\").\n\nSECURITY: Filenames are sanitized and written to a sandboxed directory:\n• Default: ~/.mcp-pdf/\n• Override: Set PDF_OUTPUT_DIR environment variable\n• Path traversal attempts (.., /, etc) are blocked\n• Only alphanumeric, spaces, hyphens, underscores, and dots allowed\n• If file exists, timestamp is appended automatically",
"type": "string"
},
"font": {
"description": "Font for the PDF. Defaults to \"auto\" (system font detection).\n\nOptions:\n• Built-in: Helvetica, Times-Roman, Courier (+ Bold/Italic variants)\n• URL: https://cdn.../font.woff2 (for Unicode/emoji support)\n• Path: /System/Library/Fonts/Arial.ttf\n• \"auto\": Auto-detect Unicode-capable system font\n\nBuilt-in fonts only support ASCII. For Unicode, use a font URL or path.\nFind Unicode fonts at https://fontsource.org",
"type": "string"
},
"resume": {
"additionalProperties": false,
"description": "Resume data in JSON Resume format",
"properties": {
"awards": {
"items": {
"additionalProperties": false,
"properties": {
"awarder": {
"type": "string"
},
"date": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"summary": {
"type": "string"
},
"title": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"basics": {
"additionalProperties": false,
"properties": {
"email": {
"format": "email",
"type": "string"
},
"image": {
"format": "uri",
"type": "string"
},
"label": {
"type": "string"
},
"location": {
"additionalProperties": false,
"properties": {
"address": {
"type": "string"
},
"city": {
"type": "string"
},
"countryCode": {
"type": "string"
},
"postalCode": {
"type": "string"
},
"region": {
"type": "string"
}
},
"type": "object"
},
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"profiles": {
"items": {
"additionalProperties": false,
"properties": {
"network": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
},
"username": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"type": "object"
},
"certificates": {
"items": {
"additionalProperties": false,
"properties": {
"date": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"issuer": {
"type": "string"
},
"name": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"education": {
"items": {
"additionalProperties": false,
"properties": {
"area": {
"type": "string"
},
"courses": {
"items": {
"type": "string"
},
"type": "array"
},
"endDate": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"institution": {
"type": "string"
},
"score": {
"type": "string"
},
"startDate": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"studyType": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"interests": {
"items": {
"additionalProperties": false,
"properties": {
"keywords": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"languages": {
"items": {
"additionalProperties": false,
"properties": {
"fluency": {
"type": "string"
},
"language": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"projects": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"endDate": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"entity": {
"type": "string"
},
"highlights": {
"items": {
"type": "string"
},
"type": "array"
},
"keywords": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
},
"roles": {
"items": {
"type": "string"
},
"type": "array"
},
"startDate": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"type": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"publications": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"publisher": {
"type": "string"
},
"releaseDate": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"summary": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"references": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"reference": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"skills": {
"items": {
"additionalProperties": false,
"properties": {
"keywords": {
"items": {
"type": "string"
},
"type": "array"
},
"level": {
"type": "string"
},
"name": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"volunteer": {
"items": {
"additionalProperties": false,
"properties": {
"endDate": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"highlights": {
"items": {
"type": "string"
},
"type": "array"
},
"organization": {
"type": "string"
},
"position": {
"type": "string"
},
"startDate": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"summary": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"work": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"endDate": {
"$ref": "#/properties/resume/properties/work/items/properties/startDate"
},
"highlights": {
"items": {
"type": "string"
},
"type": "array"
},
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"position": {
"type": "string"
},
"startDate": {
"pattern": "^\\d{4}(-\\d{2}(-\\d{2})?)?$",
"type": "string"
},
"summary": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"styling": {
"additionalProperties": false,
"description": "Optional styling customization for the resume layout",
"properties": {
"alignment": {
"additionalProperties": false,
"description": "Text alignment overrides",
"properties": {
"header": {
"description": "Header alignment (default: center)",
"enum": [
"left",
"center",
"right"
],
"type": "string"
}
},
"type": "object"
},
"fontSize": {
"additionalProperties": false,
"description": "Font size overrides for different text elements",
"properties": {
"body": {
"description": "Body text font size (default: 10)",
"type": "number"
},
"contact": {
"description": "Contact info font size (default: 10)",
"type": "number"
},
"heading": {
"description": "Section heading font size (default: 18)",
"type": "number"
},
"label": {
"description": "Job title/label font size (default: 12)",
"type": "number"
},
"name": {
"description": "Name/title font size (default: 24)",
"type": "number"
},
"subheading": {
"description": "Subsection heading font size (default: 14)",
"type": "number"
}
},
"type": "object"
},
"margins": {
"additionalProperties": false,
"description": "Page margin overrides",
"properties": {
"bottom": {
"description": "Bottom margin in points (default: 50)",
"type": "number"
},
"left": {
"description": "Left margin in points (default: 50)",
"type": "number"
},
"right": {
"description": "Right margin in points (default: 50)",
"type": "number"
},
"top": {
"description": "Top margin in points (default: 50)",
"type": "number"
}
},
"type": "object"
},
"spacing": {
"additionalProperties": false,
"description": "Spacing overrides (in moveDown units)",
"properties": {
"afterContact": {
"description": "Space after contact info (default: 0.5)",
"type": "number"
},
"afterHeading": {
"description": "Space after section headings (default: 0.5)",
"type": "number"
},
"afterLabel": {
"description": "Space after label (default: 0.3)",
"type": "number"
},
"afterName": {
"description": "Space after name (default: 0.3)",
"type": "number"
},
"afterSubheading": {
"description": "Space after subsection headings (default: 0.3)",
"type": "number"
},
"afterText": {
"description": "Space after body text (default: 0.3)",
"type": "number"
},
"betweenSections": {
"description": "Space between major sections (default: 0.5)",
"type": "number"
}
},
"type": "object"
}
},
"type": "object"
}
},
"required": [
"resume"
],
"type": "object"
}