c

cv-forge

@thechandanbhagat/cv-forge
Hosted
0 Stars 4 次浏览 thechandanbhagat 更新于 2026-08-23

Forge powerful, ATS-friendly CVs tailored to any job - an MCP server for intelligent CV generation

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "cv-forge": {
      "args": [
        "cv-forge@1.0.1"
      ],
      "command": "npx"
    }
  }
}

可用工具 (5 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

tavily_search 14 个参数 需填 1 项

Search the web for current information on any topic. Use for news, facts, or data beyond your knowledge cutoff. Returns snippets and source URLs.

必填参数:query

tavily_extract 6 个参数 需填 1 项

Extract content from URLs. Returns raw page content in markdown or text format.

必填参数:urls

tavily_crawl 11 个参数 需填 1 项

Crawl a website starting from a URL. Extracts content from pages with configurable depth and breadth.

必填参数:url

tavily_map 8 个参数 需填 1 项

Map a website's structure. Returns a list of URLs found starting from the base URL.

必填参数:url

tavily_research 2 个参数 需填 1 项

Perform comprehensive research on a given topic or question. Use this tool when you need to gather information from multiple sources to answer a question or complete a task. Returns a detailed response based on the research findings.

必填参数:input

服务介绍

CV Forge

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.

# Features

  • Parse Job Requirements: Extract key skills, qualifications, email addresses, and hiring manager names from job postings
  • Generate Tailored CVs: Create customized CV content based on user profile and job requirements
  • Cover Letter Generation: Generate personalized cover letters tailored to specific job applications
  • Email Template Creation: Create professional email templates with automatic email address detection
  • Complete Application Packages: Generate CV, cover letter, and email template in one command
  • PDF by Default: Automatically generates professional PDF documents when no format is specified
  • Multiple Output Formats: Generate documents in PDF (default), HTML, Markdown, and text formats
  • Professional PDF Generation: Create publication-ready PDF documents with professional styling
  • ATS-Friendly: Optimized for Applicant Tracking Systems with proper keyword placement
  • Smart Contact Extraction: Automatically extracts email addresses and hiring manager names from job descriptions

# Star History

[Star History Chart](https://www.star-history.com/# thechandanbhagat/cv-forge&type=date&legend=top-left)

# Installation

# # Via npm (Recommended)

Install globally:

npm install -g cv-forge

Or install locally in your project:

npm install cv-forge

# # From Source

  1. Clone this repository
  2. Install dependencies:
    npm install
    
  3. Build the project:
    npm run build
    

# Usage

# # Connecting to Claude Desktop

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

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Step 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:

  • "Parse this job posting for me"
  • "Generate a tailored CV based on my profile and this job"
  • "Save my CV as a PDF file"

# # Running the MCP Server Standalone (for testing)

You can also run the server directly for testing:

npm start

The server runs on stdio and communicates via the Model Context Protocol.

# # Available Tools

# # # 1. parse_job_requirements

Parses job requirements and extracts key information for CV tailoring.

Parameters:

  • jobTitle (string, required): The job title/position
  • company (string, required): Company name
  • jobDescription (string, required): Full job description text
  • requirements (array, optional): Specific requirements if separated
  • preferredSkills (array, optional): Preferred skills if separated
  • location (string, optional): Job location
  • salaryRange (string, optional): Salary range if provided

# # # 2. generate_cv_data

Generates tailored CV content based on user profile and job requirements.

Parameters:

  • userProfile (object, required): Complete user profile information
  • jobRequirements (object, required): Job requirements object

User 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"
    }
  ]
}

# # # 3. save_cv_text

Saves 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 saved
  • fileName (string, optional): Custom filename (without extension), defaults to "generated_cv"

# # # 4. generate_cv (Recommended - Main CV Generation Tool)

Generate tailored CV and save to specified location or default folder. Defaults to PDF format if no format is specified.

