返回 MCP 目录
public公开dns本地运行

cv-forge

智能简历生成工具,通过分析职位要求自动创建匹配的ATS友好简历、求职信和邮件模板,支持多种格式输出

article

README

🚀 CV Forge

CV Forge 是一款强大的工具,它能根据任何职位要求量身打造出符合 ATS(申请人跟踪系统)的简历。它是一个智能的 MCP(模型上下文协议)服务器,能够分析招聘信息,并生成与之完美匹配的简历。

✨ 主要特性

  • 解析职位要求:从招聘信息中提取关键技能、任职资格、电子邮件地址和招聘经理姓名。
  • 生成定制简历:根据用户资料和职位要求创建定制的简历内容。
  • 生成求职信:为特定的职位申请生成个性化的求职信。
  • 创建电子邮件模板:创建专业的电子邮件模板,并自动检测电子邮件地址。
  • 生成完整申请包:通过一个命令生成简历、求职信和电子邮件模板。
  • 默认生成 PDF:在未指定格式时,自动生成专业的 PDF 文档。
  • 支持多种输出格式:可生成 PDF(默认)、HTML、Markdown 和纯文本格式的文档。
  • 生成专业 PDF:创建具有专业样式、可用于发布的 PDF 文档。
  • 适配 ATS:通过合理放置关键词,优化简历以适应申请人跟踪系统。
  • 智能提取联系人信息:自动从职位描述中提取电子邮件地址和招聘经理姓名。

📦 安装指南

通过 npm(推荐)

全局安装:

npm install -g cv-forge

或者在项目中本地安装:

npm install cv-forge

从源代码安装

  1. 克隆此仓库。
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    

💻 使用示例

连接到 Claude Desktop

要将此 MCP 服务器与 Claude Desktop 一起使用,您需要将其添加到 Claude 配置文件中。 步骤 1:安装 cv-forge

npm install -g cv-forge

步骤 2:找到您的 Claude Desktop 配置文件

  • Windows%APPDATA%\Claude\claude_desktop_config.json
  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux~/.config/Claude/claude_desktop_config.json 步骤 3:将 MCP 服务器添加到您的配置中 对于全局安装,将以下内容添加到您的 claude_desktop_config.json 文件中:
{
  "mcpServers": {
    "cv-forge": {
      "command": "cv-forge"
    }
  }
}

如果是本地安装,请指定完整路径:

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

步骤 4:(可选)添加环境配置 您可以使用环境变量自定义服务器:

{
  "mcpServers": {
    "cv-forge": {
      "command": "cv-forge",
      "env": {
        "DEFAULT_OUTPUT_PATH": "D:/CV",
        "PDF_BASE_FONT_SIZE": "12px",
        "PDF_LINE_HEIGHT": "1.4"
      }
    }
  }
}

步骤 5:重启 Claude Desktop 添加配置后,重启 Claude Desktop 应用程序。 步骤 6:验证连接 在 Claude Desktop 中,您应该可以看到 CV Forge 工具。您可以要求 Claude 使用以下工具:

  • “帮我解析这份招聘信息”
  • “根据我的资料和这份职位生成一份定制简历”
  • “将我的简历保存为 PDF 文件”

独立运行 MCP 服务器(用于测试)

您也可以直接运行服务器进行测试:

npm start

服务器通过标准输入输出运行,并通过模型上下文协议进行通信。

可用工具

1. parse_job_requirements

解析职位要求并提取用于定制简历的关键信息。 参数

  • jobTitle(字符串,必填):职位名称。
  • company(字符串,必填):公司名称。
  • jobDescription(字符串,必填):完整的职位描述文本。
  • requirements(数组,可选):如果有单独列出的特定要求。
  • preferredSkills(数组,可选):如果有单独列出的首选技能。
  • location(字符串,可选):工作地点。
  • salaryRange(字符串,可选):如果提供了薪资范围。

2. generate_cv_data

