Internet Archive

Pesquise dentro de livros digitalizados, navegue pelo catálogo do Internet Archive e leia capturas do Wayback.

Documentação

mcp-archiveorg

npm CI license MCP Registry Glama M8ven LobeHub Install in Cursor Install in VS Code

O Internet Archive é uma biblioteca sem fins lucrativos que preserva o que o mundo publica: livros digitalizados, filmes, músicas gravadas, rádio, software e as próprias páginas da web, capturadas repetidamente desde 1996 na Wayback Machine. Milhões de seus livros e documentos passaram por reconhecimento óptico de caracteres, para que as palavras neles contidas possam ser pesquisadas, e o índice Open Library ao lado descreve obras, suas edições e seus assuntos.

Este servidor conecta um cliente de chat a essa biblioteca. Você pode pesquisar o texto completo dentro de seus documentos, pesquisar seu catálogo de itens, ler o registro de um item e seus arquivos, buscar um livro por assunto, local, período ou pessoa, e ler a web como ela estava em um determinado dia. Não requer chave de API nem conta.

Versão francesa


Instalação

Instalação com um clique

Install in Cursor Install in VS Code

Claude Code

claude mcp add archiveorg -- npx -y mcp-archiveorg

Claude Desktop, Cursor e qualquer cliente que use o formato de configuração padrão

{
  "mcpServers": {
    "archiveorg": {
      "command": "npx",
      "args": ["-y", "mcp-archiveorg"]
    }
  }
}

Node 24 ou posterior é necessário, e nenhuma variável de ambiente precisa ser definida.

Com Docker

{
  "mcpServers": {
    "archiveorg": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-archiveorg:2.0.2"]
    }
  }
}

-i mantém o stdin aberto, que é por onde o protocolo trafega, e -t é omitido porque um TTY reescreve o fluxo. O contêiner precisa de HTTPS de saída para archive.org, web.archive.org e openlibrary.org, e nada mais: sem volume, sem porta, sem credencial.

Pacote, sem npm

Baixe mcp-archiveorg-2.0.2.mcpb de a versão mais recente e abra-o. Um cliente que suporta pacotes MCP o instala por conta própria, sem npm e sem arquivo de configuração para editar. O pacote carrega suas dependências, então nada é baixado no momento da instalação.

O que você pode perguntar

  • "Quais livros mencionam o farol de Beaumont?"
  • "Encontre itens sobre o terremoto de São Francisco de 1906."
  • "Quais arquivos esse item contém e sob qual licença ele está?"
  • "Encontre livros sobre apicultura na França publicados antes de 1900."
  • "Como era esse site em março de 2001?"

O caminho comum vai de uma pesquisa a um registro: uma linha carrega um identifier, e get_item o lê.

Ferramentas

FerramentaO que faz
search_insidePesquisa as palavras dentro dos documentos digitalizados do arquivo.
search_itemsPesquisa o catálogo por título, criador, assunto e tipo de mídia.
get_itemLê o registro de um item, seus arquivos e sua licença.
search_booksEncontra livros por assunto, local, período, pessoa, extensão ou ano.
list_snapshotsLista as capturas que a Wayback Machine possui para um endereço.
get_snapshotLê uma captura de um endereço, em ou próximo a uma data.

search_inside

Pesquisa o texto dentro dos documentos do arquivo, que veio da página por meio de reconhecimento óptico de caracteres, então uma passagem carrega os erros de leitura desse processo.

ArgumentoTipoObrigatórioO que faz
querystring, 2 a 300 caracteressimA frase a procurar dentro dos documentos.
limitinteiro, 1 a 50, padrão 10nãoCorrespondências a servir.
pageinteiro, 1 a 100, padrão 1nãoQual página de correspondências.
max_excerpt_charsinteiro, 80 a 1200, padrão 300nãoQuanto de uma passagem servir.
max_excerpts_per_matchinteiro, 1 a 10, padrão 3nãoPassagens servidas por documento correspondente.