Parameters:

  • userProfile (object, required): Complete user profile information
  • jobRequirements (object, required): Job requirements object
  • outputPath (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"
  • format (string, optional): Output format - "pdf" (default), "html", or "markdown"
  • pageSize (string, optional): PDF page size (e.g., 'A4', 'Letter', 'Legal') - uses PDF_PAGE_SIZE env var if not provided
  • margins (object, optional): PDF margins with top, right, bottom, left properties (e.g., '10mm', '0.8in') - uses PDF_MARGIN_* env vars if not provided

# # # 5. generate_and_save_cv_pdf (Legacy - Use generate_cv instead)

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 information
  • jobRequirements (object, required): Job requirements object
  • outputPath (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"

# # # 6. 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 information
  • jobRequirements (object, required): Job requirements object
  • outputPath (string, required): Directory path where the CV should be saved
  • fileName (string, optional): Custom filename (without extension), defaults to "cv_markdown"

# # # 7. 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 information
  • jobRequirements (object, required): Job requirements object
  • outputPath (string, required): Directory path where the CV should be saved
  • fileName (string, optional): Custom filename (without extension), defaults to "cv_html"

# # # 8. 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 saved
  • fileName (string, optional): Custom filename (without extension), defaults to "professional_cv"

# # # 9. 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 saved
  • fileName (string, optional): Custom filename (without extension), defaults to "cv_markdown"

# # # 10. 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 saved
  • fileName (string, optional): Custom filename (without extension), defaults to "cv_web"

# # Cover Letter and Email Template Tools

# # # 11. generate_cover_letter (Recommended)

Generate a tailored cover letter for a specific job application. Returns formatted text that can be displayed on screen or saved as PDF.

Parameters:

  • userProfile (object, required): Complete user profile information
  • jobRequirements (object, required): Job requirements object
  • hiringManagerName (string, optional): Name of the hiring manager if known
  • format (string, optional): Output format - "text" (default) for on-screen display, "html" for styled viewing

# # # 12. save_cover_letter_pdf

Generate and save a cover letter as PDF to specified location. Automatically extracts email addresses and hiring manager names from job descriptions.

Parameters:

  • userProfile (object, required): Complete user profile information
  • jobRequirements (object, required): Job requirements object
  • outputPath (string, optional): Directory path where the cover letter should be saved
  • fileName (string, optional): Custom filename (without extension), defaults to "cover_letter"
  • hiringManagerName (string, optional): Name of the hiring manager if known
  • pageSize (string, optional): PDF page size (e.g., 'A4', 'Letter', 'Legal')
  • margins (object, optional): PDF margins with top, right, bottom, left properties

# # # 13. generate_email_template

Generate a professional email template for job application. Automatically detects email addresses from job description.

Parameters:

  • userProfile (object, required): Complete user profile information
  • jobRequirements (object, required): Job requirements object
  • templateType (string, optional): Type of email template - "application" (default), "follow_up", "inquiry", "thank_you"
  • recipientEmail (string, optional): Recipient email address (optional, will use extracted email from job description if available)
  • hiringManagerName (string, optional): Name of the hiring manager if known

# # # 14. draft_complete_application (Recommended - One-Stop Solution)

Draft a complete job application package: CV, cover letter, and email template. Automatically generates PDF CV and cover letter, plus email template if email address is found in the job description.

Parameters:

  • userProfile (object, required): Complete user profile information
  • jobRequirements (object, required): Job requirements object
  • outputPath (string, optional): Directory path where files should be saved
  • baseFileName (string, optional): Base filename for generated files (without extension), defaults to "job_application"
  • hiringManagerName (string, optional): Name of the hiring manager if known

# Configuration

# # Environment Variables

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_PAGE_SIZE": "A4",
        "PDF_MARGIN_TOP": "10mm",
        "PDF_MARGIN_RIGHT": "10mm",
        "PDF_MARGIN_BOTTOM": "10mm",
        "PDF_MARGIN_LEFT": "10mm",
        "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 generation
  • PDF_TIMEOUT: Timeout for PDF generation in milliseconds
  • PDF_PAGE_SIZE: Default PDF page size - defaults to 'A4'
    • Common sizes: 'A4' (210×297mm), 'Letter' (8.5×11in), 'Legal' (8.5×14in)
  • PDF_MARGIN_*: PDF page margins (top, right, bottom, left) - defaults to '10mm'
  • 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 heading
  • PDF_H2_FONT_SIZE: Font size for section headings
  • PDF_H3_FONT_SIZE: Font size for job titles and subsections
  • PDF_PARAGRAPH_SPACING: Spacing between paragraphs
  • PDF_SECTION_SPACING: Spacing between major sections

# Example Usage with Claude Desktop

Once connected to Claude Desktop, you can use natural language to interact with the CV maker:

# # 1. Parse Job Requirements

"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."

# # 2. Generate Tailored CV (Simple One-Step Process - PDF by Default)

"Generate a tailored CV for me 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'"

Note: This will automatically generate a PDF file (default format) unless you specify a different format.

# # 3. Generate Different Formats

"Can you generate my CV in multiple formats? I need:
1. A professional PDF for applications (default format)
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'"

Or specify format explicitly:

"Generate my CV in HTML format and save it to C:\Users\John\Documents\CVs"

Or specify custom page size and margins for PDF:

"Generate my CV as a PDF with Letter page size and 1 inch margins on all sides, save it to C:\Users\John\Documents\CVs"

# # 3. Generate Cover Letters

"Generate a cover letter for the Senior Software Engineer position at TechCorp Inc. The job description mentions the hiring manager is Sarah Johnson and applications should be sent to careers@techcorp.com."

# # 4. Generate Email Templates

"Create an email template for applying to the Senior Software Engineer position at TechCorp Inc. The job posting includes the email careers@techcorp.com and mentions Sarah Johnson as the hiring manager."

# # 5. Draft Complete Application Package (Recommended)

"Draft a complete job application package for the Senior Software Engineer position at TechCorp Inc. Include CV, cover letter, and email template. Save everything to C:\Users\John\Documents\Applications with the base filename 'techcorp_application'."

This will generate:

  • techcorp_application_CV.pdf - Tailored CV
  • techcorp_application_Cover_Letter.pdf - Professional cover letter
  • techcorp_application_Email_Template.txt - Email template (if email address found in job description)

# # 6. Generate Follow-up Email Template

"Generate a follow-up email template for the Senior Software Engineer position I applied to at TechCorp Inc last week."

# # 7. Direct Tool Usage Examples

If you want to use the tools directly (advanced usage):

  1. 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."
      }
    }
    
  2. Generate tailored CV:

    {
      "tool": "generate_cv_data", 
      "args": {
        "userProfile": { / * user profile object * / },
        "jobRequirements": { / * job requirements object * / }
      }
    }
    
  3. Generate PDF CV:

    {
      "tool": "generate_cv_pdf",
      "args": {
        "cvData": { / * tailored CV data * / },
        "outputPath": "C:\\Users\\YourName\\Documents\\CVs",
        "fileName": "senior_engineer_techcorp_cv"
      }
    }
    
  4. Generate Markdown CV:

    {
      "tool": "generate_cv_markdown",
      "args": {
        "cvData": { / * tailored CV data * / },
        "outputPath": "C:\\Users\\YourName\\Documents\\CVs",
        "fileName": "cv_for_github"
      }
    }
    
  5. Generate HTML CV:

    {
      "tool": "generate_cv_html",
      "args": {
        "cvData": { / * tailored CV data * / },
        "outputPath": "C:\\Users\\YourName\\Documents\\CVs",
        "fileName": "web_resume"
      }
    }
    
  6. 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"
      }
    }
    

