Zovo Resume MCP Server

Crie e personalize currículos e CVs a partir de arquivos locais com seções estruturadas. Servidor MCP offline-first, camada gratuita, sem cadastro.

Documentação

mcp-resume

Armazene os fatos do seu currículo uma única vez. Depois diga "adapte meu currículo para esta vaga e escreva a carta de apresentação" e receba dois arquivos .docx reais: um currículo cujos tópicos são reordenados por relevância para a vaga, ajustados para caber na contagem de páginas que você solicitou, com as palavras-chave da vaga em negrito onde você realmente as possui, e uma carta de apresentação de uma página que não afirma nada que você não tenha colocado no seu perfil. Quando um fato estiver ausente, a carta deixa um prompt entre colchetes como [add: metric] em vez de inventar um número. Ela também lê um currículo existente .docx de volta para o formato de perfil, exporta markdown para uma caixa de ATS e escreve HTML imprimível. Tudo roda localmente: sem upload, sem conta, sem dependência nativa.

No Registro Oficial de MCP (io.github.theluckystrike/resume-cover-letter-docx-generator).

Listado no Índice de Produtos de IA — endpoint remoto ativo em mcp.zovo.one/s/resume, camada gratuita, sem cadastro.

resume demo

Instalação em 60 segundos

A publicação no npm para @theluckystrike/mcp-resume está pendente. Até lá, o pacote de um clique .mcpb ou um clone + build é o caminho funcional, ambos verificados abaixo.

Um clique (.mcpb): baixe resume.mcpb do último lançamento e clique duas vezes no 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"]
    }
  }
}

O formulário npx acima começa a funcionar no momento em que o pacote for 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 -w servers/resume

Em seguida, aponte o command do seu cliente para node com um argumento: o caminho absoluto para servers/resume/dist/index.js. servers/docx está nessa lista de build porque este servidor compartilha o mecanismo de documentos com mcp-docx em vez de carregar uma segunda cópia dele.

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

FerramentaO que faz
profile_setArmazena os fatos a partir dos quais cada saída é construída: nome, e-mail, telefone, localização, links, resumo, habilidades, cargos com tópicos, educação, certificações, idiomas. Um perfil por diretório de dados; Pro adiciona variantes nomeadas
profile_getRetorna o perfil armazenado como JSON, exatamente como as outras ferramentas o veem
resume_createEscreve o currículo como .docx. Os tópicos são classificados por correspondências de palavras-chave e recência, depois ajustados para max_pages contra um orçamento de palavras medido; palavras-chave correspondentes são colocadas em negrito, as ausentes são relatadas e nunca adicionadas. Estilos: modern, classic, compact
cover_letter_createUma carta de uma página em quatro partes — abertura, adequação, prova, encerramento — extraída apenas do perfil. Tons: formal, direct, warm. Desconhecidos retornam como prompts [add: ...]
tailor_to_jobAnálise de lacunas em relação a uma vaga: as palavras-chave que ela realmente pede, quais delas seu perfil já cobre, quais não cobre, um índice de cobertura e reescritas que apenas reordenam fatos que você já declarou
resume_readLê um currículo existente .docx de volta para o formato de perfil, seção por título. Melhor esforço; nada é salvo a menos que save: true
resume_to_markdownO currículo como markdown, para um formulário de inscrição ou uma caixa de ATS
resume_to_htmlHTML imprimível com uma folha de estilos de impressão. Abra e imprima em PDF
license_statusMostra o modo gratuito ou Pro
license_activateAtiva uma chave Pro (verificada offline)

Recurso: resume://profile retorna o perfil armazenado como JSON. Prompt: apply_to_job encadeia tailor_to_job, resume_create e cover_letter_create contra uma vaga, e faz o modelo relatar as lacunas de volta para você em vez de preenchê-las.

A carta de apresentação não inventa fatos

Esta é a parte que importa, então é aplicada em vez de solicitada:

  • Cada linha de prova na carta é um tópico verbatim do seu perfil. A carta nunca parafraseia um tópico em uma afirmação mais forte.
  • Uma entrada highlights que você passa é verificada contra o perfil primeiro. Se o perfil não a suportar, ela é impressa como [add: "..." is not in your profile - add it there or drop it], não como uma afirmação.
  • Antes de o arquivo ser escrito, cada sequência de dígitos na carta é verificada contra seu perfil e os argumentos que você passou. Um número que não remonta a nenhum dos dois é uma recusa, não um aviso; a ferramenta retorna um erro e não escreve nada. A descrição da vaga é deliberadamente não uma fonte permitida: os números de receita, quadro de funcionários e produtividade do empregador são deles, e a carta nunca reafirmará um deles como seu. A comparação é em números inteiros, então um perfil contendo 2012 não autoriza uma carta que afirma 12.
  • Cada tópico de prova é impresso sob o cargo ao qual realmente pertence. Uma carta que cita trabalho de dois empregadores imprime dois cabeçalhos; trabalho de um emprego anterior nunca é listado sob o atual.
  • Um tópico sem número recebe [add: metric] anexado, então a carta pede o resultado em vez de adivinhar um.
  • Palavras-chave ausentes de tailor_to_job nunca se tornam habilidades. A resposta diz isso em palavras simples.

