
Application
io.github.theluckystrike由 GitHub 帳號 theluckystrike 發布v0.22.5更新於 Oct 24, 2026
Tailor a job application: resume and cover letter as real Word docx files, from stored facts.
概覽
一個本機 MCP 伺服器,只需保存一次履歷事實,即可據此產生客製化的履歷與求職信 .docx 檔案。
- 可以做什麼
- 儲存、讀取和更新結構化的履歷檔案,包含工作經歷、技能、學歷和連結;每個資料目錄一份檔案,Pro 版支援具名變體。讀取既有的履歷 .docx 並還原為檔案結構,可選擇儲存。對照職缺描述分析檔案的關鍵字覆蓋率和缺口,改寫只重排已陳述的事實。產生履歷 .docx,依關鍵字命中與時效性排序要點,並依頁數預算裁剪,支援 modern、classic、compact 三種樣式。產生一頁求職信,可選 formal、direct、warm 語氣,只使用檔案中的事實,未知內容以方括號提示標出。將履歷匯出為 markdown 供申請表或 ATS 使用,或匯出為可列印的 HTML。
- 適用情境
- 適合同時申請多個職缺、希望針對每個職缺調整履歷和求職信而不必重新輸入經歷的人。也適合把職涯資訊集中保存、需要可編輯 Word 檔案,並在投遞前快速查看匹配度報告的情境。
- 執行需求
- 以僅限桌面的 stdio 本機程序執行;npx 或原始碼建置方式需要 Node.js 18 或更新版本,也可用 .mcpb 套件在 Claude Desktop 中一鍵安裝。npm 套件發布被描述為尚未完成,因此目前可用 .mcpb 套件或複製後建置。無需帳號或網路存取;選用的 MCP_LICENSE_KEY 用於啟用 Pro 功能。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Application,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
mcp-resume
Store your CV facts once. Then say "tailor my resume to this posting and write the cover letter" and get two real
.docx files: a resume whose bullets are reordered by relevance to the posting, trimmed to fit the page count you
asked for, with the posting's keywords in bold where you actually have them, and a one-page cover letter that
states nothing you did not put in your profile. Where a fact is missing, the letter leaves a bracketed prompt like
[add: metric] instead of inventing a number. It also reads an existing resume .docx back into the profile shape,
exports markdown for an ATS box, and writes printable HTML. Everything runs locally: no upload, no account, no
native dependency.
In the official MCP Registry (io.github.theluckystrike/resume-cover-letter-docx-generator).
Listed on the AI Product Index - live remote endpoint at mcp.zovo.one/s/resume, free tier, no signup.
60-second install
npm publish for @theluckystrike/mcp-resume is pending. Until then, the .mcpb one-click bundle or a clone+build
is the working path, both are verified below.
One-click (.mcpb): download resume.mcpb from the latest release and double-click it in Claude Desktop:
https://github.com/theluckystrike/mcp-servers/releases/latest
(claude_desktop_config.json):
Claude Code:
(.cursor/mcp.json):
The npx form above starts working the moment the package is published. Until then, use the .mcpb bundle above, or
build from source with exactly these three commands:
Then point your client's command at node with one arg: the absolute path to servers/resume/dist/index.js.
servers/docx is in that build list because this server shares the document engine with
mcp-docx rather than carrying a second copy of it.
To run in Pro mode set MCP_LICENSE_KEY in the same config block, or call license_activate once with your key.
Tools
Resource: resume://profile returns the stored profile as JSON.
Prompt: apply_to_job chains tailor_to_job, resume_create and cover_letter_create against one posting, and
makes the model report the gaps back to you instead of filling them in.
The cover letter does not invent facts
This is the part that matters, so it is enforced rather than requested:
- Every proof line in the letter is a verbatim bullet from your profile. The letter never paraphrases a bullet into a stronger claim.
- A
highlightsentry you pass is checked against the profile first. If the profile does not support it, it is printed as[add: "..." is not in your profile - add it there or drop it], not as a claim. - Before the file is written, every digit run in the letter is checked against your profile and the arguments you
passed. A number that traces to neither is a refusal, not a warning, the tool returns an error and writes nothing.
The job description is deliberately not an allowed source: the employer's revenue, headcount and throughput
figures are theirs, and the letter will never restate one as yours. Comparison is on whole numbers, so a profile
holding
2012does not license a letter claiming12. - Each proof bullet is printed under the role it actually belongs to. A letter that quotes work from two employers prints two headings; work from an earlier job is never listed under your current one.
- A bullet that carries no figure gets
[add: metric]appended, so the letter asks you for the result instead of guessing one. - Missing keywords from
tailor_to_jobnever become skills. The response says so in plain words.
What you can say
Worked example
How page trimming works
There is no page-layout engine in pure JavaScript, so this server does not pretend to measure one. It uses a word
budget instead: a full A4 page at 11pt Calibri with 2cm margins holds about 520 words of body text, and a resume
spends roughly a seventh of that page on headings, blank lines and the contact block. The net figure is 450 words
per page (540 for the compact style). The contact block, summary, skills, role headers, education,
certifications and languages are counted first; whatever budget is left goes to experience bullets, highest score
first. Every role keeps its first bullet before any role gets a second one, so trimming never leaves a job on the
page with nothing under it. The response reports the budget, the words used, the estimated page count and every
bullet it dropped, so you can see the decision rather than discover it in Word.
Recency is part of that score, and it is read off array order, not off start/end text. profile_set enforces
the ordering that makes that safe: however you list roles when you call it, the stored profile always ends up
newest-first, an open role with no end first, then by end descending, then by start descending. Enter roles
in any order; the stored order (and the cover-letter bullet ranking in cover_letter_create) is always correct.
Free vs Pro
Get Pro: https://mcp.zovo.one/buy/resume ($19 one-time, or $39 for the whole bundle).
Privacy
All data stays local. Your CV never leaves the machine: the server reads and writes files on your computer, stores the profile under your data directory, and makes no network request of any kind, not for licensing (keys are verified offline), not for fonts, not for telemetry.
Pairs with
- mcp-docx, this server imports its document engine (
@theluckystrike/mcp-docx/lib); install docx too when you also want proposals, contracts and markdown-to-Word. - office-suite, several servers behind one install, one config entry.
Troubleshooting
npxhangs or fails to find the package: npm publish for this package is pending. Use the.mcpbbundle or the clone-and-build path above until it lands.- "no profile stored": run
profile_setonce, orresume_read {path, save: true}from an existing resume. - The resume dropped a bullet I wanted: raise
max_pages, or pass the posting's words inkeywordsso the bullet outranks the others.bullets_droppedin the response names every one that did not fit. - Short skill names:
tailor_to_jobkeeps two- and one-character skills,Go,C,R,C#,C++,F#,Qt,UI,UX,QA,ML,AI,AR,VR,JS,TS,K8s,AWS,GCP,SQL,iOS, plus any short word that appears in your ownskillslist, and ranks a known skill above a longer word of the same frequency. - A keyword I have is reported missing: matching is on word boundaries, so
godoes not matchGoogleandk8sdoes not matchKubernetes. Add the exact word to your skills if it is true. resume_readput a role inunparsed: resumes have no schema. Nothing is dropped silently, fix the fields and pass them toprofile_set.- There is no
resume_to_pdf: every pure-JavaScript route from Word to PDF needs a native dependency or a cloud API.resume_to_htmlwrites semantic HTML with a print stylesheet; print that to PDF. - Node version: requires Node >= 18. Check with
node -v.
MIT licensed. Support: [email protected]
Built by theluckystrike.
One business profile for the whole suite
Your identity is stored once, at ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json,
and every server in the suite reads it: the invoice issuer, the docx letterhead, the recurring
issuer, expense-tracker's default VAT rate, time-tracker's and timezone's home zone, and the
resume and contract letterheads. Set it once with business_set (invoice or docx) - you never
repeat it anywhere else. An email address is only ever taken from that profile or from an explicit
argument; when none is stored, documents show [add: email] and the tool says so rather than
letting anyone improvise an address.
Use these docs as an MCP server
Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:
- Docs MCP URL: https://gitmcp.io/theluckystrike/mcp-resume
來源:servers/resume/README.md,提交 1bd9d69
工具
0版本歷史
2- v0.22.5最新Oct 14, 2026
- v0.21.0Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分