letterhead について
letterheadは、チャットから提案書、契約書、手紙などのWord文書を作成、読み取り、テンプレート入力するMCP サーバーです。ビジネス用レターヘッドに対応し、テンプレートの書式を保ちながらローカルで処理します。
主な機能
- 01レターヘッド付きWord文書の作成
- 02MarkdownからDOCXへの変換
- 03文書のテキスト、見出し、表の読み取り
- 04書式を保ったプレースホルダー入力
- 05提案書と契約書のドラフト生成
活用シーン
- 01顧客向けのブランド付き提案書を作成
- 02議事録をWord文書にまとめる
- 03既存のDOCXを読み取る、または業務テンプレートに入力
MCP 対応
MCP サーバーとして、文書の作成、変換、読み取り、テンプレート入力のツールを MCP クライアントに提供します。最近の文書を返すリソースと、記録した作業時間から提案書を作るプロンプトも備えています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Claude から .docx Word 文書を作成
「Beta Corp 向けに、チェックアウトの再構築について、4,500 EUR、3 フェーズで提案書を書いて」と伝えるだけで、そのまま送信できる本物の .docx が作成されます。この MCP サーバーは、チャットの内容からレターヘッド、見出し、箇条書き、番号付きリスト、表を含む Word 文書を作成します。提案書、見積書、サービス契約書、作業明細書、レターにも対応しています。また、Markdown を .docx に変換したり、既存の .docx をテキストとアウトラインとして読み込んだり、すでに使用しているテンプレートの {{placeholders}} に値を入力したりできます。元のスタイル、表、ヘッダー、画像はすべて保持されます。すべてローカルで動作し、アップロードもアカウントもネイティブ依存関係も不要です。
公式 MCP レジストリ に掲載されています(io.github.theluckystrike/docx-document-generator-proposal-contract-markdown)。

