Scientific Paper Harvester

Coleta artigos científicos do arXiv e OpenAlex, fornecendo acesso em tempo real a metadados e texto completo.

Documentação

Servidor MCP Scientific Paper Harvester

Um servidor abrangente do Model Context Protocol (MCP) que fornece aos LLMs acesso em tempo real a artigos científicos de 6 principais fontes acadêmicas: arXiv, OpenAlex, PMC (PubMed Central), Europe PMC, bioRxiv/medRxiv e CORE.

🚀 Recursos

Cobertura Abrangente de Fontes

  • arXiv: Pré-impressões e artigos de ciência da computação, física e matemática
  • OpenAlex: Catálogo aberto de artigos acadêmicos com dados de citações
  • PMC: Literatura biomédica e de ciências da vida do PubMed Central
  • Europe PMC: Banco de dados de literatura das ciências da vida europeia
  • bioRxiv/medRxiv: Servidores de pré-impressão de biologia e medicina
  • CORE: Maior coleção mundial de artigos de pesquisa de acesso aberto

Recursos Avançados

  • Busca de Artigos: Obtenha os artigos mais recentes de qualquer fonte por categoria/conceito
  • Pesquisa de Artigos: Pesquise artigos por título, resumo, autor ou texto completo em 4 fontes principais
  • Extração de Texto Completo: Extraia conteúdo textual completo com estratégias inteligentes de fallback
  • Análise de Citações: Encontre os artigos mais citados do OpenAlex desde uma data específica
  • Consulta de Artigos: Recupere metadados completos de artigos específicos por ID
  • Descoberta de Categorias: Navegue pelas categorias disponíveis de todas as fontes
  • Limitação Inteligente de Taxa: Uso respeitoso da API com limitação de taxa por fonte
  • Resolução de DOI: Resolvedor avançado de DOI com fallback Unpaywall → Crossref → Semantic Scholar
  • Interface Dupla: Acesso tanto pelo protocolo MCP quanto pela CLI
  • TypeScript: Segurança total de tipos com módulos ESM

📊 Estatísticas de Cobertura

  • Total de Fontes: 6 bancos de dados acadêmicos
  • Cobertura de Categorias: Mais de 100 categorias em todas as disciplinas
  • Acesso a Artigos: Mais de 200 milhões de artigos com extração inteligente de texto
  • Sucesso na Extração de Texto: >90% para os tipos de artigos suportados
  • Tempo de Resposta: Média de <15 segundos para busca de artigos

🛠 Instalação

npm install
npm run build

📋 Configuração do Cliente MCP

Para usar este servidor com um cliente MCP (como o Claude Desktop), adicione o seguinte à configuração do seu cliente MCP:

Para pacote publicado (disponível no npm):

Opção 1: Usando npx (recomendado para ferramentas de IA como Claude)

{
  "mcpServers": {
    "scientific-papers": {
      "command": "npx",
      "args": [
        "-y",
        "@futurelab-studio/latest-science-mcp@latest"
      ]
    }
  }
}

Opção 2: Instalação global

npm install -g @futurelab-studio/latest-science-mcp

Em seguida, configure:

{
  "mcpServers": {
    "scientific-papers": {
      "command": "latest-science-mcp"
    }
  }
}

📖 Uso

Interface CLI

Listar Categorias

# List arXiv categories
node dist/cli.js list-categories --source=arxiv

# List OpenAlex concepts
node dist/cli.js list-categories --source=openalex

# List PMC biomedical categories
node dist/cli.js list-categories --source=pmc

# List Europe PMC life science categories
node dist/cli.js list-categories --source=europepmc

# List bioRxiv/medRxiv categories (includes both servers)
node dist/cli.js list-categories --source=biorxiv

# List CORE academic categories
node dist/cli.js list-categories --source=core

Buscar Artigos Mais Recentes

# Get latest AI papers from arXiv
node dist/cli.js fetch-latest --source=arxiv --category=cs.AI --count=10

# Get latest biology papers from bioRxiv
node dist/cli.js fetch-latest --source=biorxiv --category="biorxiv:biology" --count=5

