CV

CV Forge MCP Server: CVs from Job Postings

Generate tailored CVs from job postings with the CV Forge MCP server, analyzing roles to craft perfectly matched resumes by Chandan Bhagat.

Overview

CV Forge is an MCP (Model Context Protocol) server that converts job postings into tailored, ATS-friendly CVs, cover letters, and email templates. It analyzes job descriptions to extract skills, qualifications, contact details, and hiring-manager cues, then combines that analysis with a user profile to produce application-ready documents. The server is implemented to run as an MCP tool (stdio) so it can integrate with local LLM clients such as Claude Desktop or be used standalone for automation and testing.

For developers, CV Forge simplifies the repetitive and detail-oriented task of adapting a resume to specific job requirements. It produces multiple output formats (PDF by default), emphasizes ATS-friendly structure and keywords, and exposes a small set of tools for parsing postings and generating CV content programmatically.

Features

  • Parse job postings to extract key skills, required qualifications, contact emails, and hiring manager names
  • Generate tailored CV content (summary, experience bullet points, skills) based on user profile and job requirements
  • Produce cover letters and professional email templates matched to the target role
  • Export in multiple formats: PDF (default), HTML, Markdown, and plain text
  • PDF generation with publication-ready styling and configurable typography
  • ATS-optimized output (keyword placement and standard sectioning)
  • Quick CLI startup for local testing and MCP-compatible stdio communication for LLM clients
  • Environment-driven configuration for default output directories and PDF styling

Installation / Configuration

Install via npm (recommended):

# global install
npm install -g cv-forge

# or local install in a project
npm install cv-forge

From source:

git clone https://github.com/thechandanbhagat/cv-forge.git
cd cv-forge
npm install
npm run build

Run the server for testing:

npm start
# runs on stdio and communicates using the Model Context Protocol

Example Claude Desktop MCP configuration (global install):

{
  "mcpServers": {
    "cv-forge": {
      "command": "cv-forge"
    }
  }
}

Example (local install) with full paths:

{
  "mcpServers": {
    "cv-forge": {
      "command": "node",
      "args": ["/path/to/cv-forge/build/index.js"],
      "cwd": "/path/to/cv-forge"
    }
  }
}

Optional environment variables can tune defaults:

"env": {
  "DEFAULT_OUTPUT_PATH": "/home/user/CVs",
  "PDF_BASE_FONT_SIZE": "12px",
  "PDF_LINE_HEIGHT": "1.4"
}

After updating your Claude Desktop config, restart the app to load the MCP server.

Available Tools

The server exposes a concise set of tools. Below is a summary and their primary parameters.

ToolPurposeKey parameters
parse_job_requirementsExtract skills, contacts, and requirements from a job postingjobTitle (string), company (string), jobDescription (string), requirements (array, optional)
generate_cv_dataProduce tailored CV content using profile + job requirementsuserProfile (object), jobRequirements (object)
save_cv_textSave CV content to disk as formatted textcvData (object), outputPath (string), fileName (string, optional)

User profile structure (simplified):

{
  "personalInfo": { "fullName": "Jane Doe", "email": "[email protected]" },
  "summary": "Senior developer ...",
  "experience": [ { "jobTitle": "Backend Engineer", "company": "Acme", "startDate": "2019-01", "endDate": "2023-06", "description": "..." } ],
  "education": [ { "degree": "B.Sc.", "institution": "University" } ],
  "skills": { "technical": ["Node.js","Python"], "soft": ["Collaboration"] }
}

Use Cases

  • Developer tailoring: A software engineer pastes a LinkedIn job posting, runs parse_job_requirements, then generate_cv_data to get a resume that emphasises the exact technologies and achievements an ATS will match.
  • Batch CV generation: HR or career coaches can script generation for multiple roles by feeding job descriptions and standardized candidate profiles to produce PDFs in a target folder.
  • Application package creation: With a single command you can generate a CV, a role-specific cover letter, and an email template addressing the hiring manager if found in the posting.
  • Local LLM tooling: Integrate CV Forge as an MCP plugin for desktop LLM apps (e.g., Claude Desktop) so an assistant can call parsing and generation tools programmatically during interactive sessions.

Quick example — parse a job and generate CV data (pseudo-JSON exchange):

  1. parse_job_requirements input:
{
  "jobTitle": "Senior Backend Engineer",
  "company": "Acme Inc.",
  "jobDescription": "<full job posting text here>"
}
  1. generate_cv_data input:
{
  "userProfile": { /* profile object */ },
  "jobRequirements": { /* output from parse_job_requirements */ }
}

Output formats include PDF (default), HTML, Markdown, and text. PDF generation is optimized for print and electronic distribution; set DEFAULT_OUTPUT_PATH to control where files are written.

For the full source, examples, and issue tracking, see the project on GitHub: https://github.com/thechandanbhagat/cv-forge