Back to Browse

Archiveorg MCP Server

Developer ToolsLow Risk10.0Local
Free

Search inside digitised books, browse the Internet Archive catalogue and read Wayback captures.

About

Search inside digitised books, browse the Internet Archive catalogue and read Wayback captures.

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry. Trust signals: trusted author (19/21 approved).

3 files analyzed · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

What You'll Need

Set these up before or after installing:

Identify your own client. The project's own identifier is appended, so the Archive can always reach a human.Optional

Environment variable: IA_USER_AGENT

Minimum milliseconds between requests. Default 1000, floor 500.Optional

Environment variable: IA_MIN_INTERVAL_MS

Deadline for the capture index, which answers in tens of seconds. Default 60000.Optional

Environment variable: IA_HISTORY_TIMEOUT_MS

silent, error, info or debug. Default error. Logs go to stderr.Optional

Environment variable: IA_LOG_LEVEL

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-smeet666-mcp-archiveorg": {
      "env": {
        "IA_LOG_LEVEL": "your-ia-log-level-here",
        "IA_USER_AGENT": "your-ia-user-agent-here",
        "IA_MIN_INTERVAL_MS": "your-ia-min-interval-ms-here",
        "IA_HISTORY_TIMEOUT_MS": "your-ia-history-timeout-ms-here"
      },
      "args": [
        "-y",
        "mcp-archiveorg"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

mcp-archiveorg

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

The Internet Archive is a non-profit library that keeps what the world publishes: scanned books, films, recorded music, radio, software, and the pages of the web itself, captured over and over since 1996 in the Wayback Machine. Millions of its books and documents have been run through optical character recognition, so the words inside them can be searched, and the Open Library index beside it describes works, their editions and their subjects.

This server connects a chat client to that library. You can search the full text inside its documents, search its catalogue of items, read one item's record and its files, look up a book by subject, place, period or person, and read the web as it stood on a given day. It needs no API key and no account.

Version française


Install

One-click install

Install in Cursor Install in VS Code

Claude Code

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

Claude Desktop, Cursor, and any client using the standard config format

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

Node 24 or later is required, and no environment variable has to be set.

With Docker

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

-i keeps stdin open, which is where the protocol travels, and -t is left out because a TTY rewrites the stream. The container needs outbound HTTPS to archive.org, web.archive.org and openlibrary.org, and nothing else: no volume, no port, no credential.

Bundle, without npm

Download mcp-archiveorg-2.0.2.mcpb from the latest release and open it. A client that supports MCP bundles installs it on its own, with no npm and no configuration file to edit. The bundle carries its dependencies, so nothing is fetched at install time.

What you can ask

  • "Which books mention the Beaumont light-house?"
  • "Find me items about the 1906 San Francisco earthquake."
  • "What files does that item hold, and what licence is it under?"
  • "Find me books on beekeeping in France published before 1900."
  • "What did that website look like in March 2001?"

The ordinary path runs from a search to a record: a row carries an identifier, and get_item reads it.

Tools

ToolWhat it does
search_insideSearches the words inside the archive's scanned documents.
search_itemsSearches the catalogue by title, creator, subject and media type.
get_itemReads one item's record, its files and its licence.
search_booksFinds books by subject, place, period, person, length or year.
list_snapshotsLists the captures the Wayback Machine holds for an address.
get_snapshotReads one capture of an address, at or near a date.

search_inside

Searches the text inside the archive's documents, which came off the page through optical character recognition, so a passage carries the misreadings of that process.

ArgumentTypeRequiredWhat it does
querystring, 2 to 300 charactersyesThe phrase to look for inside the documents.
limitinteger, 1 to 50, default 10noMatches to serve.
pageinteger, 1 to 100, default 1noWhich page of matches.
max_excerpt_charsinteger, 80 to 1200, default 300noHow much of a passage to serve.
max_excerpts_per_matchinteger, 1 to 10, default 3noPassages served per matching document.

In return: hits, each carrying identifier, which get_item takes; title, creator and year; excerpts, the passages as a machine read them off the page; matched_file, naming what actually holds the passage; and source_url. inside_container is true when the item bundles several documents and the passage sits in one of them, in which case the title, the creator and the year belong to the container.

total counts documents, and it pages. It is a number of documents and the last page of a match set is shorter than the first. No page number is available: the index reports where the text sits inside the item, which is 1 on nearly every match, so nothing here states a page of a book and no link claims one.

search_items

Searches the catalogue itself, across every kind of thing the archive holds.

ArgumentTypeRequiredWhat it does
querystring, 1 to 300 charactersyesWords to look for in the catalogue.
media_typetexts, movies, audio, image, software, data or webnoThe kind of thing to keep.
year_frominteger, 1 to 2200noEarliest year.
year_tointeger, 1 to 2200noLatest year.
sortrelevance, downloads, newest, oldest or title, default relevancenoHow the rows are ordered.
limitinteger, 1 to 50, default 10noRows to serve.
pageinteger, 1 to 100, default 1noWhich page of rows.

In return: items, each carrying identifier, title, creator, year, media_type, downloads and source_url, a field the record leaves empty being null. total counts the items matching across the catalogue, which is more than the number returned.

get_item

Reads one item's record. The heavier parts are asked for rather than served by default, since a record can run long.

ArgumentTypeRequiredWhat it does
identifierstring, 1 to 200 charactersyesThe identifier a search row carries.
sectionsarray of basic, files, full_metadata, default ["basic"]noWhich parts to return.
file_formatstring, up to 60 charactersnoKeep the files of one format.
max_filesinteger, 1 to 200, default 25noCeiling on the files returned.
max_description_charsinteger, 100 to 20000, default 2000noHow much of the description to serve.

In return: the item with its title, creator, year, media_type and source_url, plus description, date, publisher, language, collections and license_url, each null where the record states nothing. file_count counts the files the item holds whatever this answer returned, and total_bytes their weight. files and full_metadata are present only when asked for in sections.

search_books

Finds books through the index of works beside the archive, which describes a work and its editions rather than one scanned copy.

ArgumentTypeRequiredWhat it does
querystring, 2 to 300 charactersnoFree text, when there is any.
subjectstring, 2 to 100 charactersnoA subject the index files works under.
placestring, 2 to 100 charactersnoA place a work is about.
timestring, 2 to 100 charactersnoA period a work is about.
personstring, 2 to 100 charactersnoA person a work is about.
languagestring, 2 to 20 charactersnoThe language of the work.
year_frominteger, 1 to 2200noEarliest first publication.
year_tointeger, 1 to 2200noLatest first publication.
pages_mininteger, 1 to 100000noShortest acceptable work.
pages_maxinteger, 1 to 100000noLongest acceptable work.
sortrelevance, rating, readers, newest or oldest, default relevancenoHow the rows are ordered.
limitinteger, 1 to 50, default 10noRows to serve.
pageinteger, 1 to 100, default 1noWhich page of rows.

In return: books, each carrying title, authors, first_published_year, edition_count, archive_identifiers for the scanned copies the archive holds, scan_count, page_count as a median across editions, subjects and source_url. searched_for says in words what this answer answers, free text and every criterion applied, and query is null when the search was made of criteria alone. total counts the works matching.

list_snapshots

Lists the captures the Wayback Machine holds for one address.

ArgumentTypeRequiredWhat it does
urlstring, 3 to 2000 charactersyesThe address to look up.
limitinteger, 1 to 100, default 20noCaptures to serve.
cursorstring, up to 500 charactersnoThe next_cursor a previous answer named.

In return: snapshots, each with its captured_at as an ISO timestamp in UTC, the url of the capture itself, and the status the crawl recorded. first and last describe this answer rather than the whole history, and next_cursor continues the listing.

get_snapshot

Reads one capture of an address, at a date or near it.

ArgumentTypeRequiredWhat it does
urlstring, 3 to 2000 charactersyesThe address to look up.
atYYYY-MM-DD or an ISO timestampnoThe date to aim for. The newest capture by default.

In return: the snapshot with its captured_at and its address, beside the requested_url and requested_at, so the distance between the date asked for and the capture served is visible. The Wayback Machine answers a date it has no capture for with the nearest one it holds.

What excerpts are worth

The text inside a scanned document came off the page through optical character recognition. A passage therefore carries the misreadings of that process, and it is served as it was read rather than corrected: a word that reads oddly is what the machine saw. Quote a passage as an excerpt of a scan, and link the item so a reader can look at the page.

Configuration

Every variable is optional. Set them in the env block of your client config.

VariableDefaultWhat it does
IA_USER_AGENTthe project identityNames your application to the archive, with an address where a person can be reached.
IA_MIN_INTERVAL_MS1000Gap between two requests, from 500 to 60000.
IA_TIMEOUT_MS20000Deadline for one request, from 1000 to 120000.
IA_HISTORY_TIMEOUT_MS60000Deadline for a Wayback Machine history, from 5000 to 180000.
IA_MAX_RETRIES3Attempts after a transient failure, from 0 to 8.
IA_CACHE_TTL_MS900000How long an answer stays in memory, from 0 to 86400000.
IA_CACHE_MAX_ENTRIES200Answers held in memory at once, from 1 to 5000.
IA_LOG_LEVELerrorsilent, error, info or debug, written to stderr.

A value outside its range falls back to the default, and the reason is written to stderr.

Errors

Every failure carries one of six codes, a message, and where it helps a hint naming the next move.

CodeWhat happenedWhat to do
not_foundThe archive answered, and holds no such item.Check the identifier with search_items.
invalid_inputThe arguments were refused before any request went out.Read the message, which names the argument.
rate_limitedThe archive asked this client to slow down.Wait the number of seconds the hint names and call again with the same arguments. The item is still there.
parse_failureThe answer arrived in a shape this client cannot read.Report it at the issue tracker.
network_errorThe request did not complete.Try again shortly.
timeoutThe request passed its deadline.Raise IA_TIMEOUT_MS, or IA_HISTORY_TIMEOUT_MS for a capture history.

As a library

The layer reading the archive is published on its own, with its pacing, its cache and its errors, and with no protocol attached.

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);