# Get latest immunology papers from PMC
node dist/cli.js fetch-latest --source=pmc --category=immunology --count=3

# Get latest papers from CORE by subject
node dist/cli.js fetch-latest --source=core --category=computer_science --count=5

# Search by concept name (OpenAlex)
node dist/cli.js fetch-latest --source=openalex --category="machine learning" --count=3

Buscar Artigos Mais Citados

# Get top 20 cited papers in machine learning since 2024
node dist/cli.js fetch-top-cited --concept="machine learning" --since=2024-01-01 --count=20

# Get top cited papers by concept ID
node dist/cli.js fetch-top-cited --concept=C41008148 --since=2023-06-01 --count=10

Pesquisar Artigos

# Search by keywords across all fields
node dist/cli.js search-papers --source=arxiv --query="machine learning" --count=10

# Search by paper title
node dist/cli.js search-papers --source=openalex --query="neural networks" --field=title --count=5

# Search by author name
node dist/cli.js search-papers --source=europepmc --query="John Smith" --field=author --count=10

# Search full-text content sorted by citations
node dist/cli.js search-papers --source=core --query="climate change" --field=fulltext --sortBy=citations --count=20

Buscar Conteúdo de Artigo Específico

# Get arXiv paper by ID
node dist/cli.js fetch-content --source=arxiv --id=2401.12345

# Get bioRxiv paper by DOI
node dist/cli.js fetch-content --source=biorxiv --id="10.1101/2021.01.01.425001"

# Get PMC paper by ID
node dist/cli.js fetch-content --source=pmc --id=PMC8245678

# Get CORE paper by ID
node dist/cli.js fetch-content --source=core --id=12345678

# Show text content with preview
node dist/cli.js fetch-content --source=arxiv --id=2401.12345 --show-text --text-preview=500

🔧 Ferramentas Disponíveis

list_categories

Lista as categorias/conceitos disponíveis de qualquer fonte de dados.

Parâmetros:

  • source: "arxiv" | "openalex" | "pmc" | "europepmc" | "biorxiv" | "core"

Retorna:

  • Matriz de objetos de categoria com id, name e description opcional

Exemplos:

{
  "name": "list_categories",
  "arguments": {
    "source": "biorxiv"
  }
}

fetch_latest

Busca os artigos mais recentes de qualquer fonte para uma determinada categoria com apenas metadados (sem extração de texto).

Parâmetros:

  • source: "arxiv" | "openalex" | "pmc" | "europepmc" | "biorxiv" | "core"
  • category: ID da categoria ou nome do conceito (varia conforme a fonte)
  • count: Número de artigos a buscar (padrão: 50, máximo: 200)

Exemplos de Categorias por Fonte:

  • arXiv: "cs.AI", "physics.gen-ph", "math.CO"
  • OpenAlex: "artificial intelligence", "machine learning", "C41008148"
  • PMC: "immunology", "genetics", "neuroscience"
  • Europe PMC: "biology", "medicine", "cancer"
  • bioRxiv/medRxiv: "biorxiv:neuroscience", "medrxiv:psychiatry"
  • CORE: "computer_science", "mathematics", "physics"

Retorna:

  • Matriz de objetos de artigo com metadados (id, título, autores, data, pdf_url)
  • Campo de texto: String vazia (text: "") - use fetch_content para texto completo

fetch_top_cited

Busca os artigos mais citados do OpenAlex para um determinado conceito desde uma data específica.

Parâmetros:

  • concept: Nome do conceito ou ID do conceito no OpenAlex
  • since: Data de início no formato AAAA-MM-DD
  • count: Número de artigos a buscar (padrão: 50, máximo: 200)

search_papers

Pesquisa artigos em múltiplas fontes acadêmicas com opções de pesquisa específicas por campo e classificação.

