内容
<div align="center">
<img src="assets/hero.svg" alt="简历定制 - 自动匹配任何工作" width="820">
<br><br>
一个开源的 **[模型上下文协议](https://modelcontextprotocol.io)** 服务器,为克劳德桌面版(或任何 MCP 客户端)提供持久的主简历、真正的 ATS 关键词评分和干净的 PDF / DOCX 导出。
[](https://nmaaalhawary.github.io/MCP-Resume-Tailor/)
[](https://github.com/NmaaAlhawary/MCP-Resume-Tailor/actions/workflows/ci.yml)
[](LICENSE)
[](https://www.python.org/)
[](https://modelcontextprotocol.io)
[](https://github.com/NmaaAlhawary/MCP-Resume-Tailor/releases)
[](CONTRIBUTING.md)
[](https://claude.ai)
### [🌐 查看实时网站 →](https://nmaaalhawary.github.io/MCP-Resume-Tailor/)
**[快速开始](#安装)** · **[工具](#工具)** · **[工作原理](#工作原理)** · **[贡献](#贡献)** · **[发布版本](https://github.com/NmaaAlhawary/MCP-Resume-Tailor/releases)**
</div>
---
> **你:** *"这是一个工作链接 - 为我定制简历并导出PDF。"*
>
> **克劳德** 读取职位发布和你的主简历,改写它以匹配,检查 ATS 关键词得分,并为你提供一个干净的文件,准备发送。
## 目录
- [为什么存在](#为什么存在)
- [工作原理](#工作原理)
- [工具](#工具)
- [安装](#安装)
- [连接到克劳德桌面版](#连接到克劳德桌面版)
- [使用](#使用)
- [配置](#配置)
- [ATS安全导出](#ats安全导出)
- [贡献](#贡献)
- [许可证](#许可证)
## 为什么存在
克劳德已经可以在正常聊天中改写简历。这个 MCP 值得安装,因为它提供了三种普通聊天 **无法** 做到的事情:
| 功能 | 它给你什么 |
|---|---|
| **持久的主简历** | 以 JSON 形式本地存储。设置一次,可用于每个工作。 |
| **真正的 ATS 间隙评分** | 确定性关键词数学 - 不是凭感觉。它准确告诉你缺少哪些关键词。 |
| **干净的文件导出** | ATS 安全 PDF / DOCX:单列,标准字体,真正的可选择文本。 |
> [!IMPORTANT]
> **MCP 不会改写你的简历 - 克劳德会。** 服务器提供持久性,工作获取,ATS 数学和导出。克劳德将它们结合起来。
## 工作原理
```text
加载主简历 ─┐
├─► 克劳德改写简历 ─► ats_gap_check ─► export_resume
获取职位发布 ─►│ ▲
提取关键词 ───┘─────────────────────────────────────┘
```
1. **加载** 你的主简历 - `load_master_resume`
2. **分析** 工作 - `fetch_job_posting` → `extract_keywords`
3. **改写** - *克劳德* 改写简历以诚实地显示缺少的关键词
4. **检查** 改写 - `ats_gap_check`(分数是否增加?)
5. **导出** - `export_resume` → 清洁的 PDF 或 DOCX
## 工具
| 工具 | 目的 |
|---|---|
| `save_master_resume` | 存储/更新基础简历(结构化 JSON:联系方式,摘要,经验,项目,技能,教育)。 |
| `load_master_resume` | 返回存储的主简历,以便克劳德可以从中工作。 |
| `fetch_job_posting` | 获取工作 URL → 清洁文本。如果网站被阻止或登录墙,则回退到粘贴文本。 |
| `extract_keywords` | 确定性地提取 ATS 扫描的排名技能/工具。 |
| `ats_gap_check` | 将简历与工作关键词进行比较 → 匹配分数(%)+ 确切的缺少术语。 |
| `export_resume` | 渲染完成的简历内容(markdown 或 JSON)→ 清洁的 PDF 或 DOCX。返回文件路径。 |
## 安装
```bash
git clone git@github.com:NmaaAlhawary/MCP-Resume-Tailor.git
cd MCP-Resume-Tailor
python3 -m venv .venv
source .venv/bin/activate # fish: source .venv/bin/activate.fish
pip install -r requirements.txt
```
测试所有六种工具是否注册:
```bash
python -c "import asyncio, server; print([t.name for t in asyncio.run(server.mcp.list_tools())])"
```
> [!NOTE]
> PDF 导出使用 **reportlab**(纯 Python - macOS / Windows / Linux 上不需要系统库)。DOCX 导出使用 **python-docx**。
## 连接到克劳德桌面版
将以下内容添加到你的 `claude_desktop_config.json`
(`~/Library/Application Support/Claude/claude_desktop_config.json` 在 macOS 上):
```json
{
"mcpServers": {
"resume-tailor": {
"command": "/absolute/path/to/MCP-Resume-Tailor/.venv/bin/python",
"args": ["/absolute/path/to/MCP-Resume-Tailor/server.py"],
"env": {
"RESUME_STORE_PATH": "~/.resume-mcp/master.json"
}
}
}
}
```
重启克劳德桌面版 - 六种工具在工具菜单下出现。
## 使用
### 首次设置 - 存储你的主简历(一次)
复制 [`master.template.json`](master.template.json),填写你的详细信息,然后询问克劳德:
> "将此保存为我的主简历:*(粘贴 JSON)*
克劳德调用 `save_master_resume` 并将其保存在 `RESUME_STORE_PATH`。
### 每日流程 - 为工作定制
> **你:** 这里有一个工作链接 - 为它定制我的简历并导出 PDF:
> `https://example.com/careers/senior-frontend`
在幕后,克劳德运行:
```text
1. load_master_resume() → 你的存储简历
2. fetch_job_posting(url="…/senior-frontend") → 清洁的工作文本
3. extract_keywords(job_text) → ["REST APIs", "GraphQL", "TypeScript",
"Docker", "AWS", "Next.js", "CI/CD", …]
4. ats_gap_check(resume_text, keywords) → { match_score: 20.0,
missing: ["GraphQL","Docker","AWS",…] }
5. ── 克劳德改写简历以显示真实的匹配技能 ──
6. ats_gap_check(new_resume_text, keywords) → { match_score: 85.0 }
7. export_resume(content=<rewritten>, format="pdf")
→ { path: "~/.resume-mcp/exports/….pdf" }
```
> **克劳德:** 为您定制了简历 - 关键词匹配从 **20% → 85%**。我添加了您的 Docker/AWS 和测试经验以匹配他们的技术栈。导出到这里:
> `~/.resume-mcp/exports/Jane_Developer_….pdf`
## 配置
| 环境变量 | 默认值 | 目的 |
|---|---|---|
| `RESUME_STORE_PATH` | `~/.resume-mcp/master.json` | 主简历 JSON 存储位置。导出到其旁边的 `exports/`。 |
一切都在 **本地运行**。没有秘密,没有外部帐户。
## ATS 安全导出
- 单列 - 没有破坏 ATS 解析器的文本框或多列技巧
- 标准字体(Calibri / Helvetica)
- 真实的,可选择的文本 - 绝不使用图像渲染
- 普通标题和项目符号列表,清晰映射到简历部分
## 贡献
欢迎任何规模的贡献。最快捷的方式:**fork** 仓库,
进行更改并打开拉取请求。
```bash
# 1. 在 GitHub 上 fork,然后克隆你的 fork
git clone git@github.com:YOUR-USERNAME/MCP-Resume-Tailor.git
cd MCP-Resume-Tailor
# 2. 设置并分支
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
git checkout -b my-improvement
# 3. 更改,提交,推送
git commit -am "描述你的更改"
git push origin my-improvement
# 4. 在 GitHub 上打开拉取请求
```
伟大的首次贡献:向 `KNOWN_TERMS` / `KNOWN_PHRASES` 添加技能,
在 `STOPLIST` 中过滤填充词,或改进导出布局。
参见 **[CONTRIBUTING.md](CONTRIBUTING.md)** 以获取完整的逐步指南。
## 许可证
在 [MIT 许可证](LICENSE) 下发布。通过贡献,您同意您的贡献在相同条款下获得许可。
<div align="center">
**由 [Nmaa Hawary](https://github.com/NmaaAlhawary) 构建** · 如果这有所帮助,请考虑给它一个星级。
</div>