mcpField
R
ResuStack

ResuStack

远程服务
resustackapp.com生产力33 周前更新

关于 ResuStack

ResuStack 是面向需要创建和维护简历者的简历工具,可在浏览器或通过 MCP 客户端使用。它结合多种版式、AI 写作、版本历史、职位匹配分析和 PDF 导出。

主要功能

  1. 01从 PDF 或 LinkedIn 资料 PDF 导入简历
  2. 02通过表单或聊天编辑,提供 14 种设计
  3. 03将简历与职位要求进行对照
  4. 04翻译简历并维护不同语言版本
  5. 05记录更改并恢复历史版本
  6. 06按实时预览所用模板导出 PDF

适用场景

  1. 01将现有 PDF 转为可编辑简历
  2. 02为某个职位定制一份简历副本
  3. 03通过 MCP 客户端更新简历并生成 PDF

MCP 相关

ResuStack 通过 Streamable HTTP MCP 服务提供简历管理。客户端可列出、读取、创建和更新简历,选择模板、设置关注领域、查询额度及请求 PDF 链接;写入操作会先创建恢复点。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://resustackapp.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://resustackapp.com/mcp需要授权

工具

详细介绍

ResuStack

ResuStack 是一款 AI 简历生成器。导入 PDF 或 LinkedIn 个人资料,选择 14 种设计之一,然后通过表单或聊天进行编辑——可以在浏览器中操作,也可以直接通过 Claude 的 MCP 服务操作。每项更改都可以撤销,下载的 PDF 使用与实时预览相同的模板生成。

🔗 在线体验: resustackapp.com


✨ 功能

简历生成器
  • 导入 PDF — 上传现有简历或 LinkedIn 个人资料 PDF(系统会自动区分);AI 会提取并整理内容,并标记文件中没有依据的内容
  • 分栏编辑器 — 左侧为表单,右侧为实时预览,并显示 PDF 中的分页位置
  • 6 种版式,14 种设计 — 单栏、横幅、标签边栏、页眉网格、左侧栏和右侧栏;标有 ATS 安全的设计,切换设计时会保留内容
  • 英文和土耳其文简历 — 标题、“至今”、月份名称和学位表述均会以简历所用语言呈现
  • “我正在做的事” — 教育经历上方的可选版块,仅在勾选后显示
  • 使用 Google 登录 — 也可使用用户名和密码登录;通过电子邮件注册的用户可以立即导入第一份 PDF,并在使用其他 AI 功能前确认电子邮件地址
  • 导出 PDF — 使用 WeasyPrint 根据与预览相同的模板生成
AI
  • 一键润色 — 将工作经历和项目描述改写为更有力的要点
  • 在聊天中从头开始 — 助手会创建简历,并在你回答问题时逐步填写
Agent 模式
  • 通过聊天编辑 — “让我的上一份工作经历听起来更资深一些”;Agent 会使用工具、实时展示进度,并在执行破坏性操作前征求批准
  • 模板面板 — 无需离开聊天,即可为当前简历选择设计
  • 撤销 — 在对话中还原上一次更改
更改历史
  • 每次保存以及每次 AI 或 MCP 编辑前都会创建还原点
  • 比较任意版本与当前版本的差异,并进行还原——所有套餐均可使用
招聘信息
  • 评分 — 逐项对照招聘信息评估简历,并指出证据所在
  • 针对岗位的副本 — 针对某个招聘信息优化一份副本,同时保留主简历不变
  • 补足差距 — 针对每项差距回答一个问题,审核拟定的内容,应用更改并查看评分变化
语言版本
  • 原地翻译简历,或创建与原简历关联的翻译副本

🤖 从 Claude 使用 ResuStack(MCP)

ResuStack 是一个 Model Context Protocol 服务。Claude——或任何支持 Streamable HTTP 和自定义标头的 MCP 客户端——负责撰写简历;ResuStack 负责存储、管理版本并生成文件。

1. 创建令牌。 登录后,打开 个人资料 → API 令牌,然后创建一个令牌。令牌只会显示一次;更换令牌会使旧令牌失效。个人资料页面也会显示可用的端点地址。

2. 添加服务。 使用 Claude Code:

claude mcp add --transport http resustack https://resustackapp.com/mcp --header "Authorization: Bearer YOUR_TOKEN"

此端点仅接受 Bearer 令牌进行身份验证;不接受会话 Cookie。

3. 提出请求。 “列出我的简历”、“将我的 CV 切换为标签边栏设计并提供 PDF”、“根据我们本月完成的工作填写‘我正在做的事’。”

