job-search-mcp
Assistente de busca de empregos para Claude Desktop: pesquisa no LinkedIn + 8 plataformas ATS, pontua cada vaga de 0 a 100 por compatibilidade e exibe um quadro ranqueado para triagem.
Documentação
job-search-mcp
Um assistente pessoal de busca de empregos para Claude Desktop. Você pede ao Claude para encontrar empregos; ele pesquisa nos quadros de vagas reais, atribui a cada um uma nota de 0 a 100 de quão bem ele se encaixa em você, e os mostra em um quadro classificado que você pode triar com um clique. Tudo roda localmente — sem chaves de API, sem contas necessárias.
É um MCP App: um pequeno servidor com o qual o Claude Desktop conversa, além de um quadro embutido que renderiza direto no chat.
Escopo: é ajustado para vagas de engenharia de software nos EUA (as fontes integradas e os filtros de função visam empregadores de tecnologia dos EUA). Outras áreas ou regiões retornarão resultados escassos.
Funciona em: construído e testado para Claude Desktop. Também deve funcionar em outros clientes MCP que executem um servidor local (stdio) e renderizem UIs de MCP Apps, como VS Code (Copilot), Cursor ou Goose (não testado). Clientes somente remotos (ChatGPT, Claude na web/mobile) não conseguem iniciar um servidor local, então não funcionarão.

