Internet Archive
Pesquise dentro de livros digitalizados, navegue pelo catálogo do Internet Archive e leia capturas do Wayback.
Documentação
mcp-archiveorg
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.
Instalação
Instalação com um clique
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
| Ferramenta | O que faz |
|---|---|
search_inside | Pesquisa as palavras dentro dos documentos digitalizados do arquivo. |
search_items | Pesquisa o catálogo por título, criador, assunto e tipo de mídia. |
get_item | Lê o registro de um item, seus arquivos e sua licença. |
search_books | Encontra livros por assunto, local, período, pessoa, extensão ou ano. |
list_snapshots | Lista as capturas que a Wayback Machine possui para um endereço. |
get_snapshot | Lê 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
query | string, 2 a 300 caracteres | sim | A frase a procurar dentro dos documentos. |
limit | inteiro, 1 a 50, padrão 10 | não | Correspondências a servir. |
page | inteiro, 1 a 100, padrão 1 | não | Qual página de correspondências. |
max_excerpt_chars | inteiro, 80 a 1200, padrão 300 | não | Quanto de uma passagem servir. |
max_excerpts_per_match | inteiro, 1 a 10, padrão 3 | não | Passagens 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
query | string, 1 a 300 caracteres | sim | Palavras a procurar no catálogo. |
media_type | texts, movies, audio, image, software, data ou web | não | O tipo de coisa a manter. |
year_from | inteiro, 1 a 2200 | não | Ano mais antigo. |
year_to | inteiro, 1 a 2200 | não | Ano mais recente. |
sort | relevance, downloads, newest, oldest ou title, padrão relevance | não | Como as linhas são ordenadas. |
limit | inteiro, 1 a 50, padrão 10 | não | Linhas a servir. |
page | inteiro, 1 a 100, padrão 1 | não | Qual 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
identifier | string, 1 a 200 caracteres | sim | O identificador que uma linha de pesquisa carrega. |
sections | array de basic, files, full_metadata, padrão ["basic"] | não | Quais partes retornar. |
file_format | string, até 60 caracteres | não | Manter os arquivos de um formato. |
max_files | inteiro, 1 a 200, padrão 25 | não | Limite nos arquivos retornados. |
max_description_chars | inteiro, 100 a 20000, padrão 2000 | não | Quanto 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
query | string, 2 a 300 caracteres | não | Texto livre, quando houver. |
subject | string, 2 a 100 caracteres | não | Um assunto sob o qual o índice arquiva obras. |
place | string, 2 a 100 caracteres | não | Um local sobre o qual uma obra trata. |
time | string, 2 a 100 caracteres | não | Um período sobre o qual uma obra trata. |
person | string, 2 a 100 caracteres | não | Uma pessoa sobre a qual uma obra trata. |
language | string, 2 a 20 caracteres | não | O idioma da obra. |
year_from | inteiro, 1 a 2200 | não | Primeira publicação mais antiga. |
year_to | inteiro, 1 a 2200 | não | Primeira publicação mais recente. |
pages_min | inteiro, 1 a 100000 | não | Menor obra aceitável. |
pages_max | inteiro, 1 a 100000 | não | Maior obra aceitável. |
sort | relevance, rating, readers, newest ou oldest, padrão relevance | não | Como as linhas são ordenadas. |
limit | inteiro, 1 a 50, padrão 10 | não | Linhas a servir. |
page | inteiro, 1 a 100, padrão 1 | não | Qual 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
url | string, 3 a 2000 caracteres | sim | O endereço a consultar. |
limit | inteiro, 1 a 100, padrão 20 | não | Capturas a servir. |
cursor | string, até 500 caracteres | não | O 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
url | string, 3 a 2000 caracteres | sim | O endereço a consultar. |
at | YYYY-MM-DD ou um timestamp ISO | não | A 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ável | Padrão | O que faz |
|---|---|---|
IA_USER_AGENT | a identidade do projeto | Nomeia seu aplicativo para o arquivo, com um endereço onde uma pessoa pode ser contatada. |
IA_MIN_INTERVAL_MS | 1000 | Intervalo entre duas solicitações, de 500 a 60000. |
IA_TIMEOUT_MS | 20000 | Prazo para uma solicitação, de 1000 a 120000. |
IA_HISTORY_TIMEOUT_MS | 60000 | Prazo para um histórico da Wayback Machine, de 5000 a 180000. |
IA_MAX_RETRIES | 3 | Tentativas após uma falha transitória, de 0 a 8. |
IA_CACHE_TTL_MS | 900000 | Por quanto tempo uma resposta permanece na memória, de 0 a 86400000. |
IA_CACHE_MAX_ENTRIES | 200 | Respostas mantidas na memória de uma vez, de 1 a 5000. |
IA_LOG_LEVEL | error | silent, 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ódigo | O que aconteceu | O que fazer |
|---|---|---|
not_found | O arquivo respondeu e não possui tal item. | Verifique o identificador com search_items. |
invalid_input | Os argumentos foram recusados antes de qualquer solicitação sair. | Leia a mensagem, que nomeia o argumento. |
rate_limited | O 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_failure | A resposta chegou em um formato que este cliente não consegue ler. | Reporte em o rastreador de problemas. |
network_error | A solicitação não foi concluída. | Tente novamente em breve. |
timeout | A 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)
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
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
| Ferramenta | O que faz |
|---|---|
search_inside | Pesquisa nas palavras contidas nos documentos digitalizados. |
search_items | Pesquisa no catálogo por título, autor, assunto e tipo de mídia. |
get_item | Lê a ficha de um documento, seus arquivos e sua licença. |
search_books | Encontra livros por assunto, local, período, pessoa, extensão ou ano. |
list_snapshots | Lista as capturas que a Wayback Machine guarda de um endereço. |
get_snapshot | Lê 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
query | string, 2 a 300 caracteres | sim | A frase a pesquisar nos documentos. |
limit | inteiro, 1 a 50, padrão 10 | não | Correspondências a servir. |
page | inteiro, 1 a 100, padrão 1 | não | Qual página de correspondências. |
max_excerpt_chars | inteiro, 80 a 1200, padrão 300 | não | O comprimento do trecho a servir. |
max_excerpts_per_match | inteiro, 1 a 10, padrão 3 | não | Trechos 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
query | string, 1 a 300 caracteres | sim | As palavras a buscar no catálogo. |
media_type | texts, movies, audio, image, software, data ou web | não | O tipo de coisa a manter. |
year_from | inteiro, 1 a 2200 | não | Ano mais antigo. |
year_to | inteiro, 1 a 2200 | não | Ano mais recente. |
sort | relevance, downloads, newest, oldest ou title, padrão relevance | não | A ordem das linhas. |
limit | inteiro, 1 a 50, padrão 10 | não | Linhas a servir. |
page | inteiro, 1 a 100, padrão 1 | não | Qual 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
identifier | string, 1 a 200 caracteres | sim | O identificador que uma linha carrega. |
sections | array de basic, files, full_metadata, padrão ["basic"] | não | As partes a retornar. |
file_format | string, até 60 caracteres | não | Manter apenas arquivos de um formato. |
max_files | inteiro, 1 a 200, padrão 25 | não | Limite nos arquivos retornados. |
max_description_chars | inteiro, 100 a 20000, padrão 2000 | não | O 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
query | string, 2 a 300 caracteres | não | Texto livre, quando houver. |
subject | string, 2 a 100 caracteres | não | Um assunto sob o qual o índice classifica. |
place | string, 2 a 100 caracteres | não | Um lugar sobre o qual uma obra trata. |
time | string, 2 a 100 caracteres | não | Um período sobre o qual uma obra trata. |
person | string, 2 a 100 caracteres | não | Uma pessoa sobre a qual uma obra trata. |
language | string, 2 a 20 caracteres | não | O idioma da obra. |
year_from | inteiro, 1 a 2200 | não | Primeira publicação mais antiga. |
year_to | inteiro, 1 a 2200 | não | Primeira publicação mais recente. |
pages_min | inteiro, 1 a 100000 | não | Obra mais curta aceitável. |
pages_max | inteiro, 1 a 100000 | não | Obra mais longa aceitável. |
sort | relevance, rating, readers, newest ou oldest, padrão relevance | não | A ordem das linhas. |
limit | inteiro, 1 a 50, padrão 10 | não | Linhas a servir. |
page | inteiro, 1 a 100, padrão 1 | não | Qual 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
url | string, 3 a 2000 caracteres | sim | O endereço a consultar. |
limit | inteiro, 1 a 100, padrão 20 | não | Capturas a servir. |
cursor | string, até 500 caracteres | não | O 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.
| Argumento | Tipo | Obrigatório | O que faz |
|---|---|---|---|
url | string, 3 a 2000 caracteres | sim | O endereço a consultar. |
at | AAAA-MM-JJ ou timestamp ISO | não | A 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ável | Padrão | O que faz |
|---|---|---|
IA_USER_AGENT | a identidade do projeto | Nomeia seu aplicativo junto ao arquivo, com um endereço para contatar uma pessoa. |
IA_MIN_INTERVAL_MS | 1000 | Intervalo entre duas requisições, de 500 a 60000. |
IA_TIMEOUT_MS | 20000 | Tempo limite de uma requisição, de 1000 a 120000. |
IA_HISTORY_TIMEOUT_MS | 60000 | Tempo limite de um histórico Wayback Machine, de 5000 a 180000. |
IA_MAX_RETRIES | 3 | Tentativas após uma falha passageira, de 0 a 8. |
IA_CACHE_TTL_MS | 900000 | Duração durante a qual uma resposta permanece em memória, de 0 a 86400000. |
IA_CACHE_MAX_ENTRIES | 200 | Respostas mantidas em memória por vez, de 1 a 5000. |
IA_LOG_LEVEL | error | silent, 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ódigo | O que aconteceu | O que fazer |
|---|---|---|
not_found | O arquivo respondeu e não possui este documento. | Verifique o identificador com search_items. |
invalid_input | Os argumentos foram recusados antes de qualquer requisição. | Leia a mensagem, que nomeia o argumento. |
rate_limited | O arquivo pede que este cliente desacelere. | Aguarde os segundos indicados e chame novamente com os mesmos argumentos. O documento ainda está lá. |
parse_failure | A resposta chegou em um formato ilegível aqui. | Reporte em o rastreador de incidentes. |
network_error | A requisição não foi concluída. | Tente novamente em breve. |
timeout | A 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.