关于 cv-maker-resume-templates
cv-maker-resume-templates 是本地运行的简历与求职信生成 MCP 服务,面向求职者。它根据个人资料和招聘信息调整内容,并通过规则避免添加资料中没有的事实。
主要功能
- 01保存并读取个人简历资料
- 02按职位相关度调整简历内容
- 03生成 DOCX 简历与求职信
- 04导出 Markdown 和可打印 HTML
- 05读取现有 DOCX 简历
适用场景
- 01针对招聘信息定制简历
- 02生成基于真实资料的求职信
- 03将旧简历导入个人资料
- 04导出适用于申请表的 Markdown
MCP 相关
向 MCP 客户端提供资料管理、简历生成、求职信生成和职位匹配等工具,并提供 resume://profile 资源与 apply_to_job 提示词。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.zovo.one/mcp/cv-maker-resume-templatesclaude mcp add --transport http theluckystrike-cv-maker-resume-templates https://mcp.zovo.one/mcp/cv-maker-resume-templates{"mcpServers":{"theluckystrike-cv-maker-resume-templates":{"type":"http","url":"https://mcp.zovo.one/mcp/cv-maker-resume-templates"}}}在 Cursor 中打开{"servers":{"theluckystrike-cv-maker-resume-templates":{"type":"http","url":"https://mcp.zovo.one/mcp/cv-maker-resume-templates"}}}在 VS Code 中打开{"mcpServers":{"theluckystrike-cv-maker-resume-templates":{"type":"http","url":"https://mcp.zovo.one/mcp/cv-maker-resume-templates"}}}{"mcpServers":{"theluckystrike-cv-maker-resume-templates":{"serverUrl":"https://mcp.zovo.one/mcp/cv-maker-resume-templates"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://mcp.zovo.one/mcp/cv-maker-resume-templates需要授权工具
13| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 你本人的姓名。省略时将使用共享业务资料中的姓名,因此不会询问套件已有的姓名 |
| string | 否 | 你本人的电子邮箱地址。省略时将使用共享业务资料中的邮箱;两者都没有时,信件和信头会显示 "[add: email]" 并注明原因。切勿编造邮箱 | |
| links | array | 否 | 作品集、LinkedIn、GitHub |
| merge | boolean | 否 | 更新已存储的个人资料:传入的字段会替换对应的已存储值,省略的字段会保留。个人资料已存在时必须提供,除非你传入 replace |
| phone | string | 否 | 你本人的电话号码。默认为共享业务资料中的电话号码 |
| skills | array | 否 | |
| replace | boolean | 否 | 丢弃已存储的个人资料,并仅存储本次调用携带的内容。个人资料已存在时必须提供,除非你传入 merge |
| summary | string | 否 | 两到三行。将原样用作求职信中的匹配度段落。 |
| variant | string | 否 | 为第二份个人资料命名,例如 "backend"。免费版每个数据目录只能有一份个人资料;命名变体仅限 Pro。 |
| location | string | 否 | |
| education | array | 否 | |
| languages | array | 否 | |
| experience | array | 否 | 职位经历可按任意顺序排列——profile_set 会在保存前按从新到旧排序(没有 `end` 的未结束职位优先,然后按 `end` 降序,再按 `start` 降序),因为页面预算裁剪和求职信要点排序都依赖数组顺序表示时间近远。 |
| accent_color | string | 否 | 信头颜色,六位十六进制数字,例如 1F3864。仅限 Pro。 |
| certifications | array | 否 |
详细介绍
mcp-resume
只需存储一次你的简历资料。然后说“根据这则招聘启事调整我的简历并撰写求职信”,即可获得两个真正的
.docx 文件:一份简历,其中的项目符号会按与招聘启事的相关性重新排序,并精简至你指定的页数;你实际具备的招聘启事关键词会以粗体标出;还有一封一页的求职信,只陈述你在个人资料中填写的内容。如果缺少某项资料,求职信会留下类似
[add: metric] 的方括号提示,而不是编造数字。它还能将现有简历 .docx 读回个人资料结构、导出用于 ATS 输入框的 Markdown,并生成可打印的 HTML。所有操作都在本地进行:无需上传、无需账号,也无需原生依赖。
已收录于 官方 MCP Registry(io.github.theluckystrike/resume-cover-letter-docx-generator)。
已收录于 AI Product Index - 提供可用的远程端点 mcp.zovo.one/s/resume,免费套餐,无需注册。

