arXiv MCP Server
Pesquise e analise artigos acadêmicos no arXiv.
Documentação
arxiv-mcp-server
Um servidor MCP local para trabalho de literatura com agentes. O diferencial é a leitura de seções em LaTeX original, BibTeX a partir dos metadados do arXiv e monitoramento de tópicos. Os artigos permanecem no disco. O fluxo de trabalho é ID do artigo → esboço → uma seção → citações. A busca é opcional.
Instalação
A instalação padrão é uvx arxiv-mcp-server. Integrações baseadas em comandos precisam de uv, que fornece uvx. Não é necessário clonar repositório nem configurar ambiente Python.
uvx arxiv-mcp-server
Adicione esta configuração stdio a clientes que aceitam o formato JSON mcpServers, como Claude Desktop e Kiro. Outros clientes podem usar um objeto servers de nível superior, TOML ou a própria interface de configurações; consulte a documentação de MCP do cliente.
{
"mcpServers": {
"arxiv": {
"type": "stdio",
"command": "uvx",
"args": ["arxiv-mcp-server"]
}
}
}
O diretório padrão de artigos é ~/.arxiv-mcp-server/papers. Para escolher outro diretório, acrescente "--storage-path", "/absolute/path/to/papers" a args.
O pacote suportado é publicado no PyPI como arxiv-mcp-server==0.7.2. Um pacote npm não relacionado usa o mesmo nome, portanto não instale este servidor com npm, pnpm ou npx arxiv-mcp-server.
Listado no registro oficial de MCP, versão mais recente 0.7.2.
Por que isto não é um wrapper de busca
Busca, obtenção de fontes, grafos de citação e downloads chamam seus respectivos serviços externos. O que permanece local é o fluxo de literatura: ler LaTeX enviado pelo autor uma seção por vez, exportar BibTeX a partir dos metadados autoritativos do arXiv e manter monitoramentos de tópicos no disco. O servidor roda localmente via stdio por padrão.
Receitas por cliente (Claude Code, Codex, Hermes, VS Code / Kiro, Claude Desktop, plugins)
Use o JSON padrão acima, a menos que seu cliente tenha um auxiliar de uma linha.
Claude Code
Adicione o servidor MCP para todos os projetos:
claude mcp add --transport stdio --scope user arxiv -- uvx arxiv-mcp-server
Para a integração de plugin mais rica—que instala a conexão MCP mais a habilidade de pesquisa arXiv incluída—registre este repositório como um marketplace e instale o plugin:
claude plugin marketplace add blazickjp/arxiv-mcp-server
claude plugin install arxiv-mcp-server@arxiv-mcp
Verifique a instalação MCP direta com claude mcp get arxiv. Reinicie o Claude Code ou execute /reload-plugins após instalar o plugin.
OpenAI Codex
Adicione o servidor MCP:
codex mcp add arxiv -- uvx arxiv-mcp-server
Ou instale a conexão MCP e a habilidade de pesquisa incluída como um plugin do Codex:
codex plugin marketplace add blazickjp/arxiv-mcp-server
codex plugin add arxiv-mcp-server@arxiv-mcp
Verifique a instalação MCP direta com codex mcp get arxiv. O Codex CLI, a extensão Codex para IDE e o Codex no aplicativo de desktop do ChatGPT compartilham esta configuração de MCP.
Hermes Agent
Adicione o servidor, aprove as ferramentas descobertas e teste a conexão salva:
hermes mcp add arxiv --command uvx --args arxiv-mcp-server
hermes mcp test arxiv
VS Code e Kiro
Para a integração mais rica do Kiro Power, abra o painel Powers, escolha Add Custom Power → Import power from GitHub e insira:
https://github.com/blazickjp/arxiv-mcp-server
O Power instala a conexão MCP de mcp.json e adiciona orientação focada de pesquisa no arXiv. Usuários do Kiro que preferem configuração manual podem colocar a configuração genérica acima em .kiro/settings/mcp.json para um workspace ou ~/.kiro/settings/mcp.json para todos os workspaces.
Pacote do Claude Desktop
Usuários de macOS podem instalar uma extensão .mcpb empacotada do lançamento v0.7.2 ou do último lançamento no GitHub:
- Apple Silicon:
arxiv-mcp-server-darwin-arm64-0.7.2.mcpb - Intel:
arxiv-mcp-server-darwin-x86_64-0.7.2.mcpb
Clique duas vezes no pacote, arraste-o para o Claude Desktop ou abra Settings → Extensions → Advanced settings → Install Extension…. O pacote inclui as dependências do servidor e requer CPython 3.11.x.
Outros clientes MCP
Outros clientes podem usar um objeto servers de nível superior, TOML ou a própria interface de configurações; consulte a documentação de MCP do cliente. A instalação MCP direta é o caminho mais curto. Instale um plugin quando também quiser o fluxo de pesquisa que orienta o cliente para buscas focadas, leituras limitadas, navegação por citações e recuperação de LaTeX em nível de seção.
Manifestos de plugins
O mesmo servidor MCP e a mesma habilidade de pesquisa são empacotados para ambos os principais sistemas de plugins:
| Integração | Manifesto | Marketplace |
|---|---|---|
| Claude Code | .claude-plugin/plugin.json | .claude-plugin/marketplace.json |
| OpenAI Codex / ChatGPT Work | .codex-plugin/plugin.json | .agents/plugins/marketplace.json |
| Kiro Power | POWER.md | mcp.json |
| Inicialização MCP compartilhada | .mcp.json para Claude e clientes locais do repositório; .codex-mcp.json para plugins do Codex | uvx arxiv-mcp-server |
| Fluxo de pesquisa compartilhado | skills/arxiv-mcp-server/SKILL.md | Instalado com qualquer um dos plugins |
Se um cliente de desktop não encontrar uvx
Aplicativos de desktop nem sempre herdam o mesmo PATH que seu terminal. Se uvx arxiv-mcp-server funciona em um terminal, mas o cliente relata que o servidor falhou ao conectar, encontre o caminho absoluto do executável:
# macOS and Linux
command -v uvx
# Windows PowerShell
(Get-Command uvx).Source
Substitua "command": "uvx" pelo caminho absoluto retornado e reinicie o cliente. Mantenha o valor de args inalterado.
Se uma instalação existente não tiver as ferramentas mais recentes
uvx reutiliza ambientes de ferramentas em cache. Force-o a resolver o lançamento atual do PyPI com um interpretador suportado e reinicie seu cliente MCP:
uvx --python 3.11 --refresh-package arxiv-mcp-server arxiv-mcp-server
Se seu cliente ainda iniciar um ambiente mais antigo, adicione "--python", "3.11" antes de "arxiv-mcp-server" no array args dele.
Instalação de comando persistente
Para colocar arxiv-mcp-server no seu PATH em vez de iniciá-lo via uvx:
uv tool install arxiv-mcp-server
Se o comando não estiver imediatamente disponível, execute uv tool update-shell e reinicie o terminal. Depois, use "command": "arxiv-mcp-server" e omita o nome do pacote de args.
Ferramentas
O servidor atualmente expõe 19 ferramentas.
| Ferramenta | Finalidade | Observações |
|---|---|---|
search_papers | Buscar no arXiv por consulta, categoria, data e ordem de classificação | Padrão ≤5 resultados compactos (abstract_mode=snippet); API remota do arXiv |
get_abstract | Obter metadados e um resumo por ID do arXiv | Não baixa o artigo |
download_paper | Baixar e converter um artigo para Markdown local | HTML primeiro; fallback de PDF usa [pdf]; force=true busca novamente; conteúdo limitado a 12.000 caracteres por padrão |
list_papers | Listar artigos armazenados localmente | Retorna id, título, autores, publicado; compact apenas para IDs |
read_paper | Ler conteúdo de artigo armazenado localmente | Limitado a 12.000 caracteres por padrão; suporta start/max_chars/return_full_text |
get_paper_outline | Esboço de títulos em Markdown paginado | IDs de seção hierárquicos estáveis |
read_paper_section | Ler uma seção Markdown limitada | Por ID do esboço ou título exclusivo |
search_paper_text | Busca limitada de passagens em um artigo | Deslocamentos de origem; não requer Torch |
get_paper_latex | Recuperar LaTeX limitado enviado pelo autor | Arquivo de origem remoto do arXiv |
list_paper_latex_sections | Retornar um esboço LaTeX paginado | Suporta start e max_sections |
get_paper_latex_section | Ler uma seção LaTeX limitada | Selecionar por ID do esboço ou título exato |
citation_graph | Obter referências e artigos citantes | API remota do Semantic Scholar (1 chamada por artigo, cache em disco); chave de API gratuita opcional melhora a confiabilidade |
export_citations | Exportar BibTeX para um ou mais IDs do arXiv | Metadados autoritativos do arXiv |
watch_topic | Salvar ou atualizar um monitoramento de tópico do arXiv | Armazenado localmente; omita categories para preservar na atualização, categories: [] para limpar |
list_watches | Listar monitoramentos de tópicos salvos | Somente leitura; não avança last_checked |
check_alerts | Verificar monitoramentos salvos em busca de novos artigos | Retorna artigos desde a última verificação |
unwatch_topic | Excluir um monitoramento de tópico salvo | Correspondência exata de tópico; não encontrado se ausente |
semantic_search | Buscar artigos baixados por similaridade semântica | Requer [pro] |
reindex | Reconstruir o índice semântico local | Requer [pro] |
Alertas de pesquisa (watch_topic)
Salve monitoramentos permanentes de tópicos com watch_topic, inspecione-os com list_watches, consulte com check_alerts e remova com unwatch_topic.
Ao atualizar um monitoramento existente (mesma string topic):
- Omita
categories→ preserve os filtros de categoria armazenados (e outros campos que você deixar inalterados). - Passe
categories: []→ limpe os filtros de categoria. - Passe uma lista não vazia → substitua os filtros armazenados.
Caminho de criação: omitir categories armazena uma lista vazia (sem filtro de categoria).
Guia de consulta do search_papers
Os esquemas das ferramentas permanecem curtos de propósito. Use esta seção (não a descrição MCP sempre carregada) para tutoriais de consulta, catálogos de categorias e exemplos de fluxo de trabalho.
Construção de consultas
- Use frases entre aspas para correspondências exatas:
"multi-agent systems","neural networks" - Combine conceitos relacionados com OR:
"AI agents" OR "software agents" - Buscas específicas por campo:
ti:"exact title phrase",au:"author name",abs:"keyword",cat:cs.LG - Exclua com ANDNOT:
"machine learning" ANDNOT "survey" - Prefira 2–4 conceitos centrais em vez de listas longas de palavras-chave
Padrões avançados
- Campo + frase:
ti:"transformer architecture" - Vários campos:
au:"Smith" AND ti:"quantum" - Exclusões:
"deep learning" ANDNOT ("survey" OR "review") - Amplo + restrito:
"artificial intelligence" AND (robotics OR "computer vision")
Filtragem por categoria (recomendada para relevância)
Ciência da Computação: cs.AI (IA), cs.LG (ML), cs.CL (PLN), cs.CV (visão), cs.MA (multiagente), cs.RO (robótica), cs.NE (neural/evolutivo), cs.IR (RI), cs.HC (IHC), cs.CR (segurança), cs.DB (bancos de dados)
Estatística e Matemática: stat.ML, stat.AP, math.OC, math.ST
Física e outros: quant-ph, eess.SP, eess.AS, physics.data-an
Exemplos eficazes
ti:"reinforcement learning"comcategories: ["cs.LG", "cs.AI"]au:"Hinton" AND "deep learning"comcategories: ["cs.LG"]"multi-agent" ANDNOT "survey"comcategories: ["cs.MA"]abs:"transformer" AND ti:"attention"comcategories: ["cs.CL"]
Datas e classificação
- Datas usam
YYYY-MM-DD(date_from/date_to) - O
sort_bypadrão érelevance; usedatepara monitoramento do mais recente primeiro - Trabalho fundamental:
date_to: "2010-12-31"com buscas por campo de título/resumo
Tamanho dos resultados, resumos e paginação
- O
max_resultspadrão é 5 (limite 50). Passe um valor explícito para páginas maiores. abstract_mode:snippet(padrão, ~280 caracteres, marcado… [truncated]quando cortado),full(resumo completo) ounone(omitir resumos). Outros metadados (título, autores, categorias, datas, URLs) são sempre retornados.- As respostas relatam
total_results(correspondências no corpus),returned,has_more,start,next_starteabstract_mode - Passe
start=next_startcom o mesmoabstract_modepara a próxima página - O arXiv impõe ~3 segundos entre solicitações (tratado no lado do servidor); em erros de limite de taxa, aguarde ~60s
Buscar e inspecionar um artigo
Peça ao seu cliente MCP para chamar search_papers com:
{
"query": "\"Kolmogorov-Arnold Networks\"",
"categories": ["cs.LG", "cs.AI"],
"sort_by": "date"
}
Os padrões retornam até cinco resultados compactos com trechos de resumo. Use "abstract_mode": "full" quando precisar de resumos completos na resposta da busca, ou chame get_abstract para um único artigo após uma busca compacta:
{
"paper_id": "2404.19756"
}
Não chame get_abstract novamente para artigos já retornados com abstract_mode=full.
Baixar e ler o texto completo
Chame download_paper com:
{
"paper_id": "2404.19756"
}
Omitir max_chars retorna um primeiro bloco limitado (padrão de 12.000 caracteres de papel). Artigos em cache são retornados imediatamente. Passe "force": true para baixar novamente e sobrescrever o markdown local e o sidecar (isso também acontece automaticamente quando a versão do extrator de HTML muda).
Em seguida, navegue pelo conteúdo em cache com read_paper:
{
"paper_id": "2404.19756",
"start": 0
}
Ou continue de um bloco anterior:
{
"paper_id": "2404.19756",
"start": 12000
}
Respostas de conteúdo grande incluem content_length, returned_chars, next_start, is_truncated e (quando truncadas) next_retrieval com a instrução da próxima chamada. Passe next_start para o start da próxima chamada para continuar a leitura. Passe um max_chars explícito para substituir o tamanho padrão do bloco, ou "return_full_text": true para optar pela resposta anterior sem limite de tamanho do artigo completo.
Notas de migração (padrão de conteúdo limitado)
Anteriormente, omitir max_chars em download_paper / read_paper retornava o artigo inteiro. Esse padrão agora é um bloco de 12.000 caracteres para que uma única chamada de ferramenta MCP não inunde a janela de contexto do cliente.
| Necessidade | Chamada |
|---|---|
| Primeiro bloco limitado (novo padrão) | { "paper_id": "…" } |
| Continuar leitura | { "paper_id": "…", "start": <next_start> } |
| Tamanho de bloco personalizado | { "paper_id": "…", "max_chars": 5000 } |
| Comportamento antigo sem limite | { "paper_id": "…", "return_full_text": true } |
Clientes que já passavam max_chars não são alterados. Apenas chamadores que dependiam do comportamento de omitir max_chars = texto completo precisam adicionar return_full_text: true ou navegar via next_start.
Ler LaTeX original por seção
Chame get_paper_latex com:
{
"paper_id": "1706.03762"
}
Obtenha a primeira página do esboço de seções com list_paper_latex_sections:
{
"paper_id": "1706.03762",
"start": 0,
"max_sections": 100
}
Em seguida, chame get_paper_latex_section usando um ID desse esboço:
{
"paper_id": "1706.03762",
"section_id": "3.2",
"max_chars": 12000
}
Arquivos LaTeX são validados, limitados em tamanho e armazenados em cache localmente antes que o conteúdo seja retornado.
Dependências opcionais
Escolha a variante de instalação que corresponde aos recursos que você precisa:
# Base server
uv tool install arxiv-mcp-server
# Base server plus PDF conversion
uv tool install "arxiv-mcp-server[pdf]"
# Base server plus local semantic search
uv tool install "arxiv-mcp-server[pro]"
Se a ferramenta base já estiver instalada, reinstale a variante selecionada:
uv tool install --force "arxiv-mcp-server[pdf]"
O extra pdf instala pymupdf4llm e pymupdf-layout para artigos sem HTML arXiv utilizável. O extra pro adiciona dependências de incorporação local para semantic_search e reindex; a busca semântica opera apenas em artigos já baixados para o diretório de armazenamento configurado.
Para artigos mais antigos que exigem conversão de PDF, execute o pacote com seu extra de PDF:
{
"mcpServers": {
"arxiv": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"arxiv-mcp-server[pdf]",
"arxiv-mcp-server"
]
}
}
}
Prompts integrados
O servidor fornece sete fluxos de trabalho de prompt MCP. A disponibilidade dos prompts depende do cliente; o servidor fornece instruções de fluxo de trabalho, mas não executa um modelo separado.
| Prompt | Argumentos obrigatórios | Finalidade |
|---|---|---|
research-discovery | topic | Mapear terminologia, buscas, artigos, clusters de pesquisa e um caminho de leitura |
deep-paper-analysis | paper_id | Analisar um artigo em profundidade |
summarize_paper | paper_id | Resumir métodos, resultados e limitações |
compare_papers | paper_ids | Comparar vários artigos |
literature_review | topic | Sintetizar um tópico e um conjunto opcional de artigos |
literature-synthesis | paper_ids | Sintetizar temas, métodos, cronologias ou lacunas entre artigos |
research-question | paper_ids, topic | Formular perguntas de pesquisa fundamentadas e falseáveis |
HTTP transmissível (Streamable HTTP)
Para implantações onde stdio não é prático:
TRANSPORT=http HOST=127.0.0.1 PORT=8080 \
uvx arxiv-mcp-server --storage-path /absolute/path/to/papers
PowerShell:
$env:TRANSPORT = "http"
$env:HOST = "127.0.0.1"
$env:PORT = "8080"
uvx arxiv-mcp-server --storage-path C:\absolute\path\to\papers
Conecte clientes a:
{
"mcpServers": {
"arxiv": {
"type": "http",
"url": "http://127.0.0.1:8080/mcp"
}
}
}
Sondas de nuvem e balanceadores de carga devem fazer GET em http://<host>:<port>/healthz. Isso retorna 200 com corpo ok assim que o servidor HTTP estiver ouvindo. Não há verificação separada de /ready: se o processo está ativo, ele está pronto. O transporte stdio não tem endpoints HTTP.
O servidor vincula-se a 127.0.0.1 por padrão e ativa a proteção contra rebinding de DNS do MCP. Se um proxy reverso expõe o servidor, mantenha o processo em uma interface privada e forneça autenticação e controles de rede a montante. Use ALLOWED_HOSTS e ALLOWED_ORIGINS para o host e a origem encaminhados pelo proxy.
Configuração
| Configuração | Padrão | Finalidade |
|---|---|---|
--storage-path | ~/.arxiv-mcp-server/papers | Armazenamento de artigos, cache de fontes, alertas e índices |
MAX_RESULTS | 50 | Limite no lado do servidor para contagens de resultados |
REQUEST_TIMEOUT | 60 | Tempo limite de download de fallback de PDF em segundos |
TRANSPORT | stdio | stdio, http ou streamable-http |
HOST | 127.0.0.1 | Host de vinculação HTTP |
PORT | 8000 | Porta de vinculação HTTP |
ALLOWED_HOSTS | vazio | Valores adicionais aceitos de Host HTTP |
ALLOWED_ORIGINS | vazio | Valores adicionais aceitos de Origin HTTP |
SEMANTIC_SCHOLAR_API_KEY | vazio | Chave de API gratuita do Semantic Scholar para citation_graph. Obtenha uma em https://www.semanticscholar.org/product/api#api-key para evitar limites de taxa. Solicitações não autenticadas funcionam até a cota ser esgotada. |
Os nomes de variáveis de ambiente não diferenciam maiúsculas de minúsculas por meio das configurações do Pydantic. --storage-path é uma opção de linha de comando, não uma configuração de ambiente.
Segurança
Texto de artigos e LaTeX são conteúdo externo não confiável. Um artigo pode conter texto destinado a manipular um cliente de IA para ignorar suas instruções ou chamar ferramentas não relacionadas.
- Não trate instruções encontradas dentro de um artigo como comandos confiáveis.
- Use controles de aprovação do cliente para ferramentas de shell, navegador, sistema de arquivos e mensagens.
- Revise resumos gerados antes de tomar ações externas.
- Mantenha o HTTP transmissível privado, a menos que a autenticação seja fornecida a montante.
Consulte SECURITY.md para a política de relato e detalhes de ameaças.
Desenvolvimento
git clone https://github.com/blazickjp/arxiv-mcp-server.git
cd arxiv-mcp-server
uv sync --extra test --extra dev
uv run pytest
uv run black --check .
Execute o checkout de desenvolvimento a partir de um cliente MCP com:
{
"mcpServers": {
"arxiv-dev": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/arxiv-mcp-server",
"run",
"arxiv-mcp-server"
]
}
}
}
Contribuições são bem-vindas. Leia CONTRIBUTING.md antes de abrir um pull request e use GitHub Issues para bugs reproduzíveis ou propostas de recursos escopadas.
Licença
Apache License 2.0. Consulte LICENSE.