Em retorno: hits, cada um carregando identifier, que get_item recebe; title, creator e year; excerpts, as passagens como a máquina as leu da página; matched_file, nomeando o que realmente contém a passagem; e source_url. inside_container é verdadeiro quando o item agrupa vários documentos e a passagem está em um deles, caso em que o título, o criador e o ano pertencem ao contêiner.

total conta documentos, e pagina. É um número de documentos e a última página de um conjunto de correspondências é mais curta que a primeira. Nenhum número de página está disponível: o índice informa onde o texto está dentro do item, que é 1 em quase todas as correspondências, então nada aqui declara uma página de um livro e nenhum link reivindica uma.

search_items

Pesquisa o próprio catálogo, em todos os tipos de coisas que o arquivo guarda.

ArgumentoTipoObrigatórioO que faz
querystring, 1 a 300 caracteressimPalavras a procurar no catálogo.
media_typetexts, movies, audio, image, software, data ou webnãoO tipo de coisa a manter.
year_frominteiro, 1 a 2200nãoAno mais antigo.
year_tointeiro, 1 a 2200nãoAno mais recente.
sortrelevance, downloads, newest, oldest ou title, padrão relevancenãoComo as linhas são ordenadas.
limitinteiro, 1 a 50, padrão 10nãoLinhas a servir.
pageinteiro, 1 a 100, padrão 1nãoQual página de linhas.

Em retorno: items, cada um carregando identifier, title, creator, year, media_type, downloads e source_url, um campo que o registro deixa vazio sendo null. total conta os itens correspondentes em todo o catálogo, que é mais do que o número retornado.

get_item

Lê o registro de um item. As partes mais pesadas são solicitadas em vez de servidas por padrão, já que um registro pode ser longo.

ArgumentoTipoObrigatórioO que faz
identifierstring, 1 a 200 caracteressimO identificador que uma linha de pesquisa carrega.
sectionsarray de basic, files, full_metadata, padrão ["basic"]nãoQuais partes retornar.
file_formatstring, até 60 caracteresnãoManter os arquivos de um formato.
max_filesinteiro, 1 a 200, padrão 25nãoLimite nos arquivos retornados.
max_description_charsinteiro, 100 a 20000, padrão 2000nãoQuanto da descrição servir.

Em retorno: o item com seu title, creator, year, media_type e source_url, além de description, date, publisher, language, collections e license_url, cada null onde o registro não declara nada. file_count conta os arquivos que o item contém, independentemente do que esta resposta retornou, e total_bytes seu peso. files e full_metadata estão presentes apenas quando solicitados em sections.

search_books

Encontra livros por meio do índice de obras ao lado do arquivo, que descreve uma obra e suas edições em vez de uma cópia digitalizada.

ArgumentoTipoObrigatórioO que faz
querystring, 2 a 300 caracteresnãoTexto livre, quando houver.
subjectstring, 2 a 100 caracteresnãoUm assunto sob o qual o índice arquiva obras.
placestring, 2 a 100 caracteresnãoUm local sobre o qual uma obra trata.
timestring, 2 a 100 caracteresnãoUm período sobre o qual uma obra trata.
personstring, 2 a 100 caracteresnãoUma pessoa sobre a qual uma obra trata.
languagestring, 2 a 20 caracteresnãoO idioma da obra.
year_frominteiro, 1 a 2200nãoPrimeira publicação mais antiga.
year_tointeiro, 1 a 2200nãoPrimeira publicação mais recente.
pages_mininteiro, 1 a 100000nãoMenor obra aceitável.
pages_maxinteiro, 1 a 100000nãoMaior obra aceitável.
sortrelevance, rating, readers, newest ou oldest, padrão relevancenãoComo as linhas são ordenadas.
limitinteiro, 1 a 50, padrão 10nãoLinhas a servir.
pageinteiro, 1 a 100, padrão 1nãoQual página de linhas.