Parâmetros:

  • source: "arxiv" | "openalex" | "europepmc" | "core"
  • query: String de consulta de pesquisa (máximo de 1500 caracteres)
  • field: "all" | "title" | "abstract" | "author" | "fulltext" (padrão: "all")
  • count: Número de resultados a retornar (padrão: 50, máximo: 200)
  • sortBy: "relevance" | "date" | "citations" (padrão: "relevance")

Recursos de Pesquisa por Fonte:

  • arXiv: Pesquisa por título, resumo, autor e geral com operadores booleanos
  • OpenAlex: Pesquisa avançada com pontuação de relevância e classificação por citações
  • Europe PMC: Literatura biomédica com termos MeSH e pesquisa em texto completo
  • CORE: Artigos acadêmicos globais com linguagem de consulta avançada

Exemplos de Consultas:

  • Palavras-chave: "machine learning", "climate change"
  • Frases: "artificial intelligence" (use aspas para frases exatas)
  • Booleanos: "deep learning AND neural networks" (o arXiv oferece suporte a isso)
  • Autores: "John Smith", "Smith J"

Retorna:

  • Matriz de objetos de artigo com metadados (id, título, autores, data, pdf_url)
  • Campo de texto: String vazia (text: "") - use fetch_content para texto completo

fetch_content

Busca metadados completos e conteúdo textual de um artigo específico por ID com extração de texto completa.

Parâmetros:

  • source: Qualquer uma das 6 fontes suportadas
  • id: ID do artigo (formato varia conforme a fonte)

Formatos de ID por Fonte:

  • arXiv: "2401.12345", "cs/0601001", "1234.5678v2"
  • OpenAlex: "W2741809807" ou numérico 2741809807
  • PMC: "PMC8245678" ou "12345678"
  • Europe PMC: "PMC8245678", "12345678" ou DOI
  • bioRxiv/medRxiv: "10.1101/2021.01.01.425001" ou "2021.01.01.425001"
  • CORE: ID numérico como "12345678"

📄 Formato de Metadados do Artigo

Todas as ferramentas retornam objetos de artigo com a seguinte estrutura:

{
  id: string;                    // Paper ID
  title: string;                 // Paper title
  authors: string[];             // List of author names
  date: string;                  // Publication date (ISO format)
  pdf_url?: string;              // PDF URL (if available)
  text: string;                  // Extracted full text content
  textTruncated?: boolean;       // Warning: text was truncated due to size limits
  textExtractionFailed?: boolean; // Warning: text extraction failed
}

🧠 Extração Avançada de Texto

Estratégia Multi-Fonte

Cada fonte possui abordagens especializadas de extração de texto:

  • arXiv: HTML de arxiv.org/html com fallback ar5iv.labs.arxiv.org
  • OpenAlex: Fontes HTML com cadeia de fallback do resolvedor de DOI
  • PMC: API E-utilities com extração XML/HTML
  • Europe PMC: API REST com múltiplas estratégias de URL
  • bioRxiv/medRxiv: Extração direta de HTML com fallback para resumo
  • CORE: PDF/HTML com fallback para URL da fonte

Cadeia de Resolução de DOI

Resolvedor avançado de DOI com múltiplas estratégias de fallback:

  1. Unpaywall → Fontes gratuitas de texto completo
  2. Crossref → Metadados e links do editor
  3. Semantic Scholar Academic Graph → Acesso alternativo

Desempenho e Confiabilidade

  • Sucesso na Extração de Texto: >90% para artigos com HTML disponível
  • Degradação Graciosa: Sempre retorna metadados mesmo se a extração de texto falhar
  • Gerenciamento de Tamanho: Limite de 6MB de texto com truncamento inteligente
  • Cache: Cache LRU de 24 horas para resolução de DOI

🔄 Limitação de Taxa

Uso respeitoso da API com limitação de taxa por fonte:

  • arXiv: 5 solicitações por minuto
  • OpenAlex: 10 solicitações por minuto
  • PMC: 3 solicitações por segundo
  • Europe PMC: 10 solicitações por minuto
  • bioRxiv/medRxiv: 5 solicitações por minuto
  • CORE: 10 solicitações por minuto (público), maior com chave de API

Configuração da API CORE

