关于 letterhead
letterhead 是用于从聊天创建、读取和填充 Word 文档的 MCP 服务,可生成提案、合同、信件及其他业务文件。它支持企业信头和模板样式保留,并在本地处理文件。
主要功能
- 01创建带信头的 Word 文档
- 02将 Markdown 转为 DOCX
- 03读取文档文本、标题和表格
- 04填充模板占位符并保留样式
- 05生成提案和合同草稿
适用场景
- 01为客户制作带品牌信头的提案
- 02将会议记录整理成 Word 文件
- 03读取现有 DOCX 或填写业务模板
MCP 相关
作为 MCP 服务,它向 MCP 客户端提供文档创建、转换、读取和模板填充工具,并提供最近文档资源及从工时生成提案的提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
使用 Claude 创建 .docx Word 文档
说一句“为 Beta Corp 编写一份提案,重建结账流程,4,500 EUR,分三个阶段”,即可获得一份可直接发送的真实 .docx 文件。此 MCP 服务可根据聊天内容创建 Word 文档,包括提案、报价、服务协议、工作说明书和信函,并支持添加信头、标题、项目符号列表、编号列表和表格。它还可以将 markdown 转换为 .docx,将现有 .docx 读取为文本和大纲,并在你已使用的模板中填充 {{placeholders}},同时保留原文档的所有样式、表格、页眉和图片。一切都在本地运行:无需上传、无需账户,也不依赖原生组件。
已收录于官方 MCP Registry(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 安装包,或严格使用以下三条命令从源代码构建:
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 编号、IBAN、银行、徽标、信笺颜色、默认货币、税率、付款条款。字段集与 mcp-invoice 相同,因此同一份资料可供两者使用 |
doc_create | 根据各部分内容撰写 .docx:标题、段落、项目符号列表、编号列表和表格。布局:plain、letter(发件人信息块、日期、收件人)和 proposal(信笺横幅、封面标题) |
doc_from_markdown | 将 Markdown 转换为 .docx:ATX 标题、段落、项目符号列表和编号列表(保留缩进,最多支持 Word 的九级列表)、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,这是有意为之
所有纯 JavaScript 的 Word 转 PDF 方案都需要原生依赖(LibreOffice、Chromium 二进制文件、C++ 渲染库)或云 API。本项目都不提供,因此只要机器上有 Node,npx 就能运行,无需其他依赖。doc_to_html 会改为写入带打印样式表的语义化 HTML:打开后打印为 PDF,得到的效果与直接转换无异。工具描述和工具本身的回答都会明确说明这一点,因此模型不会承诺它无法生成的 PDF。
你可以这样说
| 你说 | 工具 |
|---|---|
| “设置我的信笺抬头:Acme Consulting,1 Road Warsaw,VAT PL1234567890。” | business_set |
| “为 Beta Corp 撰写一份提案:重建结账流程,4,500 EUR,五五分成,分三个阶段。” | proposal_create |
| “起草一份与 Beta Corp 的服务协议,每月 3,000 EUR,10 月开始。” | 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 中打开,内容包括信笺抬头、封面标题、“为 Beta Corp 准备”、摘要、工作范围、交付物、时间线表格、金额为 EUR 4,500.00 的投资表格、付款条款以及双方的签名区块。每个金额都带有货币代码,不会出现无货币代码的数字。
免费版与 Pro 版
| 免费版 | Pro 版 | |
|---|---|---|
doc_create、doc_from_markdown、doc_read、doc_to_html | 无限制 | 无限制 |
proposal_create、contract_create | 每个自然月合计 3 次 | 无限制 |
doc_fill_template | 最多包含 10 个占位符的模板 | 任意模板 |
| 页脚 | 显示“由 theluckystrike 的 mcp-docx 生成” | 无品牌标识 |
| 信头徽标和颜色 | 默认颜色,无徽标 | 使用你的 logo_path 和 brand_color |
| 表格、列表、信函和提案版式、参考编号 | 支持 | 支持 |
Pro 版为一次性付费,售价 $19;也可支付 $39,购买合集中的所有服务的终身使用权。
.docx 的生成与读取方式
文档使用 docx 编写,这是一个纯 JavaScript OOXML 写入器,无需原生模块、无头浏览器或办公软件安装。
读取和模板填充完全不需要依赖项。.docx 是 ZIP 文件,因此使用 node:zlib 打开,再通过简短的 WordprocessingML 遍历,按文档顺序提取段落、标题级别(来自 w:pStyle)、列表项和表格。通过将每个段落的 w:numId 与 word/numbering.xml 对应起来,区分编号列表和项目符号列表;这是记录这一区别的唯一位置,否则所有编号列表读回时都会变成项目符号列表。
模板填充会替换每个段落拼接后的文本,而不是逐个文本运行替换。编辑或拼写检查后,Word 经常会把你输入的 {{client}} 占位符拆分成三个文本运行({{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.
路径通过独占创建来预留,而不是通过检查是否存在来预留,因此两个进程同时写入同一个
out_path 时,不会互相覆盖:一个进程会成功,另一个会被拒绝且不会写入任何内容。
如果不传入 out_path,文件名会根据标题生成,而且生成的路径不会与之前的文档重名:标题相同的第二份提案会保存为 ...-2.docx。若要修改已发送的提案,请改用
proposal_update {reference}:它会根据已存储的结构化数据重写同一个文件,并保留参考编号。
检查会在构建或写入任何内容之前运行,因此被拒绝的调用不会改动磁盘,也不会消耗参考编号。若要替换文件,请传入 overwrite: true。
Word 无法处理的字符
XML 1.0 允许 TAB、LF 和 CR,但不允许其他控制代码。每个写入 word/document.xml
的字符串都会先经过清理:移除控制代码和未配对的代理项,将字面量 \n 转义序列转换为实际段落换行,并合并多余空白。如果移除了任何内容,工具会在答复中说明,而不会交给你一个 Word 会提示修复的文件。
数据存储方式
业务资料、文档登记簿和编号计数器以纯 JSON 格式存放在
${XDG_DATA_HOME:-~/.local/share}/mcp-servers/docx/ 下;如果不传入 out_path,生成的文件会存放在
documents/ 子文件夹中。每次修改操作都会在 .../docx/.lock 上获取建议锁,因此同一数据目录下的两个客户端不会分配相同的编号,也不会丢失记录。数据会先保存到临时文件,再重命名到目标位置。
如果其中某个 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,通过一次安装运行多个服务,并使用一个配置条目。
故障排除
npx卡住或无法找到软件包:此软件包的 npm 发布尚未完成。在发布完成前,请使用.mcpb压缩包或上文所述的克隆并构建方式。- 显示“Wrote ... .docx”,但 Word 无法打开文件:请检查文件路径是否位于仍在上传的同步文件夹中。工具返回时文件即已完整写入;不会逐步写入。
- 占位符未被替换:调用
doc_fill_template时不传入values,即可列出模板中实际包含的占位符。名称必须完全匹配,{{ }}内的空白会被忽略,响应会列出你传入但模板中不存在的每个键。 - 信头显示“Your business”:运行一次
business_set。即使缺少资料,也不会阻止生成文档;响应会说明发件人信息是占位内容。 - 文档中没有徽标:徽标是 Pro 功能,且
logo_path必须指向现有的 PNG、JPG 或 GIF 文件。 - 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],工具也会明确说明,而不会让任何人自行编造地址。
常见问题
有用于 Word 文档(.docx)的 MCP 服务吗?
有。mcp.zovo.one 上的 docx 服务可通过 Claude 创建 .docx 文件:包括基于模板的文档、标题、表格和格式设置,以及批量生成。提供免费套餐、托管端点或一键安装的 .mcpb。
如何通过 Claude 创建 .docx?
连接 https://mcp.zovo.one/mcp/docx 并描述文档内容——“创建一个包含以下三个部分和一个定价表的 proposal.docx。”文件会写入你的本地存储目录。
将这些文档用作 MCP 服务
任何 MCP 客户端(Claude、Cursor、Windsurf、VS Code)都可以通过 GitMCP 直接读取此代码库的文档——无需安装:
- 文档 MCP URL:https://gitmcp.io/theluckystrike/mcp-docx
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。