Em retorno: books, cada um carregando title, authors, first_published_year, edition_count, archive_identifiers para as cópias digitalizadas que o arquivo guarda, scan_count, page_count como mediana entre edições, subjects e source_url. searched_for diz em palavras o que esta resposta responde, texto livre e cada critério aplicado, e query é null quando a pesquisa foi feita apenas com critérios. total conta as obras correspondentes.

list_snapshots

Lista as capturas que a Wayback Machine guarda para um endereço.

ArgumentoTipoObrigatórioO que faz
urlstring, 3 a 2000 caracteressimO endereço a consultar.
limitinteiro, 1 a 100, padrão 20nãoCapturas a servir.
cursorstring, até 500 caracteresnãoO next_cursor que uma resposta anterior nomeou.

Em retorno: snapshots, cada uma com seu captured_at como timestamp ISO em UTC, o url da própria captura e o status que o rastreamento registrou. first e last descrevem esta resposta em vez de todo o histórico, e next_cursor continua a listagem.

get_snapshot

Lê uma captura de um endereço, em uma data ou próxima a ela.

ArgumentoTipoObrigatórioO que faz
urlstring, 3 a 2000 caracteressimO endereço a consultar.
atYYYY-MM-DD ou um timestamp ISOnãoA data alvo. A captura mais recente por padrão.

Em retorno: o snapshot com seu captured_at e seu endereço, além do requested_url e requested_at, para que a distância entre a data solicitada e a captura servida fique visível. A Wayback Machine responde a uma data sem captura com a mais próxima que possui.

O valor dos trechos

O texto dentro de um documento digitalizado veio da página por reconhecimento óptico de caracteres. Um trecho, portanto, carrega os erros de leitura desse processo, e é servido como foi lido, sem correção: uma palavra que parece estranha é o que a máquina viu. Cite um trecho como excerto de uma digitalização e vincule o item para que o leitor possa ver a página.

Configuração

Todas as variáveis são opcionais. Defina-as no bloco env da configuração do seu cliente.

VariávelPadrãoO que faz
IA_USER_AGENTa identidade do projetoNomeia seu aplicativo para o arquivo, com um endereço onde uma pessoa pode ser contatada.
IA_MIN_INTERVAL_MS1000Intervalo entre duas solicitações, de 500 a 60000.
IA_TIMEOUT_MS20000Prazo para uma solicitação, de 1000 a 120000.
IA_HISTORY_TIMEOUT_MS60000Prazo para um histórico da Wayback Machine, de 5000 a 180000.
IA_MAX_RETRIES3Tentativas após uma falha transitória, de 0 a 8.
IA_CACHE_TTL_MS900000Por quanto tempo uma resposta permanece na memória, de 0 a 86400000.
IA_CACHE_MAX_ENTRIES200Respostas mantidas na memória de uma vez, de 1 a 5000.
IA_LOG_LEVELerrorsilent, error, info ou debug, gravados em stderr.

Um valor fora do intervalo volta ao padrão, e o motivo é gravado em stderr.

Erros

Toda falha carrega um dos seis códigos, uma mensagem e, quando ajuda, uma dica indicando o próximo passo.

CódigoO que aconteceuO que fazer
not_foundO arquivo respondeu e não possui tal item.Verifique o identificador com search_items.
invalid_inputOs argumentos foram recusados antes de qualquer solicitação sair.Leia a mensagem, que nomeia o argumento.
rate_limitedO arquivo pediu que este cliente diminuísse o ritmo.Aguarde o número de segundos que a dica indica e chame novamente com os mesmos argumentos. O item ainda está lá.
parse_failureA resposta chegou em um formato que este cliente não consegue ler.Reporte em o rastreador de problemas.
network_errorA solicitação não foi concluída.Tente novamente em breve.
timeoutA solicitação passou do prazo.Aumente IA_TIMEOUT_MS, ou IA_HISTORY_TIMEOUT_MS para um histórico de capturas.

Como biblioteca

