vagas-mcp: o Claude organizando uma busca de emprego

Sessão real com o servidor MCP rodando por stdio, como no Claude Desktop. As chamadas e as respostas abaixo foram geradas pelo servidor no CI; as falas são ilustrativas e as empresas, fictícias. Código: github.com/arthurpenedo/vagas-mcp

O que o servidor oferece (vagas-mcp 0.2.0)

Ferramentas

registrar_vagalistar_vagasatualizar_statussalvar_descricaoresumo_do_funilvagas_paradasanalisar_aderenciasincronizar_notion

Resource e prompt

vagas://relatorio-semanalrevisao_semanal

Funil da busca

aplicada
8
entrevista
3
teste técnico
1
oferta
0

aplicada → entrevista: 38% · entrevista → teste técnico: 33% · teste técnico → oferta: 0%. Conta quem alcançou cada etapa pelo histórico: uma vaga recusada depois da entrevista conta como entrevista.

A conversa

Achei uma vaga de Analista de IA Jr na Estrela Tech, remota, pela Gupy. Guarda pra mim com a descrição.

→ registrar_vaga(empresa="Estrela Tech", cargo="Analista de IA Jr", plataforma="Gupy", modelo="remoto", link="https://exemplo.com/vaga/8", descricao="Analista de IA Júnior\nRequisitos:\n- Python e SQL\n- Experi…")
{
  "id": 8,
  "empresa": "Estrela Tech",
  "cargo": "Analista de IA Jr",
  "link": "https://exemplo.com/vaga/8",
  "plataforma": "Gupy",
  "modelo": "remoto",
  "nivel": null,
  "status": "encontrada",
  "data_status": "2026-10-08",
  "notas": "",
  "descricao": "Analista de IA Júnior\nRequisitos:\n- Python e SQL\n- Experiência com LLMs e engenharia de prompt\n- Git\nDiferenciais:\n- AWS\n- Docker"
}

Quão aderente meu currículo está a essa vaga?

→ analisar_aderencia(vaga_id=8, curriculo_arquivo="curriculo.md")
{
  "vaga": "Analista de IA Jr · Estrela Tech",
  "score": 87,
  "required_skills": [
    "Git",
    "LLMs",
    "Prompt engineering",
    "Python",
    "SQL"
  ],
  "desired_skills": [
    "AWS",
    "Docker"
  ],
  "matched_required": [
    "Git",
    "LLMs",
    "Prompt engineering",
    "Python",
    "SQL"
  ],
  "matched_desired": [
    "AWS"
  ],
  "missing_required": [],
  "missing_desired": [
    "Docker"
  ],
  "keyword_coverage": 0.73,
  "missing_keywords": [
    "analista",
    "junior",
    "docker"
  ],
  "tips": [
    "Use layout de coluna única e títulos padrão (Experiência, Formação, Habilidades) para o parser do ATS."
  ]
}

Beleza, apliquei.

→ atualizar_status(vaga_id=8, status="aplicada", nota="Enviado pela Gupy")
{
  "id": 8,
  "empresa": "Estrela Tech",
  "cargo": "Analista de IA Jr",
  "link": "https://exemplo.com/vaga/8",
  "plataforma": "Gupy",
  "modelo": "remoto",
  "nivel": null,
  "status": "aplicada",
  "data_status": "2026-10-08",
  "notas": "[2026-10-08] Enviado pela Gupy",
  "descricao": "Analista de IA Júnior\nRequisitos:\n- Python e SQL\n- Experiência com LLMs e engenharia de prompt\n- Git\nDiferenciais:\n- AWS\n- Docker"
}

Registra de novo aquela da Estrela Tech.

→ registrar_vaga(empresa="Estrela Tech", cargo="Analista de IA Jr", link="https://exemplo.com/vaga/8")
is_error: a mensagem volta para o Claude, que pode corrigir o pedido
Error executing tool registrar_vaga: Já existe uma vaga com este link (id 8).

Como está meu funil?

→ resumo_do_funil()
{
  "total": 8,
  "por_status": {
    "aplicada": 5,
    "entrevista": 1,
    "recusada": 1,
    "teste_tecnico": 1
  },
  "alcancaram": {
    "aplicada": 8,
    "entrevista": 3,
    "teste_tecnico": 1,
    "oferta": 0
  },
  "conversao": {
    "aplicada->entrevista": 0.375,
    "entrevista->teste_tecnico": 0.333,
    "teste_tecnico->oferta": 0.0
  }
}

Quem eu preciso cobrar?

→ vagas_paradas(dias=10)
{
  "id": 4,
  "empresa": "Vértice Saúde",
  "cargo": "Engenheiro de Prompt",
  "link": "https://exemplo.com/vaga/4",
  "plataforma": "site próprio",
  "modelo": "remoto",
  "nivel": "Júnior",
  "status": "aplicada",
  "data_status": "2026-09-25",
  "notas": "",
  "descricao": ""
}

Resource vagas://relatorio-semanal

# Busca de emprego: semana de 2026-10-02 a 2026-10-08

**9 movimentações** na semana, 8 vagas no total.

## O que andou
- 2026-10-02: Acme Pagamentos (Analista de IA Jr) → teste_tecnico
- 2026-10-03: Nuvem Clara (Assistente de IA Generativa) → encontrada
- 2026-10-04: Nuvem Clara (Assistente de IA Generativa) → aplicada
- 2026-10-05: Orbital Seguros (Analista de Automação) → recusada
- 2026-10-05: Banco Exemplo (Analista de Atendimento e IA) → encontrada
- 2026-10-06: Loja Modelo (Analista de Dados) → entrevista
- 2026-10-06: Banco Exemplo (Analista de Atendimento e IA) → aplicada
- 2026-10-08: Estrela Tech (Analista de IA Jr) → encontrada
- 2026-10-08: Estrela Tech (Analista de IA Jr) → aplicada

## Funil (vagas que alcançaram cada etapa)
- aplicada: 8
- entrevista: 3
- teste_tecnico: 1
- oferta: 0
- conversão: aplicada->entrevista: 38%, entrevista->teste_tecnico: 33%, teste_tecnico->oferta: 0%

## Follow-ups pendentes (aplicadas há 10+ dias sem resposta)
- Vértice Saúde (Engenheiro de Prompt), aplicada em 2026-09-25
- Pixel Varejo (Cientista de Dados Jr), aplicada em 2026-09-22