
Product
Socket Now Protects the Firefox Extension Ecosystem
Socket is bringing experimental protection to Firefox, scanning 97,000+ extensions in Mozilla's official directory for malware and risky updates.
Forge powerful, ATS-friendly CVs tailored to any job - an MCP server for intelligent CV generation
Forge powerful, ATS-friendly CVs tailored to any job requirement.
An intelligent MCP (Model Context Protocol) server that analyzes job postings and crafts perfectly-matched CVs.
Install globally:
npm install -g cv-forge
Or install locally in your project:
npm install cv-forge
npm install
npm run build
To use this MCP server with Claude Desktop, you need to add it to your Claude configuration file.
Step 1: Install cv-forge
npm install -g cv-forge
Step 2: Find your Claude Desktop config file
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonStep 3: Add the MCP server to your config
For global installation, add this to your claude_desktop_config.json file:
{
"mcpServers": {
"cv-forge": {
"command": "cv-forge"
}
}
}
Or if installed locally, specify the full path:
{
"mcpServers": {
"cv-forge": {
"command": "node",
"args": ["d:/TopSecret/cv-forge/build/index.js"],
"cwd": "d:/TopSecret/cv-forge"
}
}
}
Step 4: (Optional) Add environment configuration
You can customize the server with environment variables:
{
"mcpServers": {
"cv-forge": {
"command": "cv-forge",
"env": {
"DEFAULT_OUTPUT_PATH": "D:/CV",
"PDF_BASE_FONT_SIZE": "12px",
"PDF_LINE_HEIGHT": "1.4"
}
}
}
}
Step 5: Restart Claude Desktop After adding the configuration, restart Claude Desktop application.
Step 6: Verify Connection In Claude Desktop, you should see the CV Forge tools available. You can ask Claude to use tools like:
You can also run the server directly for testing:
npm start
The server runs on stdio and communicates via the Model Context Protocol.
parse_job_requirementsParses job requirements and extracts key information for CV tailoring.
Parameters:
jobTitle (string, required): The job title/positioncompany (string, required): Company namejobDescription (string, required): Full job description textrequirements (array, optional): Specific requirements if separatedpreferredSkills (array, optional): Preferred skills if separatedlocation (string, optional): Job locationsalaryRange (string, optional): Salary range if providedgenerate_cv_dataGenerates tailored CV content based on user profile and job requirements.
Parameters:
userProfile (object, required): Complete user profile informationjobRequirements (object, required): Job requirements objectUser Profile Structure:
{
"personalInfo": {
"fullName": "John Doe",
"email": "john@example.com",
"phone": "+1-555-0123",
"location": "City, State",
"linkedIn": "linkedin.com/in/johndoe",
"github": "github.com/johndoe",
"website": "johndoe.com"
},
"summary": "Professional summary text...",
"experience": [
{
"jobTitle": "Software Engineer",
"company": "Tech Corp",
"location": "City, State",
"startDate": "2020-01",
"endDate": "2023-12",
"description": "Job description...",
"achievements": [
"Achievement 1",
"Achievement 2"
]
}
],
"education": [
{
"degree": "Bachelor of Science in Computer Science",
"institution": "University Name",
"location": "City, State",
"graduationYear": "2020",
"gpa": "3.8",
"honors": ["Magna Cum Laude"]
}
],
"skills": {
"technical": ["JavaScript", "Python", "React"],
"soft": ["Leadership", "Communication"],
"languages": ["English", "Spanish"],
"certifications": ["AWS Certified"]
},
"projects": [
{
"name": "Project Name",
"description": "Project description...",
"technologies": ["React", "Node.js"],
"url": "github.com/johndoe/project"
}
]
}
save_cv_textSaves CV content as a formatted text file.
Parameters:
cvData (object, required): Tailored CV data object (from generate_cv_data)outputPath (string, required): Directory path where the CV should be savedfileName (string, optional): Custom filename (without extension), defaults to "generated_cv"generate_and_save_cv_pdf (Recommended)Generate tailored CV and save directly as professional PDF (combines CV generation and PDF creation in one step).
Parameters:
userProfile (object, required): Complete user profile informationjobRequirements (object, required): Job requirements objectoutputPath (string, optional): Directory path where the CV should be saved (uses DEFAULT_OUTPUT_PATH if not provided)fileName (string, optional): Custom filename (without extension), defaults to "professional_cv"generate_and_save_cv_markdown (Recommended)Generate tailored CV and save directly as Markdown (combines CV generation and Markdown creation in one step).
Parameters:
userProfile (object, required): Complete user profile informationjobRequirements (object, required): Job requirements objectoutputPath (string, required): Directory path where the CV should be savedfileName (string, optional): Custom filename (without extension), defaults to "cv_markdown"generate_and_save_cv_html (Recommended)Generate tailored CV and save directly as HTML (combines CV generation and HTML creation in one step).
Parameters:
userProfile (object, required): Complete user profile informationjobRequirements (object, required): Job requirements objectoutputPath (string, required): Directory path where the CV should be savedfileName (string, optional): Custom filename (without extension), defaults to "cv_html"generate_cv_pdf (Advanced)Generate and save CV as a professional PDF document from pre-generated CV data.
Parameters:
cvData (object, required): Tailored CV data object (from generate_cv_data)outputPath (string, required): Directory path where the CV should be savedfileName (string, optional): Custom filename (without extension), defaults to "professional_cv"generate_cv_markdown (Advanced)Generate CV as Markdown format from pre-generated CV data.
Parameters:
cvData (object, required): Tailored CV data object (from generate_cv_data)outputPath (string, required): Directory path where the CV should be savedfileName (string, optional): Custom filename (without extension), defaults to "cv_markdown"generate_cv_html (Advanced)Generate CV as styled HTML document from pre-generated CV data.
Parameters:
cvData (object, required): Tailored CV data object (from generate_cv_data)outputPath (string, required): Directory path where the CV should be savedfileName (string, optional): Custom filename (without extension), defaults to "cv_web"The MCP server supports various configuration options via environment variables in the Claude Desktop config:
{
"mcpServers": {
"cv-forge": {
"command": "node",
"args": ["path/to/cv-forge/build/index.js"],
"cwd": "path/to/cv-forge",
"env": {
"DEFAULT_OUTPUT_PATH": "D:/CV",
"TEMP_DIR": "C:/Users/YourName/AppData/Local/Temp/cv-maker",
"PDF_TIMEOUT": "300000",
"PDF_MARGIN_TOP": "20mm",
"PDF_MARGIN_RIGHT": "20mm",
"PDF_MARGIN_BOTTOM": "20mm",
"PDF_MARGIN_LEFT": "20mm",
"PDF_BASE_FONT_SIZE": "12px",
"PDF_LINE_HEIGHT": "1.4",
"PDF_H1_FONT_SIZE": "20px",
"PDF_H2_FONT_SIZE": "15px",
"PDF_H3_FONT_SIZE": "13px",
"PDF_PARAGRAPH_SPACING": "8px",
"PDF_SECTION_SPACING": "12px"
}
}
}
}
Configuration Options:
DEFAULT_OUTPUT_PATH: Default directory for saving CV files (when outputPath is not provided or is "./")TEMP_DIR: Directory for temporary files during PDF generationPDF_TIMEOUT: Timeout for PDF generation in millisecondsPDF_MARGIN_*: PDF page margins (top, right, bottom, left)PDF_BASE_FONT_SIZE: Base font size for CV body text (12px ≈ MS Word 9pt, 13px ≈ 10pt)PDF_LINE_HEIGHT: Line height for text (1.4 recommended for compact layout)PDF_H1_FONT_SIZE: Font size for name/title headingPDF_H2_FONT_SIZE: Font size for section headingsPDF_H3_FONT_SIZE: Font size for job titles and subsectionsPDF_PARAGRAPH_SPACING: Spacing between paragraphsPDF_SECTION_SPACING: Spacing between major sectionsOnce connected to Claude Desktop, you can use natural language to interact with the CV maker:
"Can you parse this job posting for me:
Job Title: Senior Software Engineer
Company: TechCorp Inc
Description: We are looking for a Senior Software Engineer with 5+ years of experience in JavaScript, React, and Node.js. Must have experience with cloud platforms and agile methodologies. Strong communication skills required."
"Generate a tailored CV for me and save it as a PDF based on this job posting:
Job Title: Senior Software Engineer
Company: TechCorp Inc
Job Description: We are looking for a Senior Software Engineer with 5+ years of experience in JavaScript, React, and Node.js. Must have experience with cloud platforms and agile methodologies.
My Profile:
- Full Name: John Doe
- Email: john@example.com
- Phone: +1-555-0123
- Experience: 6 years as Software Engineer at various companies
- Skills: JavaScript, Python, React, Node.js, AWS, Docker
- Education: BS Computer Science from State University
Please save it to C:\Users\John\Documents\CVs with filename 'john_doe_senior_engineer_techcorp'"
"Can you generate my CV in multiple formats? I need:
1. A professional PDF for applications
2. A Markdown version for my GitHub
3. An HTML version for my website
Save them all to C:\Users\John\Documents\CVs with the base filename 'john_doe_cv'"
If you want to use the tools directly (advanced usage):
Parse a job posting:
{
"tool": "parse_job_requirements",
"args": {
"jobTitle": "Senior Software Engineer",
"company": "TechCorp Inc",
"jobDescription": "We are looking for a Senior Software Engineer with 5+ years of experience in JavaScript, React, and Node.js. Must have experience with cloud platforms and agile methodologies."
}
}
Generate tailored CV:
{
"tool": "generate_cv_data",
"args": {
"userProfile": { /* user profile object */ },
"jobRequirements": { /* job requirements object */ }
}
}
Generate PDF CV:
{
"tool": "generate_cv_pdf",
"args": {
"cvData": { /* tailored CV data */ },
"outputPath": "C:\\Users\\YourName\\Documents\\CVs",
"fileName": "senior_engineer_techcorp_cv"
}
}
Generate Markdown CV:
{
"tool": "generate_cv_markdown",
"args": {
"cvData": { /* tailored CV data */ },
"outputPath": "C:\\Users\\YourName\\Documents\\CVs",
"fileName": "cv_for_github"
}
}
Generate HTML CV:
{
"tool": "generate_cv_html",
"args": {
"cvData": { /* tailored CV data */ },
"outputPath": "C:\\Users\\YourName\\Documents\\CVs",
"fileName": "web_resume"
}
}
Save CV as text file:
{
"tool": "save_cv_text",
"args": {
"cvData": { /* tailored CV data */ },
"outputPath": "C:\\Users\\YourName\\Documents\\CVs",
"fileName": "senior_engineer_techcorp_cv"
}
}
Job Analysis: The server parses job descriptions to extract:
CV Tailoring: Based on the analysis, it:
Output Generation: Creates a well-formatted text CV that:
cv-forge/
├── src/
│ ├── index.ts # Main MCP server
│ └── lib/
│ ├── job-parser.ts # Job requirement parsing logic
│ ├── cv-generator.ts # CV tailoring algorithms
│ ├── document-generator.ts # Multi-format document generation
│ └── word-generator.ts # Word document generation (future)
├── build/ # Compiled JavaScript files
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
├── claude_desktop_config.example.json # Example configuration
└── README.md # This file
npm run build
npm run dev
src/index.ts: Main MCP server with tool registrationsrc/lib/job-parser.ts: Parses job requirements and extracts key informationsrc/lib/cv-generator.ts: Generates tailored CV content based on job requirementssrc/lib/document-generator.ts: Multi-format document generation (PDF, HTML, Markdown)src/lib/word-generator.ts: (Future) Word document generation functionalityDEFAULT_OUTPUT_PATH is set in your Claude Desktop configPDF_BASE_FONT_SIZE in environment variables (12px ≈ 9pt, 13px ≈ 10pt MS Word)PDF_LINE_HEIGHT for tighter/looser spacingTEMP_DIR path is valid@modelcontextprotocol/sdk: Core MCP functionalityzod: Schema validation and type safetytypescript: TypeScript compilermd-to-pdf: PDF generation from Markdownmarkdown-it: Markdown parsing and HTML conversiondocx: Word document generation (for future Word output)This project is available under the MIT License.
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
FAQs
Forge powerful, ATS-friendly CVs tailored to any job - an MCP server for intelligent CV generation
We found that cv-forge demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket is bringing experimental protection to Firefox, scanning 97,000+ extensions in Mozilla's official directory for malware and risky updates.

Research
/Security News
Three compromised Rust crates pulled in a malicious dependency that downloaded and executed cross-platform malware during Cargo builds.

Research
/Security News
Socket uncovered 77 linked Firefox extensions, including 40 that steal wallet secrets or credentials and 37 deceptive sports-score shells.