A camada que lê o arquivo é publicada separadamente, com seu ritmo, seu cache e seus erros, e sem protocolo anexado.

import { ArchiveClient } from "mcp-archiveorg/client";

const client = new ArchiveClient();
const { data, cached } = await client.searchItems({ query: "san francisco earthquake" });
console.log(data.total, cached);

Cada leitura responde { data, cached } e lança um erro com um dos seis códigos. O intervalo mínimo entre duas solicitações também se aplica aqui.

Ritmo e atribuição

As solicitações saem uma de cada vez, com pelo menos um segundo entre elas, e o mínimo de meio segundo se mantém independentemente da configuração do servidor. O User-Agent sempre termina com a identidade do projeto e um endereço onde uma pessoa pode ser contatada. O Internet Archive é uma biblioteca sem fins lucrativos, e uma busca dentro de seus documentos é uma das perguntas mais caras que ele responde.

Todo resultado carrega o endereço da página de onde foi lido. Os itens pertencem às pessoas e instituições que os depositaram, sob os termos que cada registro declara em license_url.

Este servidor MCP é um projeto não oficial, sem afiliação ao Internet Archive.

Privacidade

Este servidor não coleta nada sobre você e não envia nada ao autor. Ele roda na sua máquina, contata archive.org, web.archive.org e openlibrary.org e nada mais, mantém suas respostas na memória enquanto roda e não grava nada em disco. PRIVACY.md declara o que uma solicitação carrega e quais configurações alteram qualquer parte disso.

Desenvolvimento

npm install
npm run build:fixtures
npm test
npm run check

Os testes rodam contra fixtures geradas e não fazem nenhuma solicitação de rede. A suíte ao vivo, npm run test:live, faz uma solicitação por rota e roda todas as noites contra o próprio arquivo.

Contribuindo

Bugs, perguntas e ideias pertencem a o rastreador de problemas. Pull requests são bem-vindos; abrir um problema primeiro ajuda a concordar sobre a forma da mudança. Veja CONTRIBUTING.md.

Licença

MIT, veja LICENSE. Os itens pertencem aos seus depositantes, sob os termos que cada registro declara.


mcp-archiveorg (francês)

Versão em inglês

O Internet Archive é uma biblioteca sem fins lucrativos que preserva o que o mundo publica: livros digitalizados, filmes, música gravada, rádio, software e as próprias páginas da web, capturadas repetidamente desde 1996 na Wayback Machine. Milhões de seus livros e documentos passaram por reconhecimento óptico de caracteres, de modo que as palavras que contêm são pesquisáveis, e o índice Open Library que o acompanha descreve as obras, suas edições e seus assuntos.

Este servidor conecta um cliente de conversa a essa biblioteca. Pode-se pesquisar no texto integral de seus documentos, pesquisar em seu catálogo, ler a ficha de um documento e seus arquivos, encontrar um livro por assunto, local, período ou pessoa, e ler a web como era em um determinado dia. Nenhuma chave de API, nenhuma conta.

Instalação

Instalação em um clique

Install in Cursor Install in VS Code

Claude Code

claude mcp add archiveorg -- npx -y mcp-archiveorg

Claude Desktop, Cursor e qualquer cliente com formato de configuração padrão

{
  "mcpServers": {
    "archiveorg": {
      "command": "npx",
      "args": ["-y", "mcp-archiveorg"]
    }
  }
}

Node 24 ou mais recente é necessário, e nenhuma variável de ambiente precisa ser preenchida.

Com Docker

{
  "mcpServers": {
    "archiveorg": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-archiveorg:2.0.2"]
    }
  }
}

-i mantém a entrada padrão aberta, que é o canal do protocolo, e -t é omitido porque um TTY reescreve o fluxo. O contêiner precisa de acesso HTTPS de saída para archive.org, web.archive.org e openlibrary.org, e de nada mais: nenhum volume, nenhuma porta, nenhum identificador.

Bundle, sem npm