根据用户资料和职位要求生成定制的简历内容。 参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。 用户资料结构
{
  "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

将简历内容保存为格式化的文本文件。 参数

  • cvData(对象,必填):定制的简历数据对象(来自 generate_cv_data)。
  • outputPath(字符串,必填):简历应保存的目录路径。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "generated_cv"。

4. generate_cv(推荐 - 主要简历生成工具)

生成定制简历并保存到指定位置或默认文件夹。如果未指定格式,默认使用 PDF 格式参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。
  • outputPath(字符串,可选):简历应保存的目录路径(如果未提供,则使用 DEFAULT_OUTPUT_PATH)。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "professional_cv"。
  • format(字符串,可选):输出格式 - "pdf"(默认)、"html" 或 "markdown"。
  • pageSize(字符串,可选):PDF 页面大小(例如,'A4'、'Letter'、'Legal') - 如果未提供,则使用 PDF_PAGE_SIZE 环境变量。
  • margins(对象,可选):PDF 边距,包含 top、right、bottom、left 属性(例如,'10mm'、'0.8in') - 如果未提供,则使用 PDF_MARGIN_* 环境变量。

5. generate_and_save_cv_pdf(旧版 - 建议使用 generate_cv

生成定制简历并直接保存为专业的 PDF(将简历生成和 PDF 创建合并为一步)。 参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。
  • outputPath(字符串,可选):简历应保存的目录路径(如果未提供,则使用 DEFAULT_OUTPUT_PATH)。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "professional_cv"。

6. generate_and_save_cv_markdown(推荐)

生成定制简历并直接保存为 Markdown(将简历生成和 Markdown 创建合并为一步)。 参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。
  • outputPath(字符串,必填):简历应保存的目录路径。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "cv_markdown"。

7. generate_and_save_cv_html(推荐)

生成定制简历并直接保存为 HTML(将简历生成和 HTML 创建合并为一步)。 参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。
  • outputPath(字符串,必填):简历应保存的目录路径。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "cv_html"。

8. generate_cv_pdf(高级)

根据预先生成的简历数据生成并保存简历为专业的 PDF 文档。 参数

  • cvData(对象,必填):定制的简历数据对象(来自 generate_cv_data)。
  • outputPath(字符串,必填):简历应保存的目录路径。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "professional_cv"。

9. generate_cv_markdown(高级)

根据预先生成的简历数据以 Markdown 格式生成简历。 参数

  • cvData(对象,必填):定制的简历数据对象(来自 generate_cv_data)。
  • outputPath(字符串,必填):简历应保存的目录路径。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "cv_markdown"。

10. generate_cv_html(高级)

根据预先生成的简历数据生成样式化的 HTML 简历文档。 参数

  • cvData(对象,必填):定制的简历数据对象(来自 generate_cv_data)。
  • outputPath(字符串,必填):简历应保存的目录路径。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "cv_web"。

求职信和电子邮件模板工具

11. generate_cover_letter(推荐)

为特定的职位申请生成定制的求职信。返回格式化的文本,可在屏幕上显示或保存为 PDF。 参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。
  • hiringManagerName(字符串,可选):如果知道招聘经理的姓名。
  • format(字符串,可选):输出格式 - "text"(默认)用于屏幕显示,"html" 用于样式化查看。

12. save_cover_letter_pdf

生成求职信并将其保存为 PDF 到指定位置。自动从职位描述中提取电子邮件地址和招聘经理姓名。 参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。
  • outputPath(字符串,可选):求职信应保存的目录路径。
  • fileName(字符串,可选):自定义文件名(不带扩展名),默认为 "cover_letter"。
  • hiringManagerName(字符串,可选):如果知道招聘经理的姓名。
  • pageSize(字符串,可选):PDF 页面大小(例如,'A4'、'Letter'、'Legal')。
  • margins(对象,可选):PDF 边距,包含 top、right、bottom、left 属性。

13. generate_email_template

为职位申请生成专业的电子邮件模板。自动从职位描述中检测电子邮件地址。 参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。
  • templateType(字符串,可选):电子邮件模板类型 - "application"(默认)、"follow_up"、"inquiry"、"thank_you"。
  • recipientEmail(字符串,可选):收件人电子邮件地址(可选,如果可用,将使用从职位描述中提取的电子邮件)。
  • hiringManagerName(字符串,可选):如果知道招聘经理的姓名。

14. draft_complete_application(推荐 - 一站式解决方案)

起草完整的职位申请包:简历、求职信和电子邮件模板。如果在职位描述中找到电子邮件地址,将自动生成 PDF 简历和求职信,以及电子邮件模板。 参数

  • userProfile(对象,必填):完整的用户资料信息。
  • jobRequirements(对象,必填):职位要求对象。
  • outputPath(字符串,可选):文件应保存的目录路径。
  • baseFileName(字符串,可选):生成文件的基本文件名(不带扩展名),默认为 "job_application"。
  • hiringManagerName(字符串,可选):如果知道招聘经理的姓名。

📚 详细文档

配置

环境变量

MCP 服务器通过 Claude Desktop 配置中的环境变量支持各种配置选项:

{
  "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"
      }
    }
  }
}

