internet-archive-mcp
Internet Archive MCP Server
Full-coverage Internet Archive MCP server — search, metadata, collections, and Wayback Machine in one server.
Why this server?
Existing Internet Archive MCP servers are almost all Wayback-only — small 3–4 tool wrappers around the CDX snapshot API. This is the only server that combines:
Full IA collections access — search, metadata, files, reviews, and collection browsing across all media types (texts, audio, movies, software, images)
Full Wayback Machine coverage — CDX snapshot search, availability checks, and raw content fetch
13 tools organized in three tiers (core, differentiator, auth-gated)
Anonymous reads — every read operation works with zero configuration
Auth-gated writes — Save Page Now requires IA S3 keys, cleanly separated from the read path
Quick start
Install
cd internet-archive-mcp
pip install -e .Hermes Agent
Add to your Hermes config.yaml:
mcp_servers:
internet-archive:
command: python3
args: ['-m', 'internet_archive_mcp.server']
env:
PYTHONPATH: /path/to/internet-archive-mcp/srcClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"internet-archive": {
"command": "python3",
"args": ["-m", "internet_archive_mcp.server"],
"env": {"PYTHONPATH": "/path/to/internet-archive-mcp/src"}
}
}
}Tool reference
Tier 1 — Core tools
Tool | Key args | Returns |
|
| Paginated results: |
|
| Full metadata block (title, creator, description, subjects, server info) |
|
| List of file dicts (name, format, size, technical metadata) |
|
| List of review objects (reviewer, stars, title, body) |
|
| List of CDX snapshot records (timestamp, URL, MIME, status, digest) |
|
| Closest available snapshot timestamp and URL |
|
| Archived page content (raw by default, no toolbar) |
Tier 2 — Differentiator tools
Tool | Key args | Returns |
|
| Paginated items in a collection (sorted by downloads desc) |
|
| Collection metadata with item count; notes if not a collection |
|
| Thumbnail image URL (usable in markdown) |
|
| Cursor-paged results for unlimited deep pagination |
Tier 3 — Auth-gated tools
Tool | Key args | Returns |
|
| SPN2 job status and archived URL |
|
| Status of a Save Page Now job (completion, Wayback URL) |
Configuration
All read tools work anonymously with no configuration. The only tool requiring credentials is save_page (Save Page Now).
Environment variables
Variable | Purpose |
| Internet Archive S3 access key |
| Internet Archive S3 secret key |
Get your keys at: https://archive.org/account/s3.php (free account required).
Keys can also be passed directly as tool arguments (access_key, secret_key) — env vars are the fallback.
Rate limiting & caching
The client is designed to be a polite, well-behaved consumer of IA APIs:
Rate limiter — minimum 0.5s interval between all outgoing requests
Bounded TTL cache — in-memory cache with 256-entry cap; search and metadata results cached for 1 hour; oldest entries evicted first
429 retry with backoff — automatic retry on HTTP 429 with exponential backoff (honors
Retry-Afterheader), up to 3 attemptsMandatory User-Agent — every request carries a descriptive
User-Agent: internet-archive-mcp/0.1.0 (...)header per IA policy
Development
# Install with dev dependencies
pip install -e '.[dev]'
# Run tests
pytest tests/ -vArchitecture
internet-archive-mcp/
├── src/internet_archive_mcp/
│ ├── __init__.py
│ ├── client.py # Async httpx client — all API logic
│ └── server.py # FastMCP tool definitions (thin wrappers)
├── tests/
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_client.py
│ ├── test_qa_fixes.py
│ ├── test_qa_round2.py
│ ├── test_qa_round3.py
│ ├── test_server.py
│ └── test_tools.py
├── RESEARCH.md # API research findings (tested with curl)
└── pyproject.tomlclient.py—ArchiveClientclass using asynchttpx. Talks to two base URLs:https://archive.org(search, metadata, availability) andhttps://web.archive.org(CDX, content fetch, Save Page Now). Owns caching, rate limiting, and retry logic.server.py— FastMCP server with 13@mcp.tool()definitions. Each tool is a thin async wrapper that delegates toArchiveClientand converts exceptions to error strings.
Design decisions
The Related Items API (archive.org/recommendations/{id}) was investigated during research but returned no useful data. It is intentionally excluded. See RESEARCH.md §5f.
Links
RESEARCH.md — full API research with tested curl examples
IA Bots Policy — terms of service and acceptable use for automated access