Each read answers { data, cached }, and throws an error carrying one of the six codes. The floor between two requests holds here as well.

Pacing and attribution

Requests go out one at a time with at least a second between them, and the floor of half a second holds however the server is configured. The User-Agent always ends with the project identity and an address where a person can be reached. The Internet Archive is a non-profit library, and a search inside its documents is one of the more expensive questions it answers.

Every result carries the address of the page it was read from. The items belong to the people and institutions who deposited them, under the terms each record states in license_url.

This MCP server is an unofficial project, with no affiliation to the Internet Archive.

Privacy

This server collects nothing about you and sends nothing to its author. It runs on your machine, contacts archive.org, web.archive.org and openlibrary.org and nothing else, holds its answers in memory while it runs, and writes nothing to disk. PRIVACY.md states what a request carries and which settings change any of it.

Development

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

Tests run against generated fixtures and make no network request. The live suite, npm run test:live, makes one request per route and runs nightly against the archive itself.

Contributing

Bugs, questions and ideas belong in the issue tracker. Pull requests are welcome; opening an issue first helps agree on the shape of the change. See CONTRIBUTING.md.

License

MIT, see LICENSE. The items belong to their depositors, under the terms each record states.


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.

CodeCe qui s'est passéQue faire
not_foundL'archive a répondu, et n'a pas ce document.Vérifiez l'identifiant avec search_items.
invalid_inputLes arguments ont été refusés avant toute requête.Lisez le message, qui nomme l'argument.
rate_limitedL'archive demande à ce client de ralentir.Attendez les secondes indiquées et rappelez avec les mêmes arguments. Le document est toujours là.
parse_failureLa réponse est arrivée dans une forme illisible ici.Signalez-le sur le suivi d'incidents.
network_errorLa requête n'a pas abouti.Réessayez sous peu.
timeoutLa requête a dépassé son délai.Augmentez IA_TIMEOUT_MS, ou IA_HISTORY_TIMEOUT_MS pour un historique.

