Internet Archive

Busca dentro de libros digitalizados, explora el catálogo de Internet Archive y lee capturas de Wayback.

Documentación

mcp-archiveorg

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

El Internet Archive es una biblioteca sin fines de lucro que conserva lo que el mundo publica: libros escaneados, películas, música grabada, radio, software y las páginas de la propia web, capturadas una y otra vez desde 1996 en la Wayback Machine. Millones de sus libros y documentos han pasado por reconocimiento óptico de caracteres, de modo que las palabras en su interior pueden buscarse, y el índice de Open Library que lo acompaña describe obras, sus ediciones y sus temas.

Este servidor conecta un cliente de chat con esa biblioteca. Puedes buscar el texto completo dentro de sus documentos, buscar en su catálogo de elementos, leer el registro de un elemento y sus archivos, buscar un libro por tema, lugar, época o persona, y leer la web tal como estaba en un día determinado. No requiere clave de API ni cuenta.

Versión francesa


Instalación

Instalación en un clic

Install in Cursor Install in VS Code

Claude Code

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

Claude Desktop, Cursor y cualquier cliente que use el formato de configuración estándar

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

Se requiere Node 24 o posterior, y no es necesario establecer ninguna variable de entorno.

Con Docker

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

-i mantiene abierta la entrada estándar, que es por donde viaja el protocolo, y -t se omite porque una TTY reescribe el flujo. El contenedor necesita HTTPS de salida hacia archive.org, web.archive.org y openlibrary.org, y nada más: sin volumen, sin puerto, sin credenciales.

Paquete, sin npm

Descarga mcp-archiveorg-2.0.2.mcpb desde la última versión y ábrelo. Un cliente que admita paquetes MCP lo instala por sí solo, sin npm y sin archivo de configuración que editar. El paquete incluye sus dependencias, así que no se descarga nada en el momento de la instalación.

Lo que puedes preguntar

  • "¿Qué libros mencionan el faro de Beaumont?"
  • "Encuéntrame elementos sobre el terremoto de San Francisco de 1906."
  • "¿Qué archivos contiene ese elemento y bajo qué licencia está?"
  • "Encuéntrame libros sobre apicultura en Francia publicados antes de 1900."
  • "¿Cómo se veía ese sitio web en marzo de 2001?"

El camino habitual va de una búsqueda a un registro: una fila lleva un identifier, y get_item lo lee.

Herramientas

HerramientaQué hace
search_insideBusca las palabras dentro de los documentos escaneados del archivo.
search_itemsBusca en el catálogo por título, creador, tema y tipo de medio.
get_itemLee el registro de un elemento, sus archivos y su licencia.
search_booksEncuentra libros por tema, lugar, época, persona, extensión o año.
list_snapshotsEnumera las capturas que la Wayback Machine tiene para una dirección.
get_snapshotLee una captura de una dirección, en o cerca de una fecha.

search_inside

Busca el texto dentro de los documentos del archivo, que salió de la página mediante reconocimiento óptico de caracteres, por lo que un pasaje puede contener errores de lectura de ese proceso.

ArgumentoTipoObligatorioQué hace
querycadena, de 2 a 300 caracteresLa frase a buscar dentro de los documentos.
limitentero, de 1 a 50, por defecto 10noCoincidencias a servir.
pageentero, de 1 a 100, por defecto 1noQué página de coincidencias.
max_excerpt_charsentero, de 80 a 1200, por defecto 300noCuánto de un pasaje servir.
max_excerpts_per_matchentero, de 1 a 10, por defecto 3noPasajes servidos por documento coincidente.

A cambio: hits, cada uno con identifier, que get_item toma; title, creator y year; excerpts, los pasajes tal como la máquina los leyó de la página; matched_file, que nombra lo que realmente contiene el pasaje; y source_url. inside_container es verdadero cuando el elemento agrupa varios documentos y el pasaje está en uno de ellos, en cuyo caso el título, el creador y el año pertenecen al contenedor.

total cuenta documentos y pagina. Es un número de documentos y la última página de un conjunto de coincidencias es más corta que la primera. No hay número de página disponible: el índice informa dónde está el texto dentro del elemento, que es 1 en casi todas las coincidencias, así que nada aquí indica una página de un libro y ningún enlace afirma una.

search_items

Busca en el propio catálogo, en todo tipo de cosas que el archivo conserva.