配置选项

  • DEFAULT_OUTPUT_PATH:保存简历文件的默认目录(当 outputPath 未提供或为 "./" 时)。
  • TEMP_DIR:PDF 生成过程中临时文件的目录。
  • PDF_TIMEOUT:PDF 生成的超时时间(以毫秒为单位)。
  • PDF_PAGE_SIZE:默认的 PDF 页面大小 - 默认为 'A4'。
    • 常见大小:'A4'(210×297mm)、'Letter'(8.5×11 英寸)、'Legal'(8.5×14 英寸)。
  • PDF_MARGIN_*:PDF 页面边距(上、右、下、左) - 默认为 '10mm'。
  • PDF_BASE_FONT_SIZE:简历正文文本的基本字体大小(12px ≈ MS Word 9pt,13px ≈ 10pt)。
  • PDF_LINE_HEIGHT:文本的行高(推荐 1.4 以实现紧凑布局)。
  • PDF_H1_FONT_SIZE:姓名/标题的字体大小。
  • PDF_H2_FONT_SIZE:章节标题的字体大小。
  • PDF_H3_FONT_SIZE:职位名称和子章节的字体大小。
  • PDF_PARAGRAPH_SPACING:段落间距。
  • PDF_SECTION_SPACING:主要章节之间的间距。

使用 Claude Desktop 的示例

连接到 Claude Desktop 后,您可以使用自然语言与简历生成器进行交互:

1. 解析职位要求

“帮我解析这份招聘信息:

职位名称:高级软件工程师
公司:TechCorp Inc
描述:我们正在寻找一名具有 5 年以上 JavaScript、React 和 Node.js 经验的高级软件工程师。必须具备云平台和敏捷方法的经验。需要具备较强的沟通能力。”

2. 生成定制简历(简单的一步流程 - 默认生成 PDF)

“根据这份招聘信息为我生成一份定制简历:

职位名称:高级软件工程师
公司:TechCorp Inc
职位描述:我们正在寻找一名具有 5 年以上 JavaScript、React 和 Node.js 经验的高级软件工程师。必须具备云平台和敏捷方法的经验。

我的资料:
- 全名:John Doe
- 电子邮件:john@example.com
- 电话:+1-555-0123
- 经验:在多家公司担任软件工程师 6 年
- 技能:JavaScript、Python、React、Node.js、AWS、Docker
- 教育背景:州立大学计算机科学学士学位

请将其保存到 C:\Users\John\Documents\CVs,文件名为 'john_doe_senior_engineer_techcorp'”

注意:除非您指定其他格式,否则这将自动生成一个 PDF 文件(默认格式)。

3. 生成不同格式的简历

“你能为我生成多种格式的简历吗?我需要:
1. 一份用于申请的专业 PDF(默认格式)
2. 一份用于我的 GitHub 的 Markdown 版本
3. 一份用于我的网站的 HTML 版本

将它们全部保存到 C:\Users\John\Documents\CVs,基本文件名为 'john_doe_cv'”

或者明确指定格式

“以 HTML 格式生成我的简历并保存到 C:\Users\John\Documents\CVs”

或者为 PDF 指定自定义页面大小和边距

“以 Letter 页面大小和四周 1 英寸的边距将我的简历生成 PDF,保存到 C:\Users\John\Documents\CVs”

4. 生成求职信

“为 TechCorp Inc 的高级软件工程师职位生成一封求职信。职位描述中提到招聘经理是 Sarah Johnson,申请应发送至 careers@techcorp.com。”

5. 生成电子邮件模板

“为申请 TechCorp Inc 的高级软件工程师职位创建一个电子邮件模板。招聘信息中包含电子邮件 careers@techcorp.com,并提到 Sarah Johnson 是招聘经理。”

6. 起草完整申请包(推荐)

“为 TechCorp Inc 的高级软件工程师职位起草一个完整的职位申请包。包括简历、求职信和电子邮件模板。将所有内容保存到 C:\Users\John\Documents\Applications,基本文件名为 'techcorp_application'。”

这将生成:

  • techcorp_application_CV.pdf - 定制简历
  • techcorp_application_Cover_Letter.pdf - 专业求职信
  • techcorp_application_Email_Template.txt - 电子邮件模板(如果在招聘信息中找到电子邮件地址)

7. 生成跟进电子邮件模板

“为我上周申请的 TechCorp Inc 的高级软件工程师职位生成一个跟进电子邮件模板。”

直接使用工具的示例