Comme bibliothèque

La couche qui lit l'archive est publiée seule, avec son rythme, son cache et ses erreurs, sans protocole attaché.

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);

Chaque lecture répond { data, cached }, et lève une erreur portant un des six codes. Le plancher entre deux requêtes tient également ici.

Rythme et attribution

Les requêtes partent une à une avec au moins une seconde entre elles, et le plancher d'une demi-seconde tient quelle que soit la configuration. Le User-Agent se termine toujours par l'identité du projet et une adresse où joindre une personne. L'Internet Archive est une bibliothèque à but non lucratif, et une recherche dans le texte de ses documents est l'une des questions les plus coûteuses qu'elle traite.

Chaque résultat porte l'adresse de la page d'où il a été lu. Les documents appartiennent aux personnes et aux institutions qui les ont déposés, sous les conditions que chaque fiche indique dans license_url.

Ce MCP est un projet non officiel, sans affiliation à l'Internet Archive.

Confidentialité

Ce serveur ne collecte rien sur vous et n'envoie rien à son auteur. Il tourne sur votre machine, ne joint que archive.org, web.archive.org et openlibrary.org, garde ses réponses en mémoire le temps qu'il tourne, et n'écrit rien sur le disque. PRIVACY.md dit ce qu'une requête emporte et quels réglages changent cela.

Développement

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

Les tests s'exécutent sur des fixtures engendrées et n'émettent aucune requête. La suite en direct, npm run test:live, émet une requête par route et tourne chaque nuit contre l'archive elle-même.

Contribuer

Les anomalies, les questions et les idées ont leur place dans le suivi d'incidents. Les propositions de modification sont bienvenues ; ouvrir un ticket d'abord aide à s'accorder sur la forme du changement. Voir CONTRIBUTING.md.

Licence

MIT, voir LICENSE. Les documents appartiennent à ceux qui les ont déposés, sous les conditions que chaque fiche indique.

Reviews

No reviews yet

Be the first to review this server!