O que ele faz
- Pesquisa em quadros de vagas reais — LinkedIn mais 8 fontes de ATS/vagas (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Hacker News, RemoteOK, Remotive), usando suas funções-alvo e localização.
- Atribui nota a cada vaga para você — o Claude lê a descrição completa e dá uma nota de adequação de 0 a 100 com um motivo em uma linha, ponderando suas habilidades, anos de experiência, adequação de senioridade e a função.
- Permite triagem rápida — Candidatar-se / Pular em cada cartão, ou em massa ("dispensar tudo abaixo de 60").
- Lembra — mantém uma lista de selecionados em andamento, um rastreador do que você se candidatou e não mostrará a mesma vaga duas vezes (por 6 meses).
Configuração
1. Informe o Claude Desktop sobre ele. Abra seu arquivo de configuração:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Adicione isto em "mcpServers" — npx busca o pacote publicado
para você, sem necessidade de clonar ou compilar:
{
"mcpServers": {
"job-search": {
"command": "npx",
"args": ["-y", "@servation/job-search-mcp"]
}
}
}
2. Saia completamente e reabra o Claude Desktop (no Windows, saia pela bandeja do sistema — fechar a janela não é suficiente). É só isso.
Executando a partir do código-fonte
npm install
npm run build
Em seguida, aponte a configuração para o dist/main.js desta pasta:
{
"mcpServers": {
"job-search": {
"command": "node",
"args": ["D:\\job-search-mcp\\dist\\main.js"]
}
}
}
Como usar
Basta conversar com o Claude. Por exemplo:
- "Salvar meu perfil" — cole seu currículo primeiro; o Claude extrai suas habilidades, funções, anos e localização para que buscas e pontuações sejam personalizadas para você.
- "Encontrar vagas de engenheiro backend na Califórnia, nível sênior, publicadas esta semana."
- "Encontrar vagas com poucos candidatos" — adiciona o filtro de candidatos iniciais do LinkedIn.
- "Dispensar tudo abaixo de 60."
- "Mostrar o que eu me candidatei."
- "Reavaliar o quadro."
Um primeiro uso típico: salve seu perfil → "encontrar vagas" → o Claude pontua e mostra o quadro classificado → você se candidata/pula.
O quadro
O quadro é uma lista de selecionados em andamento. Uma vaga permanece nele até você se candidatar (vai para seu rastreador) ou pular (oculta para sempre). Novas buscas automaticamente pulam vagas já no quadro, no seu rastreador, dispensadas ou mostradas nos últimos 6 meses — para que você nunca veja a mesma listagem duas vezes seguidas.
Clique em Candidatar-se ou Pular em um cartão, ou peça ao Claude para fazer isso. Triado no widget, fica salvo.
Ferramentas (para referência)
Você raramente as chama pelo nome — o Claude escolhe a certa — mas aqui está o que existe por baixo dos panos:
| Ferramenta | O que ela faz |
|---|---|
find_jobs | Pesquisar nos quadros por suas funções/localização (com filtros opcionais: senioridade, tipo, recência, remoto, salário, candidatos, fonte). |
evaluate_jobs | O Claude pontua as vagas encontradas de 0 a 100 por adequação (executa automaticamente após uma busca). |
show_board | Exibir o quadro classificado (ou seu rastreador saved). |
set_status | Candidatar-se / Pular / salvar uma única vaga (também os botões do cartão). |
bulk_status | Triar várias de uma vez por pontuação ou fonte, ex.: dispensar tudo abaixo de 60. |
whats_promising | Listar o quadro atual como texto (todas as vagas pontuadas + qualquer uma ainda sem pontuação). |
review_saved | Seu rastreador — vagas que você salvou ou às quais se candidatou. |
rescore_board | Reavaliar cada vaga no quadro do zero. |
clear_jobs | Organizar: limpar sobras sem pontuação ou o quadro inteiro (nunca toca em candidaturas/dispensadas). |
save_profile | Salvar seu perfil de currículo (orienta busca + pontuação). |
Onde seus dados ficam
Um único arquivo JSON na sua máquina — sem nuvem, nada é enviado a lugar algum exceto aos quadros de vagas que você pesquisa:
- Instalado:
~/.job-search-mcp/jobs.json - Executando a partir do código-fonte:
./data/jobs.json - Substitua com a variável de ambiente
JOB_SEARCH_MCP_DATA.
Opcional: Modo Premium do LinkedIn
Por padrão, o LinkedIn usa seus endpoints públicos de convidado: sem login e sem risco de login de conta, e você
já recebe descrições completas das vagas. Observe que o acesso automatizado ainda roda a partir do seu próprio IP e é contra
o Contrato do Usuário do LinkedIn mesmo no modo convidado, então use por sua conta e risco. Se quiser dados mais ricos/Premium,
você pode usar sua conta logada adicionando um bloco env à configuração do servidor:
"job-search": {
"command": "npx",
"args": ["-y", "@servation/job-search-mcp"],
"env": {
"LINKEDIN_LI_AT": "<your li_at cookie>",
"LINKEDIN_JSESSIONID": "ajax:1234567890123456789"
}
}
Obtenha ambos os cookies de uma aba linkedin.com logada → DevTools → Application → Cookies.
⚠️ Atenção: isso viola os Termos de Serviço do LinkedIn e pode fazer sua conta ser sinalizada ou restrita. Os cookies também expiram aproximadamente mensalmente e os endpoints internos do LinkedIn mudam sem aviso. Se algo falhar, ele volta automaticamente para o modo convidado. Deixe o bloco
envde fora para permanecer totalmente seguro (somente convidado).
Como a pontuação funciona
O Claude (o modelo host) faz a pontuação diretamente — ele lê cada descrição e julga a adequação, o que é
bem calibrado. Uma fórmula determinística (computeMatchScore em scoring.ts) é mantida como fallback para
quem executa um modelo local mais fraco que tende a superclassificar tudo; não está ativa por padrão.
Desenvolvimento
npm run typecheck # type-check UI + server + harness
npm run build # build the UI bundle (vite single-file) + compile the server (tsc)
npm run serve:stdio # run the server from source (tsx) for local testing
npm run harness # work on the review UI without Claude Desktop (see harness/)
npm run canary # check every job source is still returning postings
O servidor é somente stdio (main.ts → server.ts); a UI é um aplicativo React empacotado em um único arquivo HTML
embutido (src/mcp-app.tsx → dist/mcp-app.html) que o servidor serve como um recurso ui://.
Trabalhando na UI, use harness/. É um substituto local para o Claude Desktop que renderiza
o widget contra um armazenamento de vagas sintético e uma ponte ui/* real. Abrir dist/mcp-app.html em uma
aba do navegador apenas mostra "Conectando…", e as coisas com maior probabilidade de quebrar (abrir links, temas,
a atualização pós-montagem) são todas mediadas pelo host, então só aparecem com um host na outra ponta.
Se uma fonte de vagas ficar indisponível, npm run canary informa qual. Slugs de empresas apodrecem com frequência, então a correção
geralmente pertence ao registro remoto de slugs que updateCompanyDirectoriesFromRegistry() relê em
tempo de execução, em vez de um novo lançamento.