Baixe mcp-archiveorg-2.0.2.mcpb de a última publicação e abra-o. Um cliente que gerencia bundles MCP o instala sozinho, sem npm e sem arquivo de configuração para modificar. O bundle carrega suas dependências, portanto nada é baixado na instalação.

O que se pode pedir

  • "Quais livros mencionam o farol de Beaumont?"
  • "Encontre-me documentos sobre o terremoto de São Francisco em 1906."
  • "Quais arquivos este documento contém, e sob qual licença?"
  • "Encontre-me livros sobre apicultura na França publicados antes de 1900."
  • "Como era este site em março de 2001?"

O caminho comum vai de uma pesquisa a uma ficha: uma linha carrega um identifier, e get_item o lê.

As ferramentas

FerramentaO que faz
search_insidePesquisa nas palavras contidas nos documentos digitalizados.
search_itemsPesquisa no catálogo por título, autor, assunto e tipo de mídia.
get_itemLê a ficha de um documento, seus arquivos e sua licença.
search_booksEncontra livros por assunto, local, período, pessoa, extensão ou ano.
list_snapshotsLista as capturas que a Wayback Machine guarda de um endereço.
get_snapshotLê uma captura de um endereço, em uma data ou próxima a ela.

search_inside

Pesquisa no texto contido nos documentos, texto proveniente do reconhecimento óptico de caracteres, portanto um trecho carrega os erros de leitura desse processo.

ArgumentoTipoObrigatórioO que faz
querystring, 2 a 300 caracteressimA frase a pesquisar nos documentos.
limitinteiro, 1 a 50, padrão 10nãoCorrespondências a servir.
pageinteiro, 1 a 100, padrão 1nãoQual página de correspondências.
max_excerpt_charsinteiro, 80 a 1200, padrão 300nãoO comprimento do trecho a servir.
max_excerpts_per_matchinteiro, 1 a 10, padrão 3nãoTrechos servidos por documento correspondente.
Em retorno: hits, cada um portando identifier, que get_item retoma;
title, creator e year; excerpts, os trechos tal como uma máquina os
leu na página; matched_file, que nomeia o que realmente contém o
trecho; e source_url. inside_container é verdadeiro quando o documento
reúne vários e o trecho está em um deles, caso em que o
título, o autor e o ano pertencem ao continente.

total conta documentos, e ele pagina. É um número de documentos e a última página de um conjunto é mais curta que a primeira. Nenhum número de página está disponível: o índice indica onde o texto está no documento, o que vale 1 em quase todas as correspondências, então nada aqui afirma uma página de livro e nenhum link a reivindica.

search_items

Busca no catálogo em si, através de tudo o que o arquivo preserva.

ArgumentoTipoObrigatórioO que faz
querystring, 1 a 300 caracteressimAs palavras a buscar no catálogo.
media_typetexts, movies, audio, image, software, data ou webnãoO tipo de coisa a manter.
year_frominteiro, 1 a 2200nãoAno mais antigo.
year_tointeiro, 1 a 2200nãoAno mais recente.
sortrelevance, downloads, newest, oldest ou title, padrão relevancenãoA ordem das linhas.
limitinteiro, 1 a 50, padrão 10nãoLinhas a servir.
pageinteiro, 1 a 100, padrão 1nãoQual página de linhas.

Em retorno: items, cada um portando identifier, title, creator, year, media_type, downloads e source_url, um campo que a ficha deixa vazio valendo null. total conta os documentos correspondentes em todo o catálogo, o que excede o número retornado.

get_item

Lê a ficha de um documento. As partes pesadas são solicitadas em vez de serem servidas por padrão, pois uma ficha pode ser longa.

ArgumentoTipoObrigatórioO que faz
identifierstring, 1 a 200 caracteressimO identificador que uma linha carrega.
sectionsarray de basic, files, full_metadata, padrão ["basic"]nãoAs partes a retornar.
file_formatstring, até 60 caracteresnãoManter apenas arquivos de um formato.
max_filesinteiro, 1 a 200, padrão 25nãoLimite nos arquivos retornados.
max_description_charsinteiro, 100 a 20000, padrão 2000nãoO comprimento da descrição a servir.

