Docx MCP
Transforme um chat em um documento Word real: propostas, orçamentos, contratos e cartas como arquivos .docx, além de ler e preencher modelos .docx existentes. Tudo permanece na sua máquina.
Documentação
Crie documentos .docx do Word a partir do Claude
Servidor MCP para documentos do Word: criação de arquivos docx e criação de um documento do Word a partir de um chat. Documentos reais do Word a partir de chat: propostas, contratos, cotações.
Funciona com Claude Desktop, Claude Code, Cursor e qualquer cliente do Model Context Protocol. Roda na sua própria máquina ou hospedado, sem instalação.
Página do produto: https://mcp.zovo.one/s/docx — o que faz, as ferramentas que expõe e um endpoint de token ao vivo.
Instalação
Hospedado, nada para instalar. Obtenha um token em https://mcp.zovo.one/mcp/connect (a página de conexão) ou https://mcp.zovo.one/mcp/token (o mesmo token como JSON); um token anônimo gratuito é emitido na hora e uma chave Pro funciona da mesma forma. Em seguida, aponte um cliente MCP para https://mcp.zovo.one/mcp/docx via streamable-http e envie o token como Authorization: Bearer <token>.
Se o seu cliente não puder definir cabeçalhos, coloque o token no caminho: https://mcp.zovo.one/mcp/docx/t/<token>. Ambas as formas funcionam. A URL simples sem token responde 401 em tools/call, então o token não é opcional.
Claude Desktop, um clique. Baixe docx.mcpb do último lançamento e clique duas vezes nele.
A partir do código-fonte. O espelho é autocontido: cada dependência @theluckystrike/* é incluída, então um clone novo compila sem configuração extra.
git clone https://github.com/theluckystrike/mcp-docx.git
cd mcp-docx
npm install && npm run build
Em seguida, aponte seu cliente para o ponto de entrada compilado:
{
"mcpServers": {
"docx": {
"command": "node",
"args": ["/absolute/path/to/mcp-docx/dist/index.js"]
}
}
}
@theluckystrike/mcp-docxainda não está publicado no npm, então um comandonpx -y @theluckystrike/mcp-docxfalhará. Os três caminhos acima são os que funcionam e cada um é testado pelo CI.

Espelho somente leitura de mcp-servers/servers/docx. Veja MIRROR.md.
Diga "escreva uma proposta para a Beta Corp, reforma do checkout, 4.500 EUR, três fases" e receba um .docx real que você pode enviar. Este servidor MCP escreve documentos do Word a partir de chat, propostas, cotações, acordos de serviço, declarações de trabalho e cartas, com seu papel timbrado, títulos, listas com marcadores e numeradas e tabelas. Ele também converte markdown em .docx, lê um .docx existente de volta como texto e estrutura, e preenche {{placeholders}} em um modelo que você já usa, mantendo cada estilo, tabela, cabeçalho e imagem do original. Tudo roda localmente: sem upload, sem conta, sem dependência nativa.
No Registro oficial de MCP (io.github.theluckystrike/docx-document-generator-proposal-contract-markdown).
Documentos reais do Word a partir de chat, propostas, contratos e cartas, sem um site de modelos ou assinatura de escritório.
Instalação em 60 segundos
A publicação no npm para @theluckystrike/mcp-docx está pendente. Até lá, o pacote de um clique .mcpb ou um clone+compilação
é o caminho que funciona, ambos verificados abaixo.
Um clique (.mcpb): baixe docx.mcpb do último lançamento e clique duas vezes nele no 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"]
}
}
}
O formulário npx acima começa a funcionar no momento em que o pacote é publicado. Até lá, use o pacote .mcpb acima, ou
compile a partir do código-fonte com exatamente estes três comandos:
git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/docx
Em seguida, aponte o command do seu cliente para node com um argumento: o caminho absoluto para servers/docx/dist/index.js.
Para executar no modo Pro, defina MCP_LICENSE_KEY no mesmo bloco de configuração, ou chame license_activate uma vez com sua chave.
Ferramentas
| Ferramenta | O que faz |
|---|---|
business_set | Armazena o perfil do remetente impresso em cada documento: nome, endereço, e-mail, ID de IVA, IBAN, banco, logotipo, cor do papel timbrado, moeda padrão, taxa de imposto, condições de pagamento. Mesmo conjunto de campos do mcp-invoice, então um perfil serve para ambos |
doc_create | Escreve um .docx a partir de seções: títulos, parágrafos, listas com marcadores, listas numeradas e tabelas. Layouts: plain, letter (bloco do remetente, data, destinatário) e proposal (faixa de papel timbrado, título de capa) |
doc_from_markdown | Markdown para .docx: títulos ATX, parágrafos, listas com marcadores e numeradas (recuo mantido, até os nove níveis do Word), tabelas de pipe GFM, blocos de código cercados como monoespaçados, e **bold** / *italic* / `código` inline |
doc_read | Extrai texto, títulos com níveis, itens de lista e tabelas de qualquer .docx existente, na ordem do documento. format: "json" retorna a estrutura de blocos |
doc_to_html | Converte um .docx em HTML semântico com uma folha de estilos de impressão. Esta é a rota para PDF — veja a nota abaixo |
doc_fill_template | Substitui {{placeholders}} em um .docx e escreve um novo arquivo, mantendo cada estilo, tabela, cabeçalho, rodapé e imagem. Chamado sem values, lista os espaços reservados que o modelo contém |
proposal_create | Uma proposta pronta para o cliente: resumo, escopo, entregas, tabela de cronograma, preço, condições, validade e bloco de assinatura, com um número de referência que nunca é reutilizado |
proposal_update | Reescreve uma proposta existente no lugar a partir de sua referência: apenas os campos que você passa mudam, o resto vem dos dados estruturados armazenados com o documento, e o arquivo e o número de referência permanecem os mesmos |
contract_create | Um esqueleto simples de acordo de serviço freelance: partes, serviços, prazo, honorários, propriedade intelectual, confidencialidade, status de contratante, rescisão, responsabilidade, lei aplicável. Um modelo com espaços reservados rotulados para um advogado, não aconselhamento jurídico |
license_status | Mostra o modo gratuito ou Pro |
license_activate | Ativa uma chave Pro (verificada offline) |
Recurso: docs://recent retorna os últimos 25 documentos escritos, do mais recente ao mais antigo, com tipo, cliente, referência e caminho.
Prompt: write_proposal_from_hours transforma horas rastreadas (ou um invoice_summary do mcp-time-tracker) em uma proposta com preço.
Não há doc_to_pdf, e isso é deliberado
Todo caminho puramente em JavaScript do Word para PDF precisa de uma dependência nativa (LibreOffice, um binário Chromium, uma biblioteca de renderização C++) ou uma API em nuvem. Esta coleção não inclui nenhum dos dois, então npx funciona em qualquer máquina com Node e nada mais. doc_to_html escreve HTML semântico com uma folha de estilos de impressão: abra, imprima em PDF, e o resultado é o que você teria obtido. A descrição da ferramenta e a própria resposta da ferramenta dizem o mesmo, então o modelo não promete um PDF que não pode produzir.
O que você pode dizer
| Você diz | Ferramenta |
|---|---|
| "Configure meu papel timbrado: Acme Consulting, 1 Road Warsaw, VAT PL1234567890." | business_set |
| "Escreva uma proposta para a Beta Corp: reforma do checkout, 4.500 EUR, 50/50, três fases." | proposal_create |
| "Elabore um acordo de serviço com a Beta Corp, 3.000 EUR mensais, começando em outubro." | contract_create |
| "Transforme estas notas de reunião em um documento do Word." | doc_from_markdown |
| "Escreva uma carta para a Beta Corp com uma pauta para terça-feira." | doc_create com style: "letter" |
| "O que esta proposta.docx realmente diz?" | doc_read |
| "Preencha meu modelo de NDA com os dados deste cliente." | doc_fill_template |
| "Dê-me uma versão imprimível desse documento." | doc_to_html |
Exemplo prático
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
O arquivo abre no Word, Pages, LibreOffice e Google Docs: papel timbrado, título de capa, "Preparado para a Beta Corp",
Resumo, Escopo do trabalho, Entregas, uma tabela de Cronograma, uma tabela de Investimento com EUR 4,500.00, as condições
de pagamento e um bloco de assinatura para ambas as partes. Cada valor carrega seu código de moeda, sem números nus.
Gratuito vs Pro
| Gratuito | Pro | |
|---|---|---|
doc_create, doc_from_markdown, doc_read, doc_to_html | Ilimitado | Ilimitado |
proposal_create, contract_create | 3 por mês civil, combinados | Ilimitado |
doc_fill_template | Modelos com até 10 espaços reservados | Qualquer modelo |
| Rodapé | Carrega "Gerado com mcp-docx por theluckystrike" | Sem marca |
| Logotipo e cor do papel timbrado | Cor padrão, sem logotipo | Seu logo_path e brand_color |
| Tabelas, listas, layouts de carta e proposta, numeração de referência | Sim | Sim |
Pro é um pagamento único de $19, ou $39 para todos os servidores da coleção, vitalício.
Como o .docx é produzido e lido
Documentos são escritos com docx, um escritor OOXML puramente em JavaScript, sem módulo nativo, sem navegador headless, sem instalação de escritório.
Leitura e preenchimento de modelos não usam nenhuma dependência. Um .docx é um ZIP, então node:zlib o abre e uma pequena varredura de WordprocessingML extrai parágrafos, níveis de títulos (de w:pStyle), itens de lista e tabelas na ordem do documento. Listas numeradas são diferenciadas de marcadores resolvendo o w:numId de cada parágrafo contra word/numbering.xml, que é o único lugar onde essa distinção é registrada; sem isso, toda lista numerada é lida de volta como marcadores.
O preenchimento de modelos substitui no texto unido de cada parágrafo, não por execução. O Word rotineiramente quebra um espaço reservado que você digitou como {{client}} em três execuções ({{cli, ent}}, ...) após uma edição ou uma passagem de verificação ortográfica, e a substituição por execução perde esses silenciosamente; o documento volta com o espaço reservado ainda nele. O texto substituído vai para a primeira execução, mantendo sua formatação, e as execuções restantes desse parágrafo são esvaziadas. Cada outra parte do pacote é copiada byte por byte, então estilos, imagens, cabeçalhos, rodapés e configuração de seção sobrevivem. Um espaço reservado sem valor é deixado no lugar e relatado, nunca esvaziado.
Arquivos existentes nunca são sobrescritos
Toda ferramenta que escreve um arquivo (doc_create, doc_from_markdown, doc_to_html, doc_fill_template,
proposal_create, contract_create) recusa um out_path que já existe e informa você:
Error: /path/acme-proposal.docx already exists and nothing was written.
Pass overwrite: true to replace it, or give a different out_path.
O caminho é reservado com uma criação exclusiva, não uma verificação de existência, então dois processos escrevendo o mesmo
out_path ao mesmo tempo não podem se sobrescrever: um vence, o outro é recusado e não escreve nada.
Quando você não passa um out_path, o nome do arquivo é derivado do título, e um caminho derivado nunca
cai em um documento anterior: uma segunda proposta com o mesmo título é escrita como ...-2.docx. Para alterar
uma proposta que você já enviou, use proposal_update {reference}: ele reescreve o mesmo arquivo a partir dos
dados estruturados armazenados e mantém o número de referência.
A verificação ocorre antes de qualquer coisa ser construída ou escrita, então uma chamada recusada deixa o disco intocado e não queima
nenhum número de referência. Passe overwrite: true quando substituir o arquivo for o que você deseja.
Caracteres que o Word não pode carregar
O XML 1.0 permite TAB, LF e CR, mas nenhum outro código de controle. Toda string que chega a word/document.xml
é limpa primeiro: códigos de controle e pares substitutos não pareados são removidos, escapes literais \n tornam-se quebras
de parágrafo reais e espaços em branco soltos são colapsados. Quando algo é removido, a ferramenta diz isso em sua
resposta em vez de entregar um arquivo que o Word ofereceria para reparar.
Como armazena dados
O perfil de negócios, o registro de documentos e o contador de referências vivem em
${XDG_DATA_HOME:-~/.local/share}/mcp-servers/docx/ como JSON simples, mais uma subpasta documents/ contendo os
arquivos gerados quando você não passa out_path. Toda chamada mutável roda dentro de um bloqueio consultivo em
.../docx/.lock, então dois clientes em um diretório de dados não podem alocar o mesmo número de referência ou perder um
registro. Salvamentos vão para um arquivo temporário e são renomeados no lugar.
Se um desses arquivos JSON for ilegível ou não for JSON válido, ele nunca é tratado como "vazio". O arquivo é movido
para o lado byte por byte como <name>.json.corrupt-<timestamp>, um marcador <name>.json.corrupt é escrito, e toda
ferramenta retorna data file is corrupt; moved to ...; nothing was written até que você restaure uma cópia boa e exclua
o marcador.
Números de referência são PROP-YYYY-NNNN para propostas e AGR-YYYY-NNNN para acordos. O contador é escrito
antes do registro ser armazenado, então uma falha queima um número em vez de reutilizar um, e números existentes são verificados
para que um registro restaurado nunca possa devolver uma referência que já está em um documento enviado.
Limites e ressalvas honestas
- Sem saída em PDF. Use
doc_to_htmle imprima. Veja a seção acima para entender o motivo. doc_readlê apenas.docx. Arquivos legados.doc,.rtfe Pages são recusados com uma mensagem que informa isso.doc_readextrai a estrutura do texto: títulos, parágrafos, listas e tabelas. Ele não informa fontes, cores, comentários, alterações rastreadas, notas de rodapé ou imagens incorporadas.doc_fill_templatemantém a formatação da primeira execução para todo o parágrafo que reescreve. Um parágrafo que mistura texto em negrito e regular ao redor de um placeholder volta com a formatação da primeira execução.contract_createescreve um esqueleto de rascunho com[BRACKETED PLACEHOLDERS]e diz no próprio documento que é um modelo e não aconselhamento jurídico. Nada aqui foi revisado por um advogado em qualquer jurisdição.- O limite do plano gratuito de 3 conta propostas e contratos juntos, por mês calendário, e é reiniciado no dia 1º. Todo o resto permanece ilimitado quando ele fecha.
Privacidade
Todos os dados permanecem locais. O servidor lê e grava arquivos na sua máquina, armazena seu registro no diretório de dados e não faz nenhuma solicitação de rede de qualquer tipo, nem para licenciamento (as chaves são verificadas offline), nem para fontes, nem para telemetria.
Combina com
- mcp-invoice, mesmo formato de perfil
business_set; a proposta que você aceitou vira a fatura que você envia. - mcp-time-tracker, o prompt
write_proposal_from_hourstransforma horasinvoice_summaryem uma proposta com preço. - mcp-expense-tracker, faça uma cotação de projeto com os custos de repasse já contabilizados.
- office-suite, vários servidores em uma única instalação, uma entrada de configuração.
Solução de problemas
npxtrava ou não encontra o pacote: a publicação npm deste pacote está pendente. Use o pacote.mcpbou o caminho de clonar e compilar acima até que ele esteja disponível.- "Wrote ... .docx" mas o Word não abre: verifique se o caminho não está dentro de uma pasta sincronizada que ainda estava enviando. O arquivo está completo quando a ferramenta retorna; nada é gravado incrementalmente.
- Um placeholder não foi substituído: chame
doc_fill_templatesemvaluespara listar o que o modelo realmente contém. Os nomes são correspondidos exatamente, espaços em branco dentro de{{ }}são ignorados, e a resposta nomeia cada chave que você passou e que o modelo não possui. - O cabeçalho mostra "Your business": execute
business_setuma vez. Documentos nunca são bloqueados por um perfil ausente; a resposta diz que o bloco do remetente é um placeholder. - Sem logotipo no documento: o logotipo é um recurso Pro, e
logo_pathdeve existir e ser PNG, JPG ou GIF. - Versão do Node: requer Node >= 18. Verifique com
node -v.
Licenciado sob MIT. Suporte: support@zovo.one
Construído por theluckystrike.
Um perfil de negócios para toda a suíte
Sua identidade é armazenada uma vez, em ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json,
e cada servidor da suíte a lê: o emissor de faturas, o cabeçalho do docx, o emissor
recorrente, a taxa de IVA padrão do expense-tracker, o fuso horário padrão do time-tracker e do timezone, e os
cabeçalhos de currículo e contrato. Configure uma vez com business_set (invoice ou docx) - você nunca
repete em nenhum outro lugar. Um endereço de e-mail só é obtido desse perfil ou de um argumento
explícito; quando nenhum está armazenado, os documentos mostram [add: email] e a ferramenta informa isso em vez de
deixar alguém improvisar um endereço.
Perguntas frequentes
Existe um servidor MCP para documentos do Word (.docx)?
Sim. O servidor docx em mcp.zovo.one cria arquivos .docx a partir do Claude: documentos baseados em modelos, títulos, tabelas e formatação, geração em lote. Plano gratuito, endpoint hospedado ou instalação .mcpb com um clique.
Como crio um .docx a partir do Claude?
Conecte https://mcp.zovo.one/mcp/docx e descreva o documento — 'Crie um proposal.docx com estas três seções e uma tabela de preços.' O arquivo é gravado no seu diretório de armazenamento local.
Use estes documentos como um servidor MCP
Qualquer cliente MCP (Claude, Cursor, Windsurf, VS Code) pode ler a documentação deste repositório diretamente via GitMCP — sem instalação:
- URL do Docs MCP: https://gitmcp.io/theluckystrike/mcp-docx