60 秒安装
@theluckystrike/mcp-resume 的 npm 发布尚未完成。在此之前,可使用 .mcpb 一键安装包,或克隆并构建;以下两种方式均已验证。
一键安装(.mcpb):从最新版本下载 resume.mcpb,然后在 Claude Desktop 中双击:
https://github.com/theluckystrike/mcp-servers/releases/latest
(claude_desktop_config.json):
{
"mcpServers": {
"resume": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-resume"]
}
}
}
Claude Code:
claude mcp add resume -- npx -y @theluckystrike/mcp-resume
(.cursor/mcp.json):
{
"mcpServers": {
"resume": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-resume"]
}
}
}
上述 npx 方式将在软件包发布后立即可用。在此之前,请使用上方的 .mcpb 安装包,或通过以下三个命令从源代码构建:
git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/docx -w servers/resume
然后将客户端的 command 指向 node,并传入一个参数:servers/resume/dist/index.js 的绝对路径。
构建列表中包含 servers/docx,因为此服务与
mcp-docx 共用文档引擎,而不是另带一份副本。
要使用 Pro 模式,请在同一个配置块中设置 MCP_LICENSE_KEY,或使用你的密钥调用一次 license_activate。
工具
| 工具 | 功能 |
|---|---|
profile_set | 存储所有输出所依据的资料:姓名、电子邮件、电话、所在地、链接、简介、技能、包含项目符号的工作经历、教育经历、证书、语言。每个数据目录对应一份个人资料;Pro 可添加命名变体 |
profile_get | 以 JSON 格式返回已存储的个人资料,与其他工具读取到的内容完全一致 |
resume_create | 将简历写入 .docx。根据关键词命中次数和时效性为项目符号排序,然后按照测量所得的字数预算精简至 max_pages;匹配到的关键词会加粗,缺失的关键词会列出,但绝不会被添加。样式:modern、classic、compact |
cover_letter_create | 仅根据个人资料撰写一页求职信,分为四部分——开篇、匹配度、证明、结尾。语气:formal、direct、warm。未知信息会以 [add: ...] 提示的形式返回 |
tailor_to_job | 分析与招聘启事的差距:列出启事实际要求的关键词、个人资料已涵盖和未涵盖的关键词、覆盖率,以及只重新组织你已陈述内容的改写 |
resume_read | 按标题划分章节,将现有简历 .docx 读回个人资料结构。尽力解析;除非设置 save: true,否则不会保存任何内容 |
resume_to_markdown | 将简历转换为 Markdown,供申请表或 ATS 输入框使用 |
resume_to_html | 生成带打印样式表的可打印 HTML。打开后即可打印为 PDF |
license_status | 显示免费或 Pro 模式 |
license_activate | 激活 Pro 密钥(离线验证) |
资源:resume://profile 以 JSON 格式返回已存储的个人资料。
提示词:apply_to_job 会针对同一则招聘启事依次调用 tailor_to_job、resume_create 和 cover_letter_create,并让模型向你报告资料缺口,而不是自行补全。
求职信不会编造事实
这是关键部分,因此会强制执行,而不是仅仅提出要求:
- 信中的每条证明内容都是逐字引用自个人资料中的条目。求职信绝不会把某条内容改述成更夸大的说法。
- 你提供的
highlights条目会先与个人资料核对。如果个人资料无法佐证,就会显示为[add: "..." is not in your profile - add it there or drop it],而不会作为事实陈述。 - 写入文件之前,会将信中的每一串数字与个人资料及你提供的参数进行核对。如果某个数字无法追溯到其中任何一项,工具会拒绝处理,而不是发出警告;工具会返回错误且不写入任何内容。职位描述刻意不作为允许的来源:雇主的营收、员工人数和吞吐量数据属于雇主,求职信绝不会把其中任何一项写成你的数据。比较时按完整数字进行,因此个人资料中有
2012,并不代表求职信可以声称12。 - 每条证明内容都会列在它实际所属的职位下。如果求职信引用了两家雇主的工作经历,就会显示两个标题;较早工作的经历绝不会列在你当前的职位下。
- 不含数字的条目会追加
[add: metric],这样求职信会向你询问成果,而不是猜测。 tailor_to_job中缺失的关键词绝不会被当作技能。回复会用直白的措辞说明这一点。
你可以这样说
| 你说的话 | 工具 |
|---|---|
| “这是我的简历:Ada Rowe,自 2021 年起在 Acme Pay 担任后端工程师……” | profile_set |
| “读取我在 ~/Documents/cv.docx 中的旧简历并建立我的个人资料。” | resume_read |
| “我与这个职位的匹配度如何?” | tailor_to_job |
| “为这个 Staff Engineer 职位帮我制作一页简历。” | resume_create |
| “为 Zeta Systems 撰写一封语气直接的求职信。” | cover_letter_create |
| “给我适用于申请表的纯文本版本。” | resume_to_markdown |
| “我需要一份 PDF 附件。” | resume_to_html,然后打印为 PDF |
| “帮我申请这个职位。” | apply_to_job 提示词 |
示例
You: Tailor my resume to this posting and write the letter. One page.
tailor_to_job { job_description: "...payments platform, PostgreSQL, Kubernetes..." }
-> matched: payments, postgresql, kubernetes missing: rust
-> coverage 75%
resume_create { style: "modern", target_role: "Staff Engineer",
keywords: ["postgresql", "kubernetes", "rust"], max_pages: 1 }
-> estimated_pages 1, words_used 402 of a 384-word budget for bullets
-> bullets_dropped: ["Wrote the deployment pipeline"]
-> keywords_missing: ["rust"] (not added anywhere)
-> ~/.local/share/mcp-servers/resume/documents/ada-rowe-resume.docx
cover_letter_create { company: "Zeta Systems", role: "Staff Engineer", tone: "formal" }
-> fills_required: ["[add: metric]"]
-> ~/.local/share/mcp-servers/resume/documents/zeta-systems-staff-engineer-cover-letter.docx
页面裁剪的工作方式
纯 JavaScript 没有页面布局引擎,因此此服务不会假装能够测量页面。它改用字数预算:一页完整的 A4 页面,使用 11pt Calibri 字体和 2cm 页边距,可容纳约 520 个正文单词;简历大约会用掉七分之一的页面来放置标题、空行和联系方式区块。净预算为每页 450 个单词(compact 样式为 540 个)。系统会先统计联系方式区块、摘要、技能、职位标题、教育经历、证书和语言所占的字数;剩余预算再分配给工作经历条目,优先保留得分最高的内容。每个职位都会先保留第一条内容,然后才会为任何职位保留第二条,因此裁剪后不会出现某份工作经历留在页面上却没有任何条目的情况。回复会报告字数预算、已用字数、预估页数以及删除的每条内容,让你能看清裁剪依据,而不用等到在 Word 中才发现。
近期程度也是评分的一部分,其依据是数组顺序,而非 start/end 文本。profile_set 会强制采用安全的排序方式:无论调用时职位的排列顺序如何,存储的个人资料最终都会按时间从近到远排列:没有 end 的未结束职位排在最前,其次按 end 降序排列,再按 start 降序排列。职位可以按任意顺序录入;存储后的顺序(以及 cover_letter_create 中求职信条目的排序)始终正确。
免费版与 Pro
| 免费版 | Pro($19 一次性付费) | |
|---|---|---|
Profile、resume_create、resume_to_markdown、resume_to_html | 是,无限量 | 是,无限量 |
| 简历样式 | modern | modern、classic、compact |
| 求职信 | 每个日历月 3 封 | 无限量 |
tailor_to_job | 职位信息最多 2,000 个字符 | 任意长度 |
| Profile 变体 | 一个 profile | 命名变体(backend、management,……) |
| 信头颜色 | 默认 | 自定义 accent_color |
| 页脚署名 | “Generated with mcp-docx by theluckystrike” | 已移除 |
获取 Pro:https://mcp.zovo.one/buy/resume($19 一次性付费,或 $39 购买完整套装)。
隐私
所有数据都保留在本地。你的简历不会离开这台设备:服务会在你的电脑上读取和写入文件,将 profile 存储在你的数据目录下,并且不会发出任何网络请求;无论是授权验证(密钥均离线验证)、字体还是遥测数据都不会联网。
搭配使用
- mcp-docx,此服务会导入其文档引擎(
@theluckystrike/mcp-docx/lib);如果你还需要提案、合同和 Markdown 转 Word 功能,也请安装 docx。 - office-suite,一次安装即可使用多个服务,只需添加一条配置。
故障排除
npx卡住或无法找到软件包:此软件包尚待发布到 npm。在发布前,请使用.mcpb捆绑包或上文的克隆并构建方式。- “no profile stored”:运行一次
profile_set,或对现有简历运行resume_read {path, save: true}。 - 简历漏掉了我想保留的项目符号:调高
max_pages,或将职位信息中的词语传入keywords,让对应项目符号优先于其他内容。响应中的bullets_dropped会列出所有未能放入的项目。 - 较短的技能名称:
tailor_to_job会保留两字符和一字符的技能名称:Go、C、R、C#、C++、F#、Qt、UI、UX、QA、ML、AI、AR、VR、JS、TS、K8s、AWS、GCP、SQL、iOS,以及你自己的skills列表中出现的任何短词;对于频率相同的技能,已知技能的排名会高于较长的词。 - 提示某个已有关键词缺失:匹配以单词边界为准,因此
go不会匹配Google,k8s也不会匹配Kubernetes。如果确实具备该技能,请将确切词语添加到 skills 中。 resume_read将某个职位放入了unparsed:简历没有固定模式。系统不会静默丢弃任何内容;请修正字段并传给profile_set。- 没有
resume_to_pdf:所有纯 JavaScript 的 Word 转 PDF 方案都需要原生依赖或云 API。resume_to_html会生成带打印样式表的语义化 HTML;将其打印为 PDF 即可。 - Node 版本:需要 Node >= 18。使用
node -v检查。
采用 MIT 许可证。支持邮箱:[email protected]
由 theluckystrike 构建。
整个套件共用一个企业资料
你的身份信息只需存储一次,位置为 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json,
套件中的每个服务都会读取该资料:发票开具方、docx 信头、定期发票开具方、expense-tracker 的默认 VAT 税率、time-tracker 和 timezone 的本地时区,以及简历和合同信头。使用 business_set(invoice 或 docx)设置一次即可,无需在其他地方重复填写。电子邮件地址只会从该资料或明确提供的参数中获取;如果未存储地址,文档会显示 [add: email],工具也会明确说明,不会让任何人自行编造地址。
将这些文档用作 MCP 服务
任何 MCP 客户端(Claude、Cursor、Windsurf、VS Code)都可以通过 GitMCP 直接读取此仓库的文档,无需安装:
- 文档 MCP URL:https://gitmcp.io/theluckystrike/mcp-resume
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。