工具
工具功能
list_resumes账户中的简历:ID、标题、语言和模板
get_resume一份简历的完整存储内容
create_resume根据结构化内容创建简历
update_resume替换简历内容(请先读取内容——此操作是替换,不是合并)
set_focus_areas仅设置“我正在做的事”版块;简历的其他部分不受影响
list_templates列出设计,并说明每种设计是否符合 ATS 安全要求
set_template更改简历设计
render_pdfPDF 下载链接——仅可使用一次,10 分钟后过期
check_quota查看账户本月剩余额度
提示词
提示词功能
focus_areas_from_my_work让客户端的大模型根据其可查看的对话,总结你实际完成的工作,写成几行内容并展示给你;仅在你批准后,才使用 set_focus_areas 保存
安全规则
  • 每次写入前都会创建还原点;你可以在网站上撤销操作
  • 没有删除工具——移除简历需要在网站上由人工点击
  • 每个查询都限定在令牌所有者的范围内
  • 按账户进行速率限制
在 MCP Registry 中列出

存储库根目录下的 server.json 将此服务描述为 com.resustackapp/resustack,供官方 MCP Registry使用。要以该名称发布,必须通过在 /.well-known/mcp-registry-auth 提供文件来证明对 resustackapp.com 的所有权:

  1. 在本地生成密钥对。切勿提交 key.pem(它已列入 .gitignore):

    openssl genpkey -algorithm Ed25519 -out key.pem
    
  2. 打印证明记录,并在 Dokploy 中将其设置为 MCP_REGISTRY_AUTH 环境变量,然后重新部署:

    echo "v=MCPv1; k=ed25519; p=$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)"
    
  3. 检查它是否已生效:

    curl https://resustackapp.com/.well-known/mcp-registry-auth
    
  4. 登录并从存储库根目录发布:

    mcp-publisher login http --domain resustackapp.com --private-key "$(openssl pkey -in key.pem -noout -text | grep -A3 'priv:' | tail -n +2 | tr -d ' :\n')"
    
    mcp-publisher publish
    

每次发布新条目时,都要更新 server.json 中的 version(以及 mcp_server/protocol.py 中的 SERVER_INFO)。


📸 屏幕截图

编辑器 — 表单、实时预览和模板面板

简历编辑器

选择设计

模板面板

Agent 模式

Agent 模式

仪表板

仪表板


💳 套餐

免费起步。Pro 为限期一次性购买,无需订阅。

免费套餐限额
AI 点数(导入、AI 改写、改进草稿、聊天消息)每月 30 次
PDF 下载每月 5 次
简历(不同语言的版本免费)3 份
职位副本3 份

Pro(3 个月 $9,12 个月 $24,一次性付款)可取消这些限制。付款由Paddle处理,Paddle 是登记商户。限额配置在 core/settings.py 的 FREE_TIER_LIMITS 中;请参阅定价页面。


🚀 本地运行

前置条件
  • Docker 和 Docker Compose
  • OpenAI API 密钥
1. 克隆并配置
git clone https://github.com/koksalkapucuoglu/resume-enhance.git
cd resume-enhance && cp .env.example .env
变量描述示例
OPENAI_API_KEYOpenAI API 密钥sk-proj-...
SECRET_KEYDjango 密钥任意长的随机字符串
DEBUG调试模式True
ALLOWED_HOSTS允许的主机localhost,127.0.0.1
POSTGRES_DB / POSTGRES_USER / POSTGRES_PASSWORD数据库凭据postgres
POSTGRES_HOST / POSTGRES_PORT数据库地址db / 5432
EMAIL_HOST_USER / EMAIL_HOST_PASSWORD用于密码重置和电子邮件验证的 SMTP 凭据;使用 Gmail 时需提供应用专用密码[email protected] / 应用专用密码
EMAIL_HOST / EMAIL_PORT / EMAIL_USE_TLS / EMAIL_USE_SSLSMTP 服务;默认使用 Gmail(smtp.gmail.com、587、TLS)。要在 465 端口使用隐式 TLS,请设置 EMAIL_USE_SSL=Truesmtp.gmail.com / 587 / True / False
DOWNLOAD_LINK_MAX_AGE已签名 PDF 链接的有效秒数(可选)600
GOOGLE_OAUTH_CLIENT_ID / GOOGLE_OAUTH_CLIENT_SECRETGoogle 登录;只有设置这两个值后,按钮才会显示(可选)来自 Google Cloud Console
DEFAULT_FROM_EMAIL账户邮件的发件人;默认使用 EMAIL_HOST_USER(可选)ResuStack <[email protected]>
MCP_REGISTRY_AUTH在 /.well-known/mcp-registry-auth 提供的 MCP Registry 域名证明(可选,仅限公钥)v=MCPv1; k=ed25519; p=...
PAYMENT_STATUScoming_soon 显示套餐但不收款;live 启用结账coming_soon
PAYMENT_PROVIDER、PAYMENT_WEBHOOK_SECRET、CHECKOUT_URL_*、PRODUCT_ID_*付款服务提供商设置(可选)
2. 启动
docker compose up --build