# How It Works

  1. Job Analysis: The server parses job descriptions to extract:

    • Required technical skills
    • Preferred qualifications
    • Company industry and size
    • Experience level requirements
  2. CV Tailoring: Based on the analysis, it:

    • Prioritizes relevant skills and experience
    • Adjusts the professional summary
    • Reorders and emphasizes matching achievements
    • Incorporates job-specific keywords for ATS optimization
  3. Output Generation: Creates a well-formatted text CV that:

    • Uses ATS-friendly formatting
    • Includes relevant keywords
    • Maintains professional structure
    • Highlights the most relevant qualifications

# File Structure

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

# Development

# # Building

npm run build

# # Starting Development Server

npm run dev

# # Project Structure

  • src/index.ts: Main MCP server with tool registration
  • src/lib/job-parser.ts: Parses job requirements, extracts key information, emails, and hiring manager names
  • src/lib/cv-generator.ts: Generates tailored CV content based on job requirements
  • src/lib/cover-letter-generator.ts: Generates personalized cover letters for job applications
  • src/lib/email-template-generator.ts: Creates professional email templates for various application scenarios
  • src/lib/document-generator.ts: Multi-format document generation (PDF, HTML, Markdown)
  • src/lib/word-generator.ts: (Future) Word document generation functionality

# Troubleshooting

# # PDF not saving to configured location

  • Ensure DEFAULT_OUTPUT_PATH is set in your Claude Desktop config
  • Restart Claude Desktop after changing configuration
  • Check that the path exists or the application has permission to create it

# # Font size too large or small

  • Adjust PDF_BASE_FONT_SIZE in environment variables (12px ≈ 9pt, 13px ≈ 10pt MS Word)
  • Modify PDF_LINE_HEIGHT for tighter/looser spacing
  • Restart Claude Desktop after changes

# # PDF generation fails

  • Check that output directory exists and is writable
  • Verify TEMP_DIR path is valid
  • Ensure sufficient disk space

# # Custom page size not working

  • Ensure page size is a valid format (A4, Letter, Legal, A3, A5, etc.)
  • Check that the page size is supported by the PDF generator
  • Use standard page size names (case-sensitive)

# # Custom margins not applied

  • Use proper units: 'mm', 'cm', 'in', 'px', 'pt'
  • Example: '10mm', '0.8in', '72pt'
  • Restart Claude Desktop after changing environment variables

# Future Enhancements

  • Enhanced Word document generation with advanced formatting
  • Multiple CV and cover letter templates (modern, classic, minimal)
  • Advanced keyword optimization algorithms
  • Integration with job boards for automatic job parsing
  • LinkedIn profile integration for automatic profile data
  • Interview preparation questions based on job requirements
  • Salary negotiation guidance based on market data
  • Multi-language support for international applications
  • AI-powered writing suggestions and improvements

# Dependencies

  • @modelcontextprotocol/sdk: Core MCP functionality
  • zod: Schema validation and type safety
  • typescript: TypeScript compiler
  • md-to-pdf: PDF generation from Markdown
  • markdown-it: Markdown parsing and HTML conversion
  • docx: Word document generation (for future Word output)

# License

This project is available under the MIT License.

# Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.

相关 MCP 服务