Para acesso aprimorado ao CORE, defina a variável de ambiente:

export CORE_API_KEY="your-api-key"

🧪 Testes

Executar Suíte de Testes

# Run all tests
npm test

# Run integration tests
npm run test -- tests/integration

# Run end-to-end workflow tests
npm run test -- tests/e2e

# Run performance benchmarks
npm run test -- tests/integration/performance.test.ts

Cobertura de Testes

  • Testes de Integração: Todas as 6 fontes testadas de ponta a ponta
  • Testes de Desempenho: Benchmarks de tempo de resposta e throughput
  • Testes de Fluxo de Trabalho: Cenários reais de pesquisa em múltiplas fontes
  • Testes Unitários: Componentes principais e casos extremos

🏗 Arquitetura

Sistema de Drivers Modulares

  • Separação limpa entre fontes
  • Interface consistente em todos os drivers
  • Extração de texto especializada por fonte

Recursos Avançados

  • Resolução de DOI: Cadeia de fallback com múltiplos provedores
  • Limitação de Taxa: Algoritmo de token bucket por fonte
  • Processamento de Texto: Limpeza e normalização de HTML
  • Tratamento de Erros: Respostas estruturadas com sugestões acionáveis
  • Cache: Cache inteligente para resolução de DOI

Pilha de Tecnologia

  • TypeScript + ESM: JavaScript moderno com segurança total de tipos
  • Design Modular: Separação limpa de responsabilidades
  • Degradação Graciosa: Sempre funcional mesmo com falhas parciais
  • Gerenciamento de Tamanho de Resposta: Truncamento automático e avisos

📊 Comparação de Fontes

FonteArtigosDisciplinasTexto CompletoDados de CitaçãoPré-impressõesPesquisa
arXiv2,3M+STEMHTML ✓Limitados✓✓✓
OpenAlex200M+TodasVariável✓✓✓✓✓✓
PMC7M+BiomédicasXML/HTML ✓LimitadosLimitada
Europe PMC40M+Ciências da VidaHTML ✓Limitados✓✓✓
bioRxiv/medRxiv500K+Bio/MédicasHTML ✓Limitados✓✓✓Limitada
CORE200M+TodasPDF/HTML ✓Limitados✓✓✓

🔧 Desenvolvimento

Build

npm run build

Testar Fontes Individuais

# Test specific sources
node dist/cli.js list-categories --source=arxiv
node dist/cli.js fetch-latest --source=biorxiv --category="biorxiv:biology" --count=3
node dist/cli.js fetch-content --source=core --id=12345678

# Test search functionality
node dist/cli.js search-papers --source=arxiv --query="artificial intelligence" --count=5
node dist/cli.js search-papers --source=openalex --query="quantum computing" --field=title --count=3

Testes de Desempenho

# Run performance benchmarks
npm run test -- tests/integration/performance.test.ts

# Test memory usage
npm run test -- --reporter=verbose

🚨 Tratamento de Erros

Tratamento abrangente de erros para todas as fontes:

  • IDs de artigo inválidos com sugestões de formato
  • Limitação de taxa com informações de retry-after
  • Timeouts de API e erros de servidor
  • Autenticação ausente (chave da API CORE)
  • Problemas de conectividade de rede
  • Falhas de extração de texto com estratégias de fallback

🔍 Solução de Problemas

Problemas Comuns

  • Limitação de taxa: Nova tentativa automática com backoff exponencial
  • Artigos ausentes: Tente fontes alternativas para o mesmo conteúdo
  • Falhas de extração de texto: Fallback para resumo ou metadados
  • Limites da API CORE: Defina a variável de ambiente CORE_API_KEY

Otimização de Desempenho

  • Use parâmetros count apropriados (menores para respostas mais rápidas)
  • Armazene resultados em cache quando possível
  • Use fetch_latest para descoberta, fetch_content para leitura detalhada

📝 Licença

MIT


Pronto para explorar o conhecimento científico mundial? Comece com qualquer uma das 6 fontes e descubra artigos em todas as disciplinas acadêmicas! 🔬📚