应用运行于 http://localhost:8000。

3. 运行测试
docker compose exec web python manage.py test resume mcp_server

单元测试中会模拟 WeasyPrint 和 OpenAI;不会发起任何 API 调用。


☁️ 部署

生产环境运行在 Dokploy 上。每次推送到 main 都会通过 GitHub webhook 触发部署:Dokploy 会构建 Dockerfile,而 entrypoint.sh 会在启动 Gunicorn 前运行 migrate 和 collectstatic。HTTPS 由 Traefik 处理。

在新服务器上进行设置:

  1. 安装 Dokploy:curl -sSL https://dokploy.com/install.sh | sh
  2. 打开 http://YOUR_SERVER_IP:3000 并创建管理员账户
  3. 创建项目 → 添加 Application → 连接此 GitHub 仓库
  4. 在同一项目中添加 PostgreSQL 服务
  5. 设置环境变量(参见 .env.example 和 .claude/integrations/)及域名,然后部署

注意:

  • 将 Dokploy 的 Run Command 留空——Dockerfile 的 ENTRYPOINT 会处理所有操作
  • 如果使用 Cloudflare 代理,请将 Dokploy 的域名加密设置为 None,并将 Cloudflare SSL 设置为 Full
  • 镜像会安装简历设计所需的字体;渲染时不会获取任何内容

🔑 Google 登录

Google 登录使用 django-allauth。ResuStack 自己的登录、注册和密码页面仍由其负责;allauth 只会添加 Google 登录流程。

  1. 在 Google Cloud Console 中配置 OAuth consent screen(External),隐私政策 URL 设置为 https://resustackapp.com/privacy/,并且只申请 openid、email 和 profile 权限范围。
  2. 创建类型为 Web application 的 OAuth client ID,并设置:
    • Authorized JavaScript origin:https://resustackapp.com
    • Authorized redirect URI:https://resustackapp.com/accounts/google/login/callback/
    • 本地开发时,也添加 http://localhost:8000/accounts/google/login/callback/
  3. 设置 GOOGLE_OAUTH_CLIENT_ID 和 GOOGLE_OAUTH_CLIENT_SECRET,然后重新部署。

运行方式:

  • 不会因为电子邮件地址匹配而将 Google 账户关联到现有 ResuStack 账户——本地账户的电子邮件地址从未经过验证。现有用户需登录后在个人资料页面连接 Google。
  • 新 Google 用户需要经过一个简短步骤来选择用户名,并同意向国外传输数据。
  • 电子邮件地址未经验证的 Google 账户会被拒绝。
  • 使用电子邮件地址创建的账户可以立即使用,但在确认地址之前,AI 功能仍会锁定(软验证)。此功能推出前创建的账户不受影响。

🔒 隐私

ResuStack 收集哪些信息、由谁处理(包括为 AI 功能提供服务的 OpenAI),以及如何删除数据:resustackapp.com/privacy。土耳其语版本以 KVKK 信息通知的形式撰写,见 resustackapp.com/gizlilik。用户可以在个人资料页面删除账户及其所有数据。


🏗️ 架构

单体 Django:视图、MCP 端点、用于生成 PDF 的 WeasyPrint、用于写作的 OpenAI、用于评分和检查的 TypeSafe Jev、用于支付的 Paddle,以及用于错误监控和产品转化漏斗的 Sentry 与 PostHog(均为可选)。简历内容存储在单个 JSONField 中;所有设计都来自 resume/resume_templates.py 中的一个目录。完整指南——包括约定、模式和注意事项——见 .claude/CLAUDE.md;每个集成都有各自的页面,见 .claude/integrations/;当前状态和后续步骤见 .claude/HANDOFF.md。


🗺️ 路线图

  • 多种简历设计(14 种)
  • 职位发布评分、职位副本和差距改进
  • 支持工具调用、审批和撤销的 Agent 模式
  • 支持差异对比和恢复的更改历史
  • 面向 Claude 和其他客户端的 MCP 服务
  • 英文和土耳其语简历
  • 上架到 MCP 注册表
  • 为 MCP 客户端提供 OAuth,同时支持令牌
  • 正式上线支付功能

许可证

开源。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。