Search inside digitised books, browse the Internet Archive catalogue and read Wayback captures.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
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.
One-click install
Claude Code
Claude Desktop, Cursor, and any client using the standard config format
Node 24 or later is required, and no environment variable has to be set.
-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.
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.
The ordinary path runs from a search to a record: a row carries an identifier,
and get_item reads it.
| Tool | What it does |
|---|---|
search_inside | Searches the words inside the archive's scanned documents. |
search_items | Searches the catalogue by title, creator, subject and media type. |
get_item | Reads one item's record, its files and its licence. |
search_books | Finds books by subject, place, period, person, length or year. |
list_snapshots | Lists the captures the Wayback Machine holds for an address. |
get_snapshot | Reads one capture of an address, at or near a date. |
search_insideSearches 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.
| Argument | Type | Required | What it does |
|---|---|---|---|
query | string, 2 to 300 characters | yes | The phrase to look for inside the documents. |
limit | integer, 1 to 50, default 10 | no | Matches to serve. |
page | integer, 1 to 100, default 1 | no | Which page of matches. |
max_excerpt_chars | integer, 80 to 1200, default 300 | no | How much of a passage to serve. |
max_excerpts_per_match | integer, 1 to 10, default 3 | no | Passages 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_itemsSearches the catalogue itself, across every kind of thing the archive holds.
| Argument | Type | Required | What it does |
|---|---|---|---|
query | string, 1 to 300 characters | yes | Words to look for in the catalogue. |
media_type | texts, movies, audio, image, software, data or web | no | The kind of thing to keep. |
year_from | integer, 1 to 2200 | no | Earliest year. |
year_to | integer, 1 to 2200 | no | Latest year. |
sort | relevance, downloads, newest, oldest or title, default relevance | no | How the rows are ordered. |
limit | integer, 1 to 50, default 10 | no | Rows to serve. |
page | integer, 1 to 100, default 1 | no | Which 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_itemReads one item's record. The heavier parts are asked for rather than served by default, since a record can run long.
| Argument | Type | Required | What it does |
|---|---|---|---|
identifier | string, 1 to 200 characters | yes | The identifier a search row carries. |
sections | array of basic, files, full_metadata, default ["basic"] | no | Which parts to return. |
file_format | string, up to 60 characters | no | Keep the files of one format. |
max_files | integer, 1 to 200, default 25 | no | Ceiling on the files returned. |
max_description_chars | integer, 100 to 20000, default 2000 | no | How much of the description to serve. |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-archiveorg)<a href="https://allmcps.com/mcp/mcp-archiveorg"><img src="https://allmcps.com/api/badge/mcp-archiveorg?style=directory" alt="MCP Archiveorg on AllMCPs" /></a>