Internet Archive
Busca dentro de libros digitalizados, explora el catálogo de Internet Archive y lee capturas de Wayback.
Documentación
mcp-archiveorg
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.
Instalación
Instalación en un clic
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
| Herramienta | Qué hace |
|---|---|
search_inside | Busca las palabras dentro de los documentos escaneados del archivo. |
search_items | Busca en el catálogo por título, creador, tema y tipo de medio. |
get_item | Lee el registro de un elemento, sus archivos y su licencia. |
search_books | Encuentra libros por tema, lugar, época, persona, extensión o año. |
list_snapshots | Enumera las capturas que la Wayback Machine tiene para una dirección. |
get_snapshot | Lee 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.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
query | cadena, de 2 a 300 caracteres | sí | La frase a buscar dentro de los documentos. |
limit | entero, de 1 a 50, por defecto 10 | no | Coincidencias a servir. |
page | entero, de 1 a 100, por defecto 1 | no | Qué página de coincidencias. |
max_excerpt_chars | entero, de 80 a 1200, por defecto 300 | no | Cuánto de un pasaje servir. |
max_excerpts_per_match | entero, de 1 a 10, por defecto 3 | no | Pasajes 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.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
query | cadena, de 1 a 300 caracteres | sí | Palabras a buscar en el catálogo. |
media_type | texts, movies, audio, image, software, data o web | no | El tipo de cosa a conservar. |
year_from | entero, de 1 a 2200 | no | Año más temprano. |
year_to | entero, de 1 a 2200 | no | Año más reciente. |
sort | relevance, downloads, newest, oldest o title, por defecto relevance | no | Cómo se ordenan las filas. |
limit | entero, de 1 a 50, por defecto 10 | no | Filas a servir. |
page | entero, de 1 a 100, por defecto 1 | no | Qué 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.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
identifier | cadena, de 1 a 200 caracteres | sí | El identificador que lleva una fila de búsqueda. |
sections | matriz de basic, files, full_metadata, por defecto ["basic"] | no | Qué partes devolver. |
file_format | cadena, hasta 60 caracteres | no | Conservar los archivos de un formato. |
max_files | entero, de 1 a 200, por defecto 25 | no | Límite de archivos devueltos. |
max_description_chars | entero, de 100 a 20000, por defecto 2000 | no | Cuá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.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
query | cadena, de 2 a 300 caracteres | no | Texto libre, cuando lo hay. |
subject | cadena, de 2 a 100 caracteres | no | Un tema bajo el que el índice archiva obras. |
place | cadena, de 2 a 100 caracteres | no | Un lugar sobre el que trata una obra. |
time | cadena, de 2 a 100 caracteres | no | Una época sobre la que trata una obra. |
person | cadena, de 2 a 100 caracteres | no | Una persona sobre la que trata una obra. |
language | cadena, de 2 a 20 caracteres | no | El idioma de la obra. |
year_from | entero, de 1 a 2200 | no | Primera publicación más temprana. |
year_to | entero, de 1 a 2200 | no | Primera publicación más reciente. |
pages_min | entero, de 1 a 100000 | no | Obra aceptable más corta. |
pages_max | entero, de 1 a 100000 | no | Obra aceptable más larga. |
sort | relevance, rating, readers, newest o oldest, por defecto relevance | no | Cómo se ordenan las filas. |
limit | entero, de 1 a 50, por defecto 10 | no | Filas a servir. |
page | entero, de 1 a 100, por defecto 1 | no | Qué 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.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
url | cadena, de 3 a 2000 caracteres | sí | La dirección a consultar. |
limit | entero, de 1 a 100, por defecto 20 | no | Capturas a servir. |
cursor | cadena, hasta 500 caracteres | no | El 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.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
url | cadena, de 3 a 2000 caracteres | sí | La dirección a consultar. |
at | YYYY-MM-DD o una marca de tiempo ISO | no | La 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.
| Variable | Por defecto | Qué hace |
|---|---|---|
IA_USER_AGENT | la identidad del proyecto | Nombra tu aplicación ante el archivo, con una dirección donde se pueda contactar a una persona. |
IA_MIN_INTERVAL_MS | 1000 | Intervalo entre dos solicitudes, de 500 a 60000. |
IA_TIMEOUT_MS | 20000 | Plazo para una solicitud, de 1000 a 120000. |
IA_HISTORY_TIMEOUT_MS | 60000 | Plazo para un historial de la Wayback Machine, de 5000 a 180000. |
IA_MAX_RETRIES | 3 | Intentos tras un fallo transitorio, de 0 a 8. |
IA_CACHE_TTL_MS | 900000 | Cuánto tiempo permanece una respuesta en memoria, de 0 a 86400000. |
IA_CACHE_MAX_ENTRIES | 200 | Respuestas retenidas en memoria a la vez, de 1 a 5000. |
IA_LOG_LEVEL | error | silent, 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ódigo | Qué ocurrió | Qué hacer |
|---|---|---|
not_found | El archivo respondió y no tiene ese elemento. | Comprueba el identificador con search_items. |
invalid_input | Los argumentos fueron rechazados antes de enviar ninguna solicitud. | Lee el mensaje, que nombra el argumento. |
rate_limited | El 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_failure | La respuesta llegó en un formato que este cliente no puede leer. | Repórtalo en el rastreador de incidencias. |
network_error | La solicitud no se completó. | Inténtalo de nuevo en breve. |
timeout | La 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)
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
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
| Outil | Ce qu'il fait |
|---|---|
search_inside | Cherche dans les mots contenus dans les documents numérisés. |
search_items | Cherche dans le catalogue par titre, auteur, sujet et type de média. |
get_item | Lit la fiche d'un document, ses fichiers et sa licence. |
search_books | Trouve des livres par sujet, lieu, période, personne, longueur ou année. |
list_snapshots | Liste les captures que la Wayback Machine garde d'une adresse. |
get_snapshot | Lit 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é.
| Argument | Type | Requis | Ce qu'il fait |
|---|---|---|---|
query | chaîne, 2 à 300 caractères | oui | La phrase à chercher dans les documents. |
limit | entier, 1 à 50, défaut 10 | non | Correspondances à servir. |
page | entier, 1 à 100, défaut 1 | non | Quelle page de correspondances. |
max_excerpt_chars | entier, 80 à 1200, défaut 300 | non | La longueur de passage à servir. |
max_excerpts_per_match | entier, 1 à 10, défaut 3 | non | Passages 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.
| Argument | Type | Requis | Ce qu'il fait |
|---|---|---|---|
query | chaîne, 1 à 300 caractères | oui | Les mots à chercher au catalogue. |
media_type | texts, movies, audio, image, software, data ou web | non | Le type de chose à garder. |
year_from | entier, 1 à 2200 | non | Année la plus ancienne. |
year_to | entier, 1 à 2200 | non | Année la plus récente. |
sort | relevance, downloads, newest, oldest ou title, défaut relevance | non | L'ordre des lignes. |
limit | entier, 1 à 50, défaut 10 | non | Lignes à servir. |
page | entier, 1 à 100, défaut 1 | non | Quelle 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.
| Argument | Type | Requis | Ce qu'il fait |
|---|---|---|---|
identifier | chaîne, 1 à 200 caractères | oui | L'identifiant que porte une ligne. |
sections | tableau de basic, files, full_metadata, défaut ["basic"] | non | Les parties à rendre. |
file_format | chaîne, jusqu'à 60 caractères | non | Ne garder que les fichiers d'un format. |
max_files | entier, 1 à 200, défaut 25 | non | Plafond sur les fichiers rendus. |
max_description_chars | entier, 100 à 20000, défaut 2000 | non | La 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é.
| Argument | Type | Requis | Ce qu'il fait |
|---|---|---|---|
query | chaîne, 2 à 300 caractères | non | Du texte libre, quand il y en a. |
subject | chaîne, 2 à 100 caractères | non | Un sujet sous lequel l'index classe. |
place | chaîne, 2 à 100 caractères | non | Un lieu dont une œuvre traite. |
time | chaîne, 2 à 100 caractères | non | Une période dont une œuvre traite. |
person | chaîne, 2 à 100 caractères | non | Une personne dont une œuvre traite. |
language | chaîne, 2 à 20 caractères | non | La langue de l'œuvre. |
year_from | entier, 1 à 2200 | non | Première publication la plus ancienne. |
year_to | entier, 1 à 2200 | non | Première publication la plus récente. |
pages_min | entier, 1 à 100000 | non | Œuvre la plus courte acceptable. |
pages_max | entier, 1 à 100000 | non | Œuvre la plus longue acceptable. |
sort | relevance, rating, readers, newest ou oldest, défaut relevance | non | L'ordre des lignes. |
limit | entier, 1 à 50, défaut 10 | non | Lignes à servir. |
page | entier, 1 à 100, défaut 1 | non | Quelle 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.
| Argument | Type | Requis | Ce qu'il fait |
|---|---|---|---|
url | chaîne, 3 à 2000 caractères | oui | L'adresse à consulter. |
limit | entier, 1 à 100, défaut 20 | non | Captures à servir. |
cursor | chaîne, jusqu'à 500 caractères | non | Le 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.
| Argument | Type | Requis | Ce qu'il fait |
|---|---|---|---|
url | chaîne, 3 à 2000 caractères | oui | L'adresse à consulter. |
at | AAAA-MM-JJ ou horodatage ISO | non | La 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.
| Variable | Défaut | Ce qu'elle fait |
|---|---|---|
IA_USER_AGENT | l'identité du projet | Nomme votre application auprès de l'archive, avec une adresse où joindre une personne. |
IA_MIN_INTERVAL_MS | 1000 | Écart entre deux requêtes, de 500 à 60000. |
IA_TIMEOUT_MS | 20000 | Délai d'une requête, de 1000 à 120000. |
IA_HISTORY_TIMEOUT_MS | 60000 | Délai d'un historique Wayback Machine, de 5000 à 180000. |
IA_MAX_RETRIES | 3 | Tentatives après un échec passager, de 0 à 8. |
IA_CACHE_TTL_MS | 900000 | Durée pendant laquelle une réponse reste en mémoire, de 0 à 86400000. |
IA_CACHE_MAX_ENTRIES | 200 | Réponses gardées en mémoire à la fois, de 1 à 5000. |
IA_LOG_LEVEL | error | silent, 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ódigo | Qué ocurrió | Qué hacer |
|---|---|---|
not_found | El archivo respondió y no tiene este documento. | Verifique el identificador con search_items. |
invalid_input | Los argumentos fueron rechazados antes de cualquier solicitud. | Lea el mensaje, que nombra el argumento. |
rate_limited | El 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_failure | La respuesta llegó en una forma ilegible aquí. | Repórtelo en el seguimiento de incidentes. |
network_error | La solicitud no se completó. | Reintente en breve. |
timeout | La 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.