Em retorno: o documento com seu title, creator, year, media_type e source_url, mais description, date, publisher, language, collections e license_url, cada um null onde a ficha não indica nada. file_count conta os arquivos que o documento contém independentemente do que esta resposta retornou, e total_bytes seu peso. files e full_metadata só estão lá quando solicitados em sections.

search_books

Encontra livros via o índice de obras que acompanha o arquivo, o qual descreve uma obra e suas edições em vez de um exemplar digitalizado.

ArgumentoTipoObrigatórioO que faz
querystring, 2 a 300 caracteresnãoTexto livre, quando houver.
subjectstring, 2 a 100 caracteresnãoUm assunto sob o qual o índice classifica.
placestring, 2 a 100 caracteresnãoUm lugar sobre o qual uma obra trata.
timestring, 2 a 100 caracteresnãoUm período sobre o qual uma obra trata.
personstring, 2 a 100 caracteresnãoUma pessoa sobre a qual uma obra trata.
languagestring, 2 a 20 caracteresnãoO idioma da obra.
year_frominteiro, 1 a 2200nãoPrimeira publicação mais antiga.
year_tointeiro, 1 a 2200nãoPrimeira publicação mais recente.
pages_mininteiro, 1 a 100000nãoObra mais curta aceitável.
pages_maxinteiro, 1 a 100000nãoObra mais longa aceitável.
sortrelevance, rating, readers, newest ou oldest, padrão relevancenãoA ordem das linhas.
limitinteiro, 1 a 50, padrão 10nãoLinhas a servir.
pageinteiro, 1 a 100, padrão 1nãoQual página de linhas.

Em retorno: books, cada um portando title, authors, first_published_year, edition_count, archive_identifiers para os exemplares digitalizados que o arquivo detém, scan_count, page_count como mediana nas edições, subjects e source_url. searched_for diz em palavras a que esta resposta responde, texto livre e cada critério aplicado, e query vale null quando a busca era feita apenas de critérios. total conta as obras correspondentes.

list_snapshots

Lista as capturas que a Wayback Machine guarda de um endereço.

ArgumentoTipoObrigatórioO que faz
urlstring, 3 a 2000 caracteressimO endereço a consultar.
limitinteiro, 1 a 100, padrão 20nãoCapturas a servir.
cursorstring, até 500 caracteresnãoO next_cursor nomeado por uma resposta anterior.

Em retorno: snapshots, cada uma com seu captured_at em timestamp ISO UTC, a url da captura em si, e o status que a coleta registrou. first e last descrevem esta resposta em vez de todo o histórico, e next_cursor continua a lista.

get_snapshot

Lê uma captura de um endereço, em uma data ou perto dela.

ArgumentoTipoObrigatórioO que faz
urlstring, 3 a 2000 caracteressimO endereço a consultar.
atAAAA-MM-JJ ou timestamp ISOnãoA data alvo. A captura mais recente por padrão.

Em retorno: a snapshot com seu captured_at e seu endereço, ao lado de requested_url e requested_at, de modo que a diferença entre a data solicitada e a captura servida seja visível. A Wayback Machine responde a uma data da qual não tem nenhuma captura com a mais próxima que detém.

O que valem os trechos

O texto contido em um documento digitalizado vem do reconhecimento óptico de caracteres. Um trecho carrega, portanto, os erros de leitura desse processo, e é servido tal como foi lido em vez de corrigido: uma palavra que se lê estranhamente é o que a máquina viu. Cite um trecho como o extrato de uma digitalização, e vincule o documento para que um leitor possa olhar a página.

Configuração

Cada variável é opcional. Elas se colocam no bloco env da configuração do cliente.

