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,nameedescriptionopcional
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: "") - usefetch_contentpara 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 OpenAlexsince: Data de início no formato AAAA-MM-DDcount: 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: "") - usefetch_contentpara 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 suportadasid: ID do artigo (formato varia conforme a fonte)
Formatos de ID por Fonte:
- arXiv:
"2401.12345","cs/0601001","1234.5678v2" - OpenAlex:
"W2741809807"ou numérico2741809807 - 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/htmlcom fallbackar5iv.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:
- Unpaywall → Fontes gratuitas de texto completo
- Crossref → Metadados e links do editor
- 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
| Fonte | Artigos | Disciplinas | Texto Completo | Dados de Citação | Pré-impressões | Pesquisa |
|---|---|---|---|---|---|---|
| arXiv | 2,3M+ | STEM | HTML ✓ | Limitados | ✓ | ✓✓✓ |
| OpenAlex | 200M+ | Todas | Variável | ✓✓✓ | ✓ | ✓✓✓ |
| PMC | 7M+ | Biomédicas | XML/HTML ✓ | Limitados | ✗ | Limitada |
| Europe PMC | 40M+ | Ciências da Vida | HTML ✓ | Limitados | ✓ | ✓✓✓ |
| bioRxiv/medRxiv | 500K+ | Bio/Médicas | HTML ✓ | Limitados | ✓✓✓ | Limitada |
| CORE | 200M+ | Todas | PDF/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
countapropriados (menores para respostas mais rápidas) - Armazene resultados em cache quando possível
- Use
fetch_latestpara descoberta,fetch_contentpara 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! 🔬📚