resume-cover-letter-docx-generator について
保存した履歴書情報をもとに、求人に合わせた Word 履歴書とカバーレターを作成する MCP サーバーです。職歴の関連度で箇条書きを並べ替え、事実にない内容は加えず、不足情報は補足用の印として示します。
主な機能
- 01関連度に応じた履歴書の並べ替えと短縮
- 02事実確認付きの1ページカバーレター
- 03求人キーワードの一致度と不足分析
- 04DOCX の読み込みと Markdown・HTML 出力
- 05プロフィールとファイルのローカル保存
活用シーン
- 01求人に合わせた履歴書の調整
- 02既存 DOCX からのプロフィール作成
- 03根拠のない主張を含まないカバーレター作成
- 04応募フォーム用テキストや印刷ファイルの出力
MCP 対応
プロフィール管理、求人との照合、DOCX 作成、エクスポートのツールを MCP クライアントに提供します。プロフィールのリソースと apply_to_job プロンプトも利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.zovo.one/mcp/resumeclaude mcp add --transport http theluckystrike-resume-cover-letter-docx-generator https://mcp.zovo.one/mcp/resume{"mcpServers":{"theluckystrike-resume-cover-letter-docx-generator":{"type":"http","url":"https://mcp.zovo.one/mcp/resume"}}}Cursor で開く{"servers":{"theluckystrike-resume-cover-letter-docx-generator":{"type":"http","url":"https://mcp.zovo.one/mcp/resume"}}}VS Code で開く{"mcpServers":{"theluckystrike-resume-cover-letter-docx-generator":{"type":"http","url":"https://mcp.zovo.one/mcp/resume"}}}{"mcpServers":{"theluckystrike-resume-cover-letter-docx-generator":{"serverUrl":"https://mcp.zovo.one/mcp/resume"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.zovo.one/mcp/resume認証が必要ツール
13| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | いいえ | 本人の氏名です。省略すると共有ビジネスプロフィールの氏名が使われるため、スイートにすでに登録されている氏名を尋ねられることはありません |
| string | いいえ | 本人のメールアドレスです。省略すると共有ビジネスプロフィールのメールアドレスが使われます。どちらもない場合、手紙とレターヘッドに "[add: email]" と表示し、その旨を伝えます。決して作り上げないでください | |
| links | array | いいえ | ポートフォリオ、LinkedIn、GitHub |
| merge | boolean | いいえ | 保存済みプロフィールを更新します。渡したフィールドは保存済みの値を置き換え、省略したフィールドは保持されます。プロフィールがすでに存在する場合は必須です。ただし、replace を渡す場合を除きます |
| phone | string | いいえ | 本人の電話番号です。デフォルトでは共有ビジネスプロフィールの電話番号が使われます |
| skills | array | いいえ | |
| replace | boolean | いいえ | 保存済みプロフィールを破棄し、この呼び出しで渡された内容だけを保存します。プロフィールがすでに存在する場合は必須です。ただし、merge を渡す場合を除きます |
| summary | string | いいえ | 2、3 行。カバーレターの適合性を示す段落としてそのまま使用されます。 |
| variant | string | いいえ | 2 つ目のプロフィールに名前を付けます。例:"backend"。無料プランではデータディレクトリごとにプロフィールは 1 つです。名前付きのバリアントは Pro 限定です。 |
| location | string | いいえ | |
| education | array | いいえ | |
| languages | array | いいえ | |
| experience | array | いいえ | 職歴は任意の順序で指定できます。profile_set は保存前に新しい順に並べ替えます(`end` のない現職を先頭にし、その後 `end` の降順、さらに `start` の降順)。ページ数制限に合わせた項目の削減と、カバーレターの箇条書きの順位付けはいずれも、配列の順序が新しさを示すものとして扱うためです。 |
| accent_color | string | いいえ | レターヘッドの色。16 進数 6 桁。例:1F3864。Pro 限定です。 |
| certifications | array | いいえ |
詳細
mcp-resume
CV の事実情報を一度登録すれば、「この求人に合わせて履歴書を調整し、カバーレターを書いて」と伝えるだけで、実際の .docx ファイルを2つ作成できます。履歴書では、求人との関連性が高い順に箇条書きを並べ替え、指定したページ数に収まるよう内容を調整し、実際に経験があるキーワードを太字にします。さらに、1ページのカバーレターには、プロフィールに記載されていない内容は一切含めません。不足している事実がある場合は、数値を捏造せず、[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 バンドルを使用するか、次の3つのコマンドだけでソースからビルドしてください:
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 の絶対パスを指定します。
このサーバーは mcp-docx とドキュメントエンジンを共有しているため、ビルド対象に servers/docx が含まれています。エンジンを別途もう一つ同梱する必要はありません。
Pro モードで実行するには、同じ設定ブロックに MCP_LICENSE_KEY を設定するか、キーを使って一度 license_activate を呼び出します。
ツール
| ツール | 機能 |
|---|---|
profile_set | すべての出力の基になる事実情報を保存します:氏名、メールアドレス、電話番号、所在地、リンク、概要、スキル、箇条書き付きの職歴、学歴、資格、言語。データディレクトリごとにプロフィールを1つ保存できます。Pro では名前付きのバリエーションを追加できます |
profile_get | 保存されたプロフィールを、ほかのツールが参照するものと完全に同じ形式の JSON で返します |
resume_create | 履歴書を .docx として作成します。キーワードの一致数と最近の経験に基づいて箇条書きに順位を付け、測定済みの語数上限に照らして max_pages に収まるよう調整します。一致したキーワードは太字になり、不足しているキーワードは報告されますが、追加されることはありません。スタイル:modern、classic、compact |
cover_letter_create | プロフィールの情報だけを基に、「書き出し」「適合性」「実績」「締めくくり」の4部構成で1ページのレターを作成します。トーン:formal、direct、warm。不明な情報は [add: ...] のプロンプトとして返されます |
tailor_to_job | 求人内容に対するギャップ分析を行います。求人が実際に求めているキーワード、プロフィールでカバーできているものとできていないもの、網羅率、そして既に記載した事実の並べ替えだけで構成した書き換えを示します |
resume_read | 既存の履歴書 .docx を見出しごとに解析し、プロフィール形式に読み込みます。ベストエフォートで処理します。save: true を指定しない限り、保存はされません |
resume_to_markdown | 申請フォームや ATS フォーム用に、履歴書を Markdown で出力します |
resume_to_html | 印刷用スタイルシート付きの印刷可能な HTML を作成します。開いて PDF に印刷できます |
license_status | 無料モードか Pro モードかを表示します |
license_activate | Pro キーを有効化します(オフラインで検証) |
リソース:resume://profile は保存されたプロフィールを JSON で返します。
プロンプト:apply_to_job は1つの求人に対して tailor_to_job、resume_create、cover_letter_create を連続して実行し、不足情報を補完せずにギャップとして報告するようモデルに指示します。
カバーレターに事実を捏造させない
ここが重要な部分なので、お願いするのではなく、必ず守られるようにしています。
- レター内のすべての根拠となる箇条書きは、プロフィールに記載された文言そのままです。レターで箇条書きを言い換えて、より強い主張にすることはありません。
- 渡された
highlightsの項目は、まずプロフィールと照合されます。プロフィールに裏付けがない場合は、主張としてではなく[add: "..." is not in your profile - add it there or drop it]と表示されます。 - ファイルを書き込む前に、レター内にあるすべての数字の並びが、プロフィールと渡された引数に含まれているか確認されます。どちらにも由来しない数字がある場合は、警告ではなく処理を拒否し、ツールはエラーを返して何も書き込みません。求人情報は、意図的に参照元として認められていません。雇用主の売上高、従業員数、処理量は雇用主のものであり、レターであなたの実績として言い換えることはありません。照合は整数単位で行われるため、プロフィールに
2012があっても、レターで12と記載する根拠にはなりません。 - 各根拠の箇条書きは、実際に該当する職務の下に表示されます。2社での業務を引用するレターには2つの見出しが表示されます。以前の職務での業務が現在の職務の下に記載されることはありません。
- 数字を含まない箇条書きには
[add: metric]が追加されます。結果を推測するのではなく、あなたに結果の追加を求めるためです。 tailor_to_jobで不足しているキーワードが、スキルとして扱われることはありません。その旨は平易な言葉で伝えられます。
できること
| あなたの指示 | ツール |
|---|---|
| 「私の履歴書です:Ada Rowe、バックエンドエンジニア、2021年からAcme Pay、…」 | profile_set |
| 「~/Documents/cv.docx にある古い履歴書を読み込んで、プロフィールを設定してください。」 | resume_read |
| 「この求人にどの程度マッチしていますか?」 | tailor_to_job |
| 「このStaff Engineerの職務向けに、1ページの履歴書を作成してください。」 | 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用紙1ページに、Calibri 11pt、余白2cmで本文を配置すると、約520語を収められます。履歴書では、そのページの約7分の1を見出し、空行、連絡先ブロックが占めます。差し引いた1ページあたりの語数は450語です(compact スタイルでは540語)。連絡先ブロック、要約、スキル、職務見出し、学歴、資格、語学を先に数え、残りの上限をスコアの高い順に職務経験の箇条書きに割り当てます。どの職務にも最初の箇条書きを残してから、2つ目の箇条書きを割り当てます。そのため、調整の結果、ページ上に箇条書きが一つもない職務が残ることはありません。応答には上限、使用語数、推定ページ数、削除された箇条書きがすべて示されるので、Wordで開いて初めて調整内容に気付くのではなく、判断の内容を確認できます。
スコアには職務の新しさも含まれます。これは start/end のテキストではなく、配列の順序から判断されます。profile_set は、この方法が安全に機能する並び順を適用します。呼び出し時に職務をどの順で列挙しても、保存されるプロフィールは必ず新しい順になります。終了日がない現在の職務が先頭に来て、その後は end の降順、続いて start の降順です。職務はどの順で入力してもかまいません。保存後の順序と、cover_letter_create でのカバーレターの箇条書きの順位は、常に正しくなります。
Free と Pro の比較
| Free | Pro(一回払い $19) | |
|---|---|---|
プロフィール、resume_create、resume_to_markdown、resume_to_html | はい、無制限 | はい、無制限 |
| 履歴書のスタイル | modern | modern、classic、compact |
| カバーレター | 1暦月あたり3通 | 無制限 |
tailor_to_job | 2,000文字までの求人情報 | 文字数制限なし |
| プロフィールのバリエーション | プロフィール1つ | 名前付きバリエーション(backend、management、...) |
| レターヘッドの色 | デフォルト | 独自の accent_color |
| フッターのクレジット表記 | "Generated with mcp-docx by theluckystrike" | 削除 |
Pro を入手:https://mcp.zovo.one/buy/resume(一回払い $19、または全バンドル $39)。
プライバシー
すべてのデータはローカルに保存されます。履歴書が端末の外に出ることはありません。サーバーはお使いのコンピューター上のファイルを読み書きし、プロフィールをデータディレクトリに保存します。また、ライセンス認証(キーはオフラインで検証されます)、フォント、テレメトリーのいずれについても、ネットワークリクエストは一切行いません。
組み合わせて使う
- mcp-docx。このサーバーはそのドキュメントエンジン(
@theluckystrike/mcp-docx/lib)をインポートします。提案書、契約書、Markdown から Word への変換も必要な場合は、docx もインストールしてください。 - office-suite。複数のサーバーを1回のインストールと1つの設定項目で利用できます。
トラブルシューティング
npxがハングする、またはパッケージを見つけられない:このパッケージは npm への公開手続き中です。公開されるまでは、上記の.mcpbバンドルまたはクローンしてビルドする方法を使用してください。- 「no profile stored」と表示される:
profile_setを一度実行するか、既存の履歴書に対してresume_read {path, save: true}を実行してください。 - 履歴書から残したかった箇条書きが抜けている:
max_pagesを増やすか、求人情報のキーワードをkeywordsに渡して、その箇条書きの優先順位を上げてください。応答のbullets_droppedに、収まらなかった項目がすべて示されます。 - 短いスキル名:
tailor_to_jobは、2文字または1文字のスキル(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に一致しません。該当する場合は、正確な単語をスキルに追加してください。 resume_readで役職がunparsedに入る:履歴書に定まったスキーマはありません。項目が黙って捨てられることはないので、フィールドを修正してprofile_setに渡してください。resume_to_pdfがない:Word から PDF への純粋な JavaScript による変換には、ネイティブ依存関係またはクラウド 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 サーバーとして使用する
Claude、Cursor、Windsurf、VS Code などの MCP クライアントは、インストール不要で GitMCP 経由でこのリポジトリのドキュメントを直接読み取れます。
- Docs MCP URL:https://gitmcp.io/theluckystrike/mcp-resume
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。