VariávelPadrãoO que faz
IA_USER_AGENTa identidade do projetoNomeia seu aplicativo junto ao arquivo, com um endereço para contatar uma pessoa.
IA_MIN_INTERVAL_MS1000Intervalo entre duas requisições, de 500 a 60000.
IA_TIMEOUT_MS20000Tempo limite de uma requisição, de 1000 a 120000.
IA_HISTORY_TIMEOUT_MS60000Tempo limite de um histórico Wayback Machine, de 5000 a 180000.
IA_MAX_RETRIES3Tentativas após uma falha passageira, de 0 a 8.
IA_CACHE_TTL_MS900000Duração durante a qual uma resposta permanece em memória, de 0 a 86400000.
IA_CACHE_MAX_ENTRIES200Respostas mantidas em memória por vez, de 1 a 5000.
IA_LOG_LEVELerrorsilent, error, info ou debug, escrito na saída de erro.

Um valor fora de seu intervalo cai no padrão, e o motivo é escrito na saída de erro.

Erros

Cada falha carrega um dos seis códigos, uma mensagem e, quando ajuda, uma indicação do próximo passo.

CódigoO que aconteceuO que fazer
not_foundO arquivo respondeu e não possui este documento.Verifique o identificador com search_items.
invalid_inputOs argumentos foram recusados antes de qualquer requisição.Leia a mensagem, que nomeia o argumento.
rate_limitedO arquivo pede que este cliente desacelere.Aguarde os segundos indicados e chame novamente com os mesmos argumentos. O documento ainda está lá.
parse_failureA resposta chegou em um formato ilegível aqui.Reporte em o rastreador de incidentes.
network_errorA requisição não foi concluída.Tente novamente em breve.
timeoutA requisição excedeu o tempo limite.Aumente IA_TIMEOUT_MS, ou IA_HISTORY_TIMEOUT_MS para um histórico.

Como biblioteca

A camada que lê o arquivo é publicada separadamente, com seu ritmo, seu cache e seus erros, sem protocolo anexado.

import { ArchiveClient } from "mcp-archiveorg/client";

const client = new ArchiveClient();
const { data, cached } = await client.searchItems({ query: "san francisco earthquake" });
console.log(data.total, cached);

Cada leitura responde { data, cached }, e levanta um erro com um dos seis códigos. O intervalo mínimo entre duas requisições também se aplica aqui.

Ritmo e atribuição

As requisições saem uma a uma com pelo menos um segundo entre elas, e o intervalo mínimo de meio segundo vale independentemente da configuração. O User-Agent sempre termina com a identidade do projeto e um endereço para contatar uma pessoa. O Internet Archive é uma biblioteca sem fins lucrativos, e uma busca no texto de seus documentos é uma das questões mais custosas que ele processa.

Cada resultado traz o endereço da página de onde foi lido. Os documentos pertencem às pessoas e instituições que os depositaram, sob as condições que cada ficha indica em license_url.

Este MCP é um projeto não oficial, sem afiliação ao Internet Archive.

Privacidade

Este servidor não coleta nada sobre você e não envia nada ao seu autor. Ele roda na sua máquina, anexa apenas archive.org, web.archive.org e openlibrary.org, mantém suas respostas na memória enquanto roda, e não grava nada no disco. PRIVACY.md diz o que uma requisição carrega e quais configurações mudam isso.

Desenvolvimento

npm install
npm run build:fixtures
npm test
npm run check

Os testes são executados em fixtures geradas e não emitem nenhuma requisição. A suíte ao vivo, npm run test:live, emite uma requisição por rota e roda todas as noites contra o próprio arquivo.

Contribuindo

Anomalias, perguntas e ideias têm seu lugar em o rastreador de incidentes. As propostas de modificação são bem-vindas; abrir um ticket primeiro ajuda a concordar sobre a forma da mudança. Veja CONTRIBUTING.md.

Licença

MIT, veja LICENSE. Os documentos pertencem àqueles que os depositaram, sob as condições que cada ficha indica.