如果您想直接使用工具(高级用法):

  1. 解析招聘信息
{
  "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."
  }
}
  1. 生成定制简历
{
  "tool": "generate_cv_data", 
  "args": {
    "userProfile": { /* 用户资料对象 */ },
    "jobRequirements": { /* 职位要求对象 */ }
  }
}
  1. 生成 PDF 简历
{
  "tool": "generate_cv_pdf",
  "args": {
    "cvData": { /* 定制的简历数据 */ },
    "outputPath": "C:\\Users\\YourName\\Documents\\CVs",
    "fileName": "senior_engineer_techcorp_cv"
  }
}
  1. 生成 Markdown 简历
{
  "tool": "generate_cv_markdown",
  "args": {
    "cvData": { /* 定制的简历数据 */ },
    "outputPath": "C:\\Users\\YourName\\Documents\\CVs",
    "fileName": "cv_for_github"
  }
}
  1. 生成 HTML 简历
{
  "tool": "generate_cv_html",
  "args": {
    "cvData": { /* 定制的简历数据 */ },
    "outputPath": "C:\\Users\\YourName\\Documents\\CVs",
    "fileName": "web_resume"
  }
}
  1. 将简历保存为文本文件
{
  "tool": "save_cv_text",
  "args": {
    "cvData": { /* 定制的简历数据 */ },
    "outputPath": "C:\\Users\\YourName\\Documents\\CVs",
    "fileName": "senior_engineer_techcorp_cv"
  }
}

🔧 技术细节

工作原理

  1. 职位分析:服务器解析职位描述以提取:
    • 所需的技术技能
    • 首选的任职资格
    • 公司行业和规模
    • 经验水平要求
  2. 简历定制:基于分析结果,它会:
    • 优先考虑相关技能和经验
    • 调整专业摘要
    • 重新排序并强调匹配的成就
    • 融入特定职位的关键词以优化 ATS
  3. 输出生成:创建格式良好的文本简历,该简历:
    • 使用适合 ATS 的格式
    • 包含相关关键词
    • 保持专业结构
    • 突出最相关的资格

文件结构

cv-forge/
├── src/
│   ├── index.ts                    # 主 MCP 服务器
│   └── lib/
│       ├── job-parser.ts           # 职位要求解析逻辑
│       ├── cv-generator.ts         # 简历定制算法
│       ├── document-generator.ts   # 多格式文档生成
│       └── word-generator.ts       # (未来)Word 文档生成
├── build/                          # 编译后的 JavaScript 文件
├── package.json                    # 项目配置
├── tsconfig.json                   # TypeScript 配置
├── claude_desktop_config.example.json  # 示例配置
└── README.md                       # 本文件

开发

构建

npm run build

启动开发服务器

npm run dev

项目结构

  • src/index.ts:带有工具注册的主 MCP 服务器。
  • src/lib/job-parser.ts:解析职位要求,提取关键信息、电子邮件和招聘经理姓名。
  • src/lib/cv-generator.ts:根据职位要求生成定制的简历内容。
  • src/lib/cover-letter-generator.ts:为职位申请生成个性化的求职信。
  • src/lib/email-template-generator.ts:为各种申请场景创建专业的电子邮件模板。
  • src/lib/document-generator.ts:多格式文档生成(PDF、HTML、Markdown)。
  • src/lib/word-generator.ts:(未来)Word 文档生成功能。

故障排除

PDF 未保存到配置的位置

  • 确保在您的 Claude Desktop 配置中设置了 DEFAULT_OUTPUT_PATH
  • 更改配置后重启 Claude Desktop。
  • 检查路径是否存在,或者应用程序是否有权限创建该路径。

字体大小过大或过小

  • 在环境变量中调整 PDF_BASE_FONT_SIZE(12px ≈ 9pt,13px ≈ 10pt MS Word)。
  • 修改 PDF_LINE_HEIGHT 以调整间距。
  • 更改后重启 Claude Desktop。

PDF 生成失败

  • 检查输出目录是否存在且可写。
  • 验证 TEMP_DIR 路径是否有效。
  • 确保有足够的磁盘空间。

自定义页面大小不起作用

  • 确保页面大小是有效的格式(A4、Letter、Legal、A3、A5 等)。
  • 检查 PDF 生成器是否支持该页面大小。
  • 使用标准的页面大小名称(区分大小写)。

自定义边距未应用

  • 使用正确的单位:'mm'、'cm'、'in'、'px'、'pt'。
  • 示例:'10mm'、'0.8in'、'72pt'。
  • 更改环境变量后重启 Claude Desktop。

📄 许可证

本项目采用 MIT 许可证。

🤝 贡献

欢迎贡献!请随时提交拉取请求或提出问题以报告错误和提出功能请求。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端