O que você pode dizer

Você dizFerramenta
"Aqui está meu CV: Ada Rowe, engenheira de backend, Acme Pay desde 2021, ..."profile_set
"Leia meu currículo antigo em ~/Documents/cv.docx e configure meu perfil."resume_read
"Quão bem eu correspondo a esta vaga?"tailor_to_job
"Faça um currículo de uma página para esta vaga de Engenheiro Sênior."resume_create
"Escreva a carta de apresentação para a Zeta Systems, tom direto."cover_letter_create
"Me dê a versão em texto simples para o formulário de inscrição."resume_to_markdown
"Preciso de um PDF para anexar."resume_to_html, depois imprima em PDF
"Candidate-me a esta vaga."o prompt apply_to_job

Exemplo prático

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

Como funciona o ajuste de páginas

Não há mecanismo de layout de página em JavaScript puro, então este servidor não finge medir um. Ele usa um orçamento de palavras em vez disso: uma página A4 completa em Calibri 11pt com margens de 2cm comporta cerca de 520 palavras de texto do corpo, e um currículo gasta aproximadamente um sétimo dessa página em cabeçalhos, linhas em branco e o bloco de contato. O número líquido é 450 palavras por página (540 para o estilo compact). O bloco de contato, resumo, habilidades, cabeçalhos de cargos, educação, certificações e idiomas são contados primeiro; o orçamento restante vai para os tópicos de experiência, maior pontuação primeiro. Cada cargo mantém seu primeiro tópico antes de qualquer cargo receber um segundo, então o ajuste nunca deixa um emprego na página sem nada sob ele. A resposta relata o orçamento, as palavras usadas, a contagem estimada de páginas e cada tópico descartado, para que você veja a decisão em vez de descobri-la no Word.

A recência faz parte dessa pontuação, e é lida da ordem do array, não do texto start/end. profile_set aplica a ordenação que torna isso seguro: não importa como você liste os cargos ao chamá-la, o perfil armazenado sempre termina do mais recente para o mais antigo, um cargo aberto sem end primeiro, depois por end decrescente, depois por start decrescente. Insira os cargos em qualquer ordem; a ordem armazenada (e a classificação dos tópicos da carta de apresentação em cover_letter_create) está sempre correta.

Gratuito vs Pro

GratuitoPro ($19 pagamento único)
Perfil, resume_create, resume_to_markdown, resume_to_htmlSim, ilimitadoSim, ilimitado
Estilos de currículomodernmodern, classic, compact
Cartas de apresentação3 por mês civilIlimitadas
tailor_to_jobVagas de até 2.000 caracteresQualquer tamanho
Variantes de perfilUm perfilVariantes nomeadas (backend, management, ...)
Cor do cabeçalhoPadrãoSeu próprio accent_color
Crédito no rodapé"Gerado com mcp-docx por theluckystrike"Removido

Obtenha o Pro: https://mcp.zovo.one/buy/resume ($19 pagamento único, ou $39 pelo pacote completo).

Privacidade

Todos os dados permanecem locais. Seu CV nunca sai da máquina: o servidor lê e escreve arquivos no seu computador, armazena o perfil sob seu diretório de dados e não faz nenhuma requisição de rede de qualquer tipo, nem para licenciamento (chaves são verificadas offline), nem para fontes, nem para telemetria.

Combina com

  • mcp-docx, este servidor importa seu mecanismo de documentos (@theluckystrike/mcp-docx/lib); instale o docx também quando quiser propostas, contratos e markdown-para-Word.
  • office-suite, vários servidores em uma única instalação, uma entrada de configuração.

Solução de problemas

  • npx trava ou não encontra o pacote: a publicação no npm para este pacote está pendente. Use o pacote .mcpb ou o caminho de clone e build acima até que seja publicado.
  • "nenhum perfil armazenado": execute profile_set uma vez, ou resume_read {path, save: true} a partir de um currículo existente.
  • O currículo descartou um tópico que eu queria: aumente max_pages, ou passe as palavras da vaga em keywords para que o tópico supere os outros. bullets_dropped na resposta nomeia cada um que não coube.
  • Nomes curtos de habilidades: tailor_to_job mantém habilidades de dois e um caractere, Go, C, R, C#, C++, F#, Qt, UI, UX, QA, ML, AI, AR, VR, JS, TS, K8s, AWS, GCP, SQL, iOS, além de qualquer palavra curta que apareça na sua própria lista skills, e classifica uma habilidade conhecida acima de uma palavra mais longa da mesma frequência.
  • Uma palavra-chave que tenho é relatada como ausente: a correspondência é em limites de palavras, então go não corresponde a Google e k8s não corresponde a Kubernetes. Adicione a palavra exata às suas habilidades se for verdade.
  • resume_read colocou um cargo em unparsed: currículos não têm esquema. Nada é descartado silenciosamente; corrija os campos e passe-os para profile_set.
  • Não há resume_to_pdf: toda rota em JavaScript puro de Word para PDF precisa de uma dependência nativa ou de uma API em nuvem. resume_to_html escreve HTML semântico com uma folha de estilos de impressão; imprima isso em PDF.
  • 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, a zona doméstica 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 diz isso em vez de deixar alguém improvisar um endereço.