MCP Refchecker

Um servidor MCP leve que encapsula o academic-refchecker, permitindo que o Claude verifique citações acadêmicas em tempo real contra Semantic Scholar, OpenAlex e CrossRef.

Documentação

mcp-refchecker

PyPI

Um servidor MCP que permite ao Claude verificar citações acadêmicas em tempo real contra Semantic Scholar, OpenAlex e Crossref — detectando referências alucinadas ou incorretas antes que elas cheguem ao seu trabalho.

Construído sobre academic-refchecker (MIT).

Ferramenta

verify_citation — verifica se um artigo citado existe e se seus metadados (título, autores, ano, veículo) correspondem ao que foi citado.

ParâmetroTipoObrigatórioDescrição
titlestringsimTítulo do artigo citado
authorsstring[]nãoLista de nomes dos autores
yearintegernãoAno de publicação
doistringnãoDOI (ex.: 10.1145/12345)
arxiv_idstringnãoID arXiv (ex.: 2301.00001)
urlstringnãoURL direta para o artigo

Retorna JSON:

{
  "verified": true,
  "url": "https://...",
  "matched_paper": {
    "title": "...",
    "authors": [...],
    "year": 2023,
    "venue": "..."
  },
  "possible_match": null,
  "errors": null,
  "warnings": null,
  "info": null
}

Campos de resultado

  • verifiedtrue se o artigo foi encontrado e todos os metadados fornecidos (ano, autores, veículo) correspondem. false se houver um conflito real de metadados ou se o artigo não puder ser encontrado.
  • matched_paper — os metadados autoritativos da fonte de verificação.
  • possible_match — uma correspondência de fallback do Crossref quando o título exato não foi encontrado, mas uma variante próxima foi (veja "Fallback difuso" abaixo).
  • errors — erros graves que bloqueiam a verificação (ano errado, autores errados, artigo não encontrado).
  • warnings — avisos leves que não bloqueiam a verificação (diferenças entre arXiv v1 e v2, preprint arXiv vs veículo publicado, metadados de entrada incompletos).
  • info — sugestões informativas (ex.: "a referência poderia incluir a URL do arXiv").

O que conta como erro vs aviso

academic-refchecker retorna uma lista plana de problemas com alguma inconsistência (discrepâncias de ano são marcadas como avisos, enquanto discrepâncias de autor são marcadas como erros). Este wrapper normaliza a saída:

  • Promovidos a erros graves: discrepâncias simples de year/author/venue onde os metadados citados realmente diferem da realidade. Eles bloqueiam verified.
  • Rebaixados para avisos: erros de "campo ausente" quando o artigo foi encontrado, mas o usuário não forneceu esse campo em primeiro lugar. Metadados de entrada ausentes não são evidência de uma citação alucinada.
  • Mantidos como avisos: diferenças de versão do arXiv (v1 vs v2), notas de preprint vs veículo publicado.

Fallback difuso e suas limitações

Quando academic-refchecker relata que um artigo não pôde ser verificado, este wrapper faz uma consulta secundária ao Crossref usando correspondência difusa de título e fuzzywuzzy.ratio. Se um candidato com similaridade ≥ 85% for encontrado, ele é retornado como possible_match com um aviso.

O que o fallback difuso captura:

  • Variações estilísticas de título (diferenças de maiúsculas, pontuação, ordem das palavras)
  • Pequenas reformulações
  • Títulos onde a comparação estrita do refchecker rejeitou uma correspondência que, de outra forma, seria válida

O que o fallback difuso NÃO captura:

  • Erros de digitação reais em palavras distintivas do título (ex.: "Atention Is All You Need")
  • Títulos severamente distorcidos

Esta é uma limitação fundamental das APIs gratuitas de busca acadêmica. Crossref, OpenAlex e Semantic Scholar fazem busca baseada em palavras-chave/tokens — assim que uma palavra distintiva é escrita incorretamente, ela simplesmente não está no índice de busca, e o artigo real não aparecerá nos resultados, independentemente de como você os pós-processa. Capturar erros de digitação reais exigiria embeddings semânticos de uma API paga (OpenAI, Voyage, etc.) ou um mecanismo de busca difusa de texto completo, nenhum dos quais é exposto por fontes de dados acadêmicos gratuitas.

Se você suspeitar de um erro de digitação, mas verify_citation retornar não verificado, a melhor solução é reescrever o título na forma mais canônica que puder e tentar novamente.

Instalação e configuração

Recomendado: uvx (sem etapa de instalação)

Se você tiver o uv instalado, nenhuma instalação separada é necessária. Adicione diretamente ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "refchecker": {
      "command": "uvx",
      "args": ["mcp-refchecker"]
    }
  }
}

uvx baixa e executa o pacote em um ambiente isolado automaticamente. Reinicie o Claude Desktop após salvar a configuração.

Alternativa: pip

pip install mcp-refchecker

Em seguida, adicione ao claude_desktop_config.json:

{
  "mcpServers": {
    "refchecker": {
      "command": "mcp-refchecker"
    }
  }
}

A partir do código-fonte

git clone https://github.com/JonasBaath/mcp-refchecker
cd mcp-refchecker
pip install .

Variáveis de ambiente opcionais

  • SEMANTIC_SCHOLAR_API_KEYsolicite um aqui para limites de taxa mais altos no caminho de verificação primário do refchecker.
  • CROSSREF_MAILTO — seu e-mail de contato, usado para optar pelo polite pool do Crossref para acesso mais confiável ao fallback difuso.
  • MCP_REFCHECKER_DEBUG — defina para qualquer valor não vazio para imprimir logs de depuração do caminho de fallback difuso no stderr.

Exemplo com todas as configurações opcionais (uvx):

{
  "mcpServers": {
    "refchecker": {
      "command": "uvx",
      "args": ["mcp-refchecker"],
      "env": {
        "SEMANTIC_SCHOLAR_API_KEY": "your-key-here",
        "CROSSREF_MAILTO": "you@example.com"
      }
    }
  }
}

Licença

MIT — © Jonas Bååth. Construído sobre academic-refchecker (MIT).