テンプレートサイトやオフィスソフトのサブスクリプションなしで、チャット、提案書、契約書、レターから本物の Word 文書を作成できます。
60 秒でインストール
@theluckystrike/mcp-docx の npm 公開は保留中です。それまでは、以下で動作を確認済みのワンクリック .mcpb バンドル、またはクローンしてビルドする方法をご利用ください。
ワンクリック(.mcpb):最新リリースから docx.mcpb をダウンロードし、Claude Desktop でダブルクリックします:
https://github.com/theluckystrike/mcp-servers/releases/latest
(claude_desktop_config.json):
{
"mcpServers": {
"docx": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-docx"]
}
}
}
Claude Code:
claude mcp add docx -- npx -y @theluckystrike/mcp-docx
(.cursor/mcp.json):
{
"mcpServers": {
"docx": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-docx"]
}
}
}
上記の 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
次に、クライアントの command を node に設定し、引数として servers/docx/dist/index.js の絶対パスを指定します。
Pro モードで実行するには、同じ設定ブロックで MCP_LICENSE_KEY を設定するか、キーを使って license_activate を一度呼び出してください。
ツール
| ツール | 機能 |
|---|---|
business_set | すべてのドキュメントに記載する送信者プロフィールを保存します。名前、住所、メールアドレス、VAT ID、IBAN、銀行、ロゴ、レターヘッドの色、デフォルト通貨、税率、支払い条件が含まれます。mcp-invoice と同じフィールドセットなので、1つのプロフィールを両方で利用できます |
doc_create | セクションから .docx を作成します。見出し、段落、箇条書き、番号付きリスト、表に対応しています。レイアウトは plain、letter(送信者ブロック、日付、宛先)、proposal(レターヘッドの帯、表紙タイトル)です |
doc_from_markdown | Markdown を .docx に変換します。ATX 見出し、段落、箇条書きと番号付きリスト(インデントを保持し、Word の9段階まで対応)、GFM パイプテーブル、等幅フォントでのフェンスコードブロック、インラインの **bold** / *italic* / `code` に対応しています |
doc_read | 既存の .docx から、テキスト、レベル付き見出し、リスト項目、表をドキュメント内の順序で抽出します。format: "json" はブロック構造を返します |
doc_to_html | .docx を印刷用スタイルシート付きのセマンティック HTML に変換します。PDF にする方法については、以下の注記をご覧ください |
doc_fill_template | .docx 内の {{placeholders}} を置き換えて、すべてのスタイル、表、ヘッダー、フッター、画像を維持したまま新しいファイルを書き出します。values を指定せずに呼び出すと、テンプレートに含まれるプレースホルダーの一覧を返します |
proposal_create | クライアントにそのまま提示できる提案書を作成します。概要、作業範囲、成果物、スケジュール表、価格、条件、有効期限、署名ブロックを含み、再利用されない参照番号が付与されます |
proposal_update | 参照番号をもとに既存の提案書を上書きします。渡したフィールドのみが変更され、それ以外はドキュメントとともに保存された構造化データから取得されます。ファイルと参照番号は変わりません |
contract_create | フリーランス業務委託契約書の簡易テンプレートを作成します。契約当事者、サービス、契約期間、報酬、知的財産、機密保持、請負業者としての立場、契約解除、責任、準拠法が含まれます。弁護士が使用するためのラベル付きプレースホルダーを含むテンプレートであり、法的助言ではありません |
license_status | 無料モードまたは Pro モードを表示します |
license_activate | Pro キーを有効化します(オフラインで検証) |
リソース:docs://recent は、書き込まれた最新のドキュメント25件を、新しい順に種類、クライアント、参照番号、パスとともに返します。
プロンプト:write_proposal_from_hours は、記録された作業時間(または mcp-time-tracker の invoice_summary)から、価格を設定した提案書を作成します。
doc_to_pdf がないのは意図的です
Word から PDF への純粋な JavaScript による変換には、ネイティブ依存関係(LibreOffice、Chromium バイナリ、C++ レンダリングライブラリ)かクラウド API が必要です。このコレクションにはどちらも含まれていないため、Node 以外に何もなくても、どのマシンでも npx が動作します。代わりに、doc_to_html は印刷用スタイルシート付きのセマンティック HTML を書き出します。それを開いて PDF に印刷すれば、得られる結果は PDF に変換した場合と同じです。ツールの説明もツール自身の回答も同じ内容なので、モデルが生成できない PDF を約束することはありません。
依頼できること
| 依頼内容 | ツール |
|---|---|
| 「レターヘッドを設定してください。Acme Consulting、1 Road Warsaw、VAT PL1234567890。」 | business_set |
| 「Beta Corp 向けに、チェックアウトの再構築、4,500 EUR、50/50、3段階の提案書を作成してください。」 | proposal_create |
| 「Beta Corp 向けに、10月開始、月額3,000 EUR の業務委託契約書を作成してください。」 | contract_create |
| 「この会議メモを Word ドキュメントにしてください。」 | doc_from_markdown |
| 「火曜日の議題を添えた Beta Corp 宛ての手紙を書いてください。」 | style: "letter" を指定した doc_create |
| 「この proposal.docx には実際に何が書かれていますか?」 | doc_read |
| 「私の NDA テンプレートに、このクライアントの詳細を入力してください。」 | doc_fill_template |
| 「このドキュメントを印刷可能な形式にしてください。」 | doc_to_html |
使用例
You: Write a proposal for Beta Corp. Checkout rebuild, 4,500 EUR, 50% on
signature 50% on delivery, three phases: discovery 1 week, build 3 weeks,
launch 1 week. Valid until the end of the year.
proposal_create {
client: "Beta Corp", project_title: "Checkout rebuild",
summary: "Beta Corp loses orders at checkout. This project rebuilds it.",
scope: ["Audit the current funnel", "Rebuild the checkout", "Ship and measure"],
deliverables: ["New checkout in production", "A one-page handover"],
timeline: [{phase: "Discovery", duration: "1 week"},
{phase: "Build", duration: "3 weeks"},
{phase: "Launch", duration: "1 week"}],
price: {amount: 4500, currency: "EUR", terms: "50% on signature, 50% on delivery"},
valid_until: "2026-12-31"
}
-> PROP-2026-0001, EUR 4,500.00
-> ~/.local/share/mcp-servers/docx/documents/checkout-rebuild.docx
ファイルは Word、Pages、LibreOffice、Google Docs で開けます。レターヘッド、表紙タイトル、「Prepared for Beta Corp」、概要、作業範囲、成果物、スケジュール表、EUR 4,500.00 を含む投資額の表、支払い条件、双方の署名ブロックが含まれています。すべての金額に通貨コードが付いており、通貨コードのない数字はありません。
Free と Pro
| Free | Pro | |
|---|---|---|
doc_create, doc_from_markdown, doc_read, doc_to_html | 無制限 | 無制限 |
proposal_create, contract_create | 暦月あたり合計 3 回 | 無制限 |
doc_fill_template | プレースホルダーが最大 10 個のテンプレート | 任意のテンプレート |
| フッター | 「Generated with mcp-docx by theluckystrike」が表示されます | ブランド表示なし |
| レターヘッドのロゴと色 | デフォルトの色、ロゴなし | 独自の logo_path と brand_color |
| 表、リスト、レターと提案書のレイアウト、参照番号 | 対応 | 対応 |
Pro は買い切りで $19、コレクション内のすべてのサーバーを利用する場合は $39 です。
.docx の生成と読み取り方法
ドキュメントの生成には、ネイティブモジュール、ヘッドレスブラウザー、オフィスソフトのインストールが不要な、純粋な JavaScript 製 OOXML ライターである docx を使用します。
読み取りとテンプレートへの入力には、依存関係が一切ありません。.docx は ZIP ファイルであるため、node:zlib で開き、小規模な WordprocessingML の走査によって、段落、見出しレベル(w:pStyle から取得)、リスト項目、表をドキュメント内の順序どおりに抽出します。番号付きリストは、各段落の w:numId を word/numbering.xml と照合して箇条書きと区別します。この違いが記録されているのはそこだけであり、これがなければ、読み取り時にすべての番号付きリストが箇条書きとして扱われてしまいます。
テンプレートへの入力では、段落ごとに結合したテキストを置換します。入力した {{client}} のようなプレースホルダーが、編集やスペルチェック後に Word によって 3 つのラン({{cli、ent}}、...)に分割されることはよくあります。ランごとに置換すると、そうしたプレースホルダーを見逃して、プレースホルダーが残ったままドキュメントが返される場合があります。置換後のテキストは書式を維持したまま最初のランに入れ、同じ段落の残りのランは空にします。パッケージ内のそれ以外のすべての部分はバイト単位でコピーされるため、スタイル、画像、ヘッダー、フッター、セクションの設定はそのまま保持されます。値のないプレースホルダーは空にせず、そのまま残して報告します。
既存のファイルは上書きされません
ファイルを書き込むすべてのツール(doc_create、doc_from_markdown、doc_to_html、doc_fill_template、
proposal_create、contract_create)は、すでに存在する out_path を拒否し、その旨を通知します。
Error: /path/acme-proposal.docx already exists and nothing was written.
Pass overwrite: true to replace it, or give a different out_path.
存在確認ではなく排他的作成でパスを確保するため、2 つのプロセスが同時に同じ
out_path に書き込もうとしても、互いに上書きされることはありません。一方は成功し、もう一方は拒否され、何も書き込まれません。
out_path を渡さない場合、ファイル名はタイトルから生成されます。生成されたパスが以前のドキュメントと重複することはありません。同じタイトルで 2 つ目の提案書を作成すると、...-2.docx として書き込まれます。すでに送信した提案書を変更するには、代わりに proposal_update {reference} を使用してください。保存された構造化データから同じファイルを書き直し、参照番号を維持します。
チェックは生成や書き込みを行う前に実行されるため、拒否された呼び出しではディスクに変更は加わらず、参照番号も消費されません。ファイルを置き換える場合は overwrite: true を渡してください。
Word で扱えない文字
XML 1.0 で許可されているのは TAB、LF、CR であり、それ以外の制御コードは許可されていません。word/document.xml
に渡されるすべての文字列は、まずサニタイズされます。制御コードと対応するサロゲートペアのない文字は削除され、リテラルの \n エスケープは実際の段落区切りに変換され、余分な空白はまとめられます。削除された文字がある場合、Word が修復を提示するようなファイルを渡す代わりに、ツールの応答でその旨を通知します。
データの保存方法
ビジネスプロフィール、ドキュメント登録簿、参照番号カウンターは、${XDG_DATA_HOME:-~/.local/share}/mcp-servers/docx/ にプレーンな JSON として保存されます。また、out_path を指定しない場合に生成ファイルを格納する documents/ サブフォルダーもあります。データを変更するすべての呼び出しは、.../docx/.lock のアドバイザリロック内で実行されるため、同じデータディレクトリを使う 2 つのクライアントが同じ参照番号を割り当てたり、レコードを失ったりすることはありません。保存時には一時ファイルに書き込み、所定の場所にリネームします。
JSON ファイルのいずれかが読み取れない場合や、有効な JSON でない場合でも、「空」として扱われることはありません。ファイルはバイト単位でそのまま <name>.json.corrupt-<timestamp> に退避され、<name>.json.corrupt マーカーが書き込まれます。正常なコピーを復元してマーカーを削除するまで、すべてのツールは data file is corrupt; moved to ...; nothing was written を返します。
参照番号は、提案書が PROP-YYYY-NNNN、契約書が AGR-YYYY-NNNN です。レコードの保存前にカウンターを書き込むため、クラッシュが発生した場合は番号が消費され、再利用されることはありません。また、既存の番号をスキャンするため、復元した登録簿が、送付済みのドキュメントですでに使われている参照番号を返すこともありません。
制限事項と注意点
- PDF は出力できません。
doc_to_htmlを使って印刷してください。その理由は上のセクションを参照してください。 doc_readが読み取るのは.docxのみです。従来形式の.doc、.rtf、Pages ファイルは、その旨を示すメッセージとともに拒否されます。doc_readが抽出するのは、見出し、段落、リスト、表などのテキスト構造です。フォント、色、コメント、変更履歴、脚注、埋め込み画像は報告しません。doc_fill_templateは、書き換える段落全体に最初のランの書式を適用します。プレースホルダーの前後で太字と標準書式が混在する段落は、最初のランの書式で返されます。contract_createは[BRACKETED PLACEHOLDERS]を含むドラフト用のひな形を作成し、そのドキュメント自体に、これはテンプレートであり法的助言ではないことを記載します。この内容は、いずれの法域の弁護士による確認も受けていません。- 無料プランの上限である月 3 件には、暦月ごとの提案書と契約書の合計がカウントされ、毎月 1 日にリセットされます。利用が上限に達した後も、それ以外のすべての機能は無制限のままです。
プライバシー
すべてのデータはローカルに保存されます。このサーバーはお使いのマシン上のファイルを読み書きし、登録簿をデータディレクトリに保存します。また、ライセンス確認(キーはオフラインで検証されます)、フォント、テレメトリーのいずれについても、ネットワークリクエストを一切行いません。
関連ツール
- mcp-invoice:同じ
business_setプロフィール形式を使用します。承認した提案書が、送付する請求書になります。 - mcp-time-tracker:
write_proposal_from_hoursプロンプトを使って、invoice_summaryの時間を金額に換算した提案書を作成できます。 - mcp-expense-tracker:立替費用を含めてプロジェクトの見積もりを作成できます。
- office-suite:1 つのインストールで複数のサーバーを利用し、設定項目も 1 つにまとめられます。
トラブルシューティング
npxがハングする、またはパッケージが見つからない:このパッケージは npm への公開待ちです。公開されるまでは、上記の.mcpbバンドルまたはクローンしてビルドする方法を使ってください。- 「Wrote ... .docx」と表示されるのに Word で開けない:まだアップロード中の同期フォルダー内にパスがないか確認してください。ツールから応答が返った時点でファイルは完成しており、書き込みが途中で行われることはありません。
- プレースホルダーが置き換わらない:
valuesを指定せずにdoc_fill_templateを呼び出し、テンプレートに実際に含まれている項目を一覧表示してください。名前は完全一致で照合され、{{ }}内の空白は無視されます。また、テンプレートに存在しない、渡したすべてのキーが応答に表示されます。 - レターヘッドに「Your business」と表示される:
business_setを一度実行してください。プロフィールがなくてもドキュメントの作成がブロックされることはありません。応答では、送信者欄がプレースホルダーであることが示されます。 - ドキュメントにロゴが表示されない:ロゴは Pro の機能です。また、
logo_pathが存在し、PNG、JPG、GIF のいずれかである必要があります。 - Node のバージョン:Node >= 18 が必要です。
node -vで確認してください。
MIT ライセンス。サポート:[email protected]
theluckystrike が開発しました。
スイート全体で共有する1つのビジネスプロフィール
ID 情報は ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json に一度だけ保存され、
スイート内のすべてのサーバーがこれを読み込みます。請求書の発行者、docx のレターヘッド、定期請求の発行者、expense-tracker のデフォルト VAT 税率、time-tracker と timezone のホームゾーン、履歴書と契約書のレターヘッドに適用されます。business_set(invoice または docx)で一度設定すれば、ほかの場所で繰り返し設定する必要はありません。メールアドレスは、プロフィールまたは明示的な引数からのみ取得されます。保存されていない場合、書類には [add: email] と表示され、ツールがその旨を伝えます。誰かが勝手にメールアドレスを補うことはありません。
よくある質問
Word 文書(.docx)用の MCP サーバーはありますか?
はい。mcp.zovo.one の docx サーバーは Claude から .docx ファイルを作成します。テンプレートベースの文書、見出し、表、書式設定、一括生成に対応しています。無料プラン、ホスト型エンドポイント、またはワンクリックでインストールできる .mcpb を利用できます。
Claude から .docx を作成するにはどうすればよいですか?
https://mcp.zovo.one/mcp/docx に接続して、文書の内容を説明します。たとえば、「次の3つのセクションと料金表を含む proposal.docx を作成してください」と指示します。ファイルはローカルのストレージディレクトリに書き込まれます。
これらのドキュメントを MCP サーバーとして使用する
どの MCP クライアント(Claude、Cursor、Windsurf、VS Code)でも、GitMCP 経由でこのリポジトリのドキュメントを直接読み込めます。インストールは不要です。
- ドキュメント用 MCP URL:https://gitmcp.io/theluckystrike/mcp-docx
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。