ArgumentoTipoObligatorioQué hace
querycadena, de 1 a 300 caracteresPalabras a buscar en el catálogo.
media_typetexts, movies, audio, image, software, data o webnoEl tipo de cosa a conservar.
year_fromentero, de 1 a 2200noAño más temprano.
year_toentero, de 1 a 2200noAño más reciente.
sortrelevance, downloads, newest, oldest o title, por defecto relevancenoCómo se ordenan las filas.
limitentero, de 1 a 50, por defecto 10noFilas a servir.
pageentero, de 1 a 100, por defecto 1noQué página de filas.

A cambio: items, cada uno con identifier, title, creator, year, media_type, downloads y source_url; un campo que el registro deja vacío es null. total cuenta los elementos que coinciden en todo el catálogo, que es más que el número devuelto.

get_item

Lee el registro de un elemento. Las partes más pesadas se solicitan en lugar de servirse por defecto, ya que un registro puede ser largo.

ArgumentoTipoObligatorioQué hace
identifiercadena, de 1 a 200 caracteresEl identificador que lleva una fila de búsqueda.
sectionsmatriz de basic, files, full_metadata, por defecto ["basic"]noQué partes devolver.
file_formatcadena, hasta 60 caracteresnoConservar los archivos de un formato.
max_filesentero, de 1 a 200, por defecto 25noLímite de archivos devueltos.
max_description_charsentero, de 100 a 20000, por defecto 2000noCuánto de la descripción servir.

A cambio: el elemento con su title, creator, year, media_type y source_url, más description, date, publisher, language, collections y license_url, cada null donde el registro no indica nada. file_count cuenta los archivos que tiene el elemento, sea lo que sea lo que esta respuesta devolvió, y total_bytes su peso. files y full_metadata están presentes solo cuando se solicitan en sections.

search_books

Encuentra libros a través del índice de obras junto al archivo, que describe una obra y sus ediciones en lugar de una copia escaneada.

ArgumentoTipoObligatorioQué hace
querycadena, de 2 a 300 caracteresnoTexto libre, cuando lo hay.
subjectcadena, de 2 a 100 caracteresnoUn tema bajo el que el índice archiva obras.
placecadena, de 2 a 100 caracteresnoUn lugar sobre el que trata una obra.
timecadena, de 2 a 100 caracteresnoUna época sobre la que trata una obra.
personcadena, de 2 a 100 caracteresnoUna persona sobre la que trata una obra.
languagecadena, de 2 a 20 caracteresnoEl idioma de la obra.
year_fromentero, de 1 a 2200noPrimera publicación más temprana.
year_toentero, de 1 a 2200noPrimera publicación más reciente.
pages_minentero, de 1 a 100000noObra aceptable más corta.
pages_maxentero, de 1 a 100000noObra aceptable más larga.
sortrelevance, rating, readers, newest o oldest, por defecto relevancenoCómo se ordenan las filas.
limitentero, de 1 a 50, por defecto 10noFilas a servir.
pageentero, de 1 a 100, por defecto 1noQué página de filas.

A cambio: books, cada uno con title, authors, first_published_year, edition_count, archive_identifiers para las copias escaneadas que el archivo conserva, scan_count, page_count como mediana entre ediciones, subjects y source_url. searched_for dice en palabras qué responde esta respuesta, texto libre y cada criterio aplicado, y query es null cuando la búsqueda se hizo solo con criterios. total cuenta las obras que coinciden.

list_snapshots

Lista las capturas que la Wayback Machine guarda de una dirección.

ArgumentoTipoObligatorioQué hace
urlcadena, de 3 a 2000 caracteresLa dirección a consultar.
limitentero, de 1 a 100, por defecto 20noCapturas a servir.
cursorcadena, hasta 500 caracteresnoEl next_cursor que nombró una respuesta anterior.

A cambio: snapshots, cada una con su captured_at como marca de tiempo ISO en UTC, el url de la captura en sí y el status que registró el rastreo. first y last describen esta respuesta y no todo el historial, y next_cursor continúa la lista.

get_snapshot

Lee una captura de una dirección, en una fecha o cerca de ella.

ArgumentoTipoObligatorioQué hace
urlcadena, de 3 a 2000 caracteresLa dirección a consultar.
atYYYY-MM-DD o una marca de tiempo ISOnoLa fecha a la que apuntar. La captura más reciente por defecto.

A cambio: el snapshot con su captured_at y su dirección, junto al requested_url y requested_at, de modo que la distancia entre la fecha solicitada y la captura servida sea visible. La Wayback Machine responde a una fecha sin captura con la más cercana que tenga.

Qué valen los extractos

El texto dentro de un documento escaneado salió de la página mediante reconocimiento óptico de caracteres. Un pasaje, por tanto, lleva los errores de lectura de ese proceso, y se sirve tal como se leyó, sin corregir: una palabra que se lee de forma extraña es lo que vio la máquina. Cita un pasaje como extracto de un escaneo y enlaza el elemento para que quien lea pueda ver la página.

Configuración

Todas las variables son opcionales. Configúralas en el bloque env de la configuración de tu cliente.

VariablePor defectoQué hace
IA_USER_AGENTla identidad del proyectoNombra tu aplicación ante el archivo, con una dirección donde se pueda contactar a una persona.
IA_MIN_INTERVAL_MS1000Intervalo entre dos solicitudes, de 500 a 60000.
IA_TIMEOUT_MS20000Plazo para una solicitud, de 1000 a 120000.
IA_HISTORY_TIMEOUT_MS60000Plazo para un historial de la Wayback Machine, de 5000 a 180000.
IA_MAX_RETRIES3Intentos tras un fallo transitorio, de 0 a 8.
IA_CACHE_TTL_MS900000Cuánto tiempo permanece una respuesta en memoria, de 0 a 86400000.
IA_CACHE_MAX_ENTRIES200Respuestas retenidas en memoria a la vez, de 1 a 5000.
IA_LOG_LEVELerrorsilent, error, info o debug, escritos en stderr.

Un valor fuera de su rango vuelve al valor por defecto, y el motivo se escribe en stderr.

Errores

Cada fallo lleva uno de seis códigos, un mensaje y, cuando ayuda, una pista que indica el siguiente paso.

CódigoQué ocurrióQué hacer
not_foundEl archivo respondió y no tiene ese elemento.Comprueba el identificador con search_items.
invalid_inputLos argumentos fueron rechazados antes de enviar ninguna solicitud.Lee el mensaje, que nombra el argumento.
rate_limitedEl archivo pidió a este cliente que fuera más lento.Espera los segundos que indique la pista y vuelve a llamar con los mismos argumentos. El elemento sigue ahí.
parse_failureLa respuesta llegó en un formato que este cliente no puede leer.Repórtalo en el rastreador de incidencias.
network_errorLa solicitud no se completó.Inténtalo de nuevo en breve.
timeoutLa solicitud superó su plazo.Aumenta IA_TIMEOUT_MS, o IA_HISTORY_TIMEOUT_MS para un historial de capturas.

Como biblioteca

La capa que lee el archivo se publica por separado, con su ritmo, su caché y sus errores, y sin protocolo asociado.

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 lectura responde { data, cached } y lanza un error con uno de los seis códigos. El intervalo mínimo entre dos solicitudes también se aplica aquí.

Ritmo y atribución

Las solicitudes salen de una en una con al menos un segundo entre ellas, y el mínimo de medio segundo se mantiene sin importar cómo esté configurado el servidor. El User-Agent siempre termina con la identidad del proyecto y una dirección donde se pueda contactar a una persona. El Internet Archive es una biblioteca sin fines de lucro, y una búsqueda dentro de sus documentos es una de las preguntas más costosas que responde.

Cada resultado lleva la dirección de la página de la que se leyó. Los elementos pertenecen a las personas e instituciones que los depositaron, bajo los términos que cada registro indica en license_url.

Este servidor MCP es un proyecto no oficial, sin afiliación con el Internet Archive.

Privacidad

Este servidor no recopila nada sobre ti y no envía nada a su autor. Se ejecuta en tu máquina, contacta con archive.org, web.archive.org y openlibrary.org y nada más, mantiene sus respuestas en memoria mientras se ejecuta y no escribe nada en disco. PRIVACY.md indica qué lleva una solicitud y qué ajustes cambian algo de eso.

Desarrollo

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

Las pruebas se ejecutan contra datos generados y no hacen ninguna solicitud de red. La suite en vivo, npm run test:live, hace una solicitud por ruta y se ejecuta cada noche contra el propio archivo.

Contribuciones

Errores, preguntas e ideas van en el rastreador de incidencias. Las solicitudes de extracción son bienvenidas; abrir una incidencia primero ayuda a acordar la forma del cambio. Consulta CONTRIBUTING.md.

Licencia

MIT, consulta LICENSE. Los elementos pertenecen a sus depositantes, bajo los términos que cada registro indica.


mcp-archiveorg (français)

English version

L'Internet Archive est une bibliothèque à but non lucratif qui conserve ce que le monde publie : livres numérisés, films, musique enregistrée, radio, logiciels, et les pages du web elles-mêmes, capturées encore et encore depuis 1996 dans la Wayback Machine. Des millions de ses livres et documents sont passés par la reconnaissance optique de caractères, si bien que les mots qu'ils contiennent sont cherchables, et l'index Open Library qui la côtoie décrit les œuvres, leurs éditions et leurs sujets.

Ce serveur relie un client de conversation à cette bibliothèque. On peut y chercher dans le texte intégral de ses documents, chercher dans son catalogue, lire la fiche d'un document et ses fichiers, trouver un livre par sujet, lieu, période ou personne, et lire le web tel qu'il était un jour donné. Aucune clé d'API, aucun compte.

Installation

Installation en un clic

Install in Cursor Install in VS Code

Claude Code

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

Claude Desktop, Cursor, et tout client au format de configuration standard

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

Node 24 ou plus récent est nécessaire, et aucune variable d'environnement n'est à renseigner.

Avec Docker

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

-i garde l'entrée standard ouverte, qui est le canal du protocole, et -t est omis parce qu'un TTY réécrit le flux. Le conteneur a besoin d'un accès HTTPS sortant vers archive.org, web.archive.org et openlibrary.org, et de rien d'autre : aucun volume, aucun port, aucun identifiant.

Bundle, sans npm

Téléchargez mcp-archiveorg-2.0.2.mcpb depuis la dernière publication et ouvrez-le. Un client qui gère les bundles MCP l'installe seul, sans npm et sans fichier de configuration à modifier. Le bundle emporte ses dépendances, donc rien n'est téléchargé à l'installation.

Ce qu'on peut demander

  • « Quels livres mentionnent le phare de Beaumont ? »
  • « Trouve-moi des documents sur le tremblement de terre de San Francisco en 1906. »
  • « Quels fichiers contient ce document, et sous quelle licence ? »
  • « Trouve-moi des livres sur l'apiculture en France publiés avant 1900. »
  • « À quoi ressemblait ce site en mars 2001 ? »

Le chemin ordinaire va d'une recherche à une fiche : une ligne porte un identifier, et get_item le lit.

Les outils

OutilCe qu'il fait
search_insideCherche dans les mots contenus dans les documents numérisés.
search_itemsCherche dans le catalogue par titre, auteur, sujet et type de média.
get_itemLit la fiche d'un document, ses fichiers et sa licence.
search_booksTrouve des livres par sujet, lieu, période, personne, longueur ou année.
list_snapshotsListe les captures que la Wayback Machine garde d'une adresse.
get_snapshotLit une capture d'une adresse, à une date ou près d'elle.

search_inside

Cherche dans le texte contenu dans les documents, texte issu de la reconnaissance optique de caractères, donc un passage porte les erreurs de lecture de ce procédé.

ArgumentTypeRequisCe qu'il fait
querychaîne, 2 à 300 caractèresouiLa phrase à chercher dans les documents.
limitentier, 1 à 50, défaut 10nonCorrespondances à servir.
pageentier, 1 à 100, défaut 1nonQuelle page de correspondances.
max_excerpt_charsentier, 80 à 1200, défaut 300nonLa longueur de passage à servir.
max_excerpts_per_matchentier, 1 à 10, défaut 3nonPassages servis par document correspondant.
En retour : hits, chacun portant identifier, que get_item reprend ;
title, creator et year ; excerpts, les passages tels qu'une machine les a
lus sur la page ; matched_file, qui nomme ce qui contient réellement le
passage ; et source_url. inside_container est vrai quand le document en
rassemble plusieurs et que le passage se trouve dans l'un d'eux, auquel cas le
titre, l'auteur et l'année appartiennent au contenant.

total compte des documents, et il pagine. C'est un nombre de documents et la dernière page d'un ensemble est plus courte que la première. Aucun numéro de page n'est disponible : l'index indique où le texte se trouve dans le document, ce qui vaut 1 sur presque toutes les correspondances, donc rien ici n'énonce une page de livre et aucun lien n'en revendique.

search_items

Cherche dans le catalogue lui-même, à travers tout ce que l'archive conserve.

ArgumentTypeRequisCe qu'il fait
querychaîne, 1 à 300 caractèresouiLes mots à chercher au catalogue.
media_typetexts, movies, audio, image, software, data ou webnonLe type de chose à garder.
year_fromentier, 1 à 2200nonAnnée la plus ancienne.
year_toentier, 1 à 2200nonAnnée la plus récente.
sortrelevance, downloads, newest, oldest ou title, défaut relevancenonL'ordre des lignes.
limitentier, 1 à 50, défaut 10nonLignes à servir.
pageentier, 1 à 100, défaut 1nonQuelle page de lignes.

En retour : items, chacun portant identifier, title, creator, year, media_type, downloads et source_url, un champ que la fiche laisse vide valant null. total compte les documents correspondants dans tout le catalogue, ce qui dépasse le nombre rendu.

get_item

Lit la fiche d'un document. Les parties lourdes se demandent au lieu d'être servies par défaut, une fiche pouvant être longue.

ArgumentTypeRequisCe qu'il fait
identifierchaîne, 1 à 200 caractèresouiL'identifiant que porte une ligne.
sectionstableau de basic, files, full_metadata, défaut ["basic"]nonLes parties à rendre.
file_formatchaîne, jusqu'à 60 caractèresnonNe garder que les fichiers d'un format.
max_filesentier, 1 à 200, défaut 25nonPlafond sur les fichiers rendus.
max_description_charsentier, 100 à 20000, défaut 2000nonLa longueur de description à servir.

En retour : le document avec son title, creator, year, media_type et source_url, plus description, date, publisher, language, collections et license_url, chacun null là où la fiche n'indique rien. file_count compte les fichiers que le document contient quel que soit ce que cette réponse a rendu, et total_bytes leur poids. files et full_metadata ne sont là que lorsqu'ils sont demandés dans sections.

search_books

Trouve des livres via l'index d'œuvres qui côtoie l'archive, lequel décrit une œuvre et ses éditions plutôt qu'un exemplaire numérisé.

ArgumentTypeRequisCe qu'il fait
querychaîne, 2 à 300 caractèresnonDu texte libre, quand il y en a.
subjectchaîne, 2 à 100 caractèresnonUn sujet sous lequel l'index classe.
placechaîne, 2 à 100 caractèresnonUn lieu dont une œuvre traite.
timechaîne, 2 à 100 caractèresnonUne période dont une œuvre traite.
personchaîne, 2 à 100 caractèresnonUne personne dont une œuvre traite.
languagechaîne, 2 à 20 caractèresnonLa langue de l'œuvre.
year_fromentier, 1 à 2200nonPremière publication la plus ancienne.
year_toentier, 1 à 2200nonPremière publication la plus récente.
pages_minentier, 1 à 100000nonŒuvre la plus courte acceptable.
pages_maxentier, 1 à 100000nonŒuvre la plus longue acceptable.
sortrelevance, rating, readers, newest ou oldest, défaut relevancenonL'ordre des lignes.
limitentier, 1 à 50, défaut 10nonLignes à servir.
pageentier, 1 à 100, défaut 1nonQuelle page de lignes.

En retour : books, chacun portant title, authors, first_published_year, edition_count, archive_identifiers pour les exemplaires numérisés que l'archive détient, scan_count, page_count comme médiane sur les éditions, subjects et source_url. searched_for dit en mots ce à quoi cette réponse répond, texte libre et chaque critère appliqué, et query vaut null quand la recherche était faite de critères seuls. total compte les œuvres correspondantes.

list_snapshots

Liste les captures que la Wayback Machine garde d'une adresse.

ArgumentTypeRequisCe qu'il fait
urlchaîne, 3 à 2000 caractèresouiL'adresse à consulter.
limitentier, 1 à 100, défaut 20nonCaptures à servir.
cursorchaîne, jusqu'à 500 caractèresnonLe next_cursor nommé par une réponse précédente.

En retour : snapshots, chacune avec son captured_at en horodatage ISO UTC, l'url de la capture elle-même, et le status que la collecte a enregistré. first et last décrivent cette réponse plutôt que tout l'historique, et next_cursor poursuit la liste.

get_snapshot

Lit une capture d'une adresse, à une date ou près d'elle.

ArgumentTypeRequisCe qu'il fait
urlchaîne, 3 à 2000 caractèresouiL'adresse à consulter.
atAAAA-MM-JJ ou horodatage ISOnonLa date visée. La capture la plus récente par défaut.

En retour : la snapshot avec son captured_at et son adresse, à côté de requested_url et requested_at, si bien que l'écart entre la date demandée et la capture servie est visible. La Wayback Machine répond à une date dont elle n'a aucune capture par la plus proche qu'elle détient.

Ce que valent les extraits

Le texte contenu dans un document numérisé est issu de la reconnaissance optique de caractères. Un passage porte donc les erreurs de lecture de ce procédé, et il est servi tel qu'il a été lu plutôt que corrigé : un mot qui se lit bizarrement est ce que la machine a vu. Citez un passage comme l'extrait d'une numérisation, et liez le document pour qu'un lecteur puisse regarder la page.

Configuration

Chaque variable est facultative. Elles se posent dans le bloc env de la configuration du client.

VariableDéfautCe qu'elle fait
IA_USER_AGENTl'identité du projetNomme votre application auprès de l'archive, avec une adresse où joindre une personne.
IA_MIN_INTERVAL_MS1000Écart entre deux requêtes, de 500 à 60000.
IA_TIMEOUT_MS20000Délai d'une requête, de 1000 à 120000.
IA_HISTORY_TIMEOUT_MS60000Délai d'un historique Wayback Machine, de 5000 à 180000.
IA_MAX_RETRIES3Tentatives après un échec passager, de 0 à 8.
IA_CACHE_TTL_MS900000Durée pendant laquelle une réponse reste en mémoire, de 0 à 86400000.
IA_CACHE_MAX_ENTRIES200Réponses gardées en mémoire à la fois, de 1 à 5000.
IA_LOG_LEVELerrorsilent, error, info ou debug, écrit sur la sortie d'erreur.

Une valeur hors de sa plage retombe sur le défaut, et la raison est écrite sur la sortie d'erreur.

Erreurs

Chaque échec porte un des six codes, un message, et quand cela aide une indication du geste suivant.

CódigoQué ocurrióQué hacer
not_foundEl archivo respondió y no tiene este documento.Verifique el identificador con search_items.
invalid_inputLos argumentos fueron rechazados antes de cualquier solicitud.Lea el mensaje, que nombra el argumento.
rate_limitedEl archivo pide a este cliente que se ralentice.Espere los segundos indicados y vuelva a llamar con los mismos argumentos. El documento sigue ahí.
parse_failureLa respuesta llegó en una forma ilegible aquí.Repórtelo en el seguimiento de incidentes.
network_errorLa solicitud no se completó.Reintente en breve.
timeoutLa solicitud superó su tiempo de espera.Aumente IA_TIMEOUT_MS, o IA_HISTORY_TIMEOUT_MS para un historial.

Como biblioteca

La capa que lee el archivo se publica sola, con su ritmo, su caché y sus errores, sin protocolo adjunto.

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 lectura responde { data, cached }, y lanza un error con uno de los seis códigos. El intervalo mínimo entre dos solicitudes también se aplica aquí.

Ritmo y atribución

Las solicitudes salen una a una con al menos un segundo entre ellas, y el intervalo de medio segundo se mantiene independientemente de la configuración. El User-Agent siempre termina con la identidad del proyecto y una dirección donde contactar a una persona. Internet Archive es una biblioteca sin fines de lucro, y una búsqueda en el texto de sus documentos es una de las preguntas más costosas que maneja.

Cada resultado lleva la dirección de la página de donde se leyó. Los documentos pertenecen a las personas e instituciones que los depositaron, bajo las condiciones que cada ficha indica en license_url.

Este MCP es un proyecto no oficial, sin afiliación con Internet Archive.

Privacidad

Este servidor no recopila nada sobre usted y no envía nada a su autor. Se ejecuta en su máquina, solo adjunta archive.org, web.archive.org y openlibrary.org, guarda sus respuestas en memoria mientras se ejecuta, y no escribe nada en el disco. PRIVACY.md dice qué lleva una solicitud y qué ajustes cambian eso.

Desarrollo

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

Las pruebas se ejecutan sobre fixtures generados y no emiten ninguna solicitud. La suite en vivo, npm run test:live, emite una solicitud por ruta y se ejecuta cada noche contra el archivo mismo.

Contribuir

Las anomalías, preguntas e ideas tienen su lugar en el seguimiento de incidentes. Las propuestas de modificación son bienvenidas; abrir un ticket primero ayuda a ponerse de acuerdo sobre la forma del cambio. Ver CONTRIBUTING.md.

Licencia

MIT, ver LICENSE. Los documentos pertenecen a quienes los depositaron, bajo las condiciones que cada ficha indica.