mcp-internet-archive 1.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CHANGELOG.md +155 -0
  2. package/LICENSE +24 -0
  3. package/README.md +194 -0
  4. package/dist/bin.d.ts +3 -0
  5. package/dist/bin.d.ts.map +1 -0
  6. package/dist/bin.js +181 -0
  7. package/dist/bin.js.map +1 -0
  8. package/dist/cli.d.ts +3 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +206 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/contexts.d.ts +12 -0
  13. package/dist/contexts.d.ts.map +1 -0
  14. package/dist/contexts.js +95 -0
  15. package/dist/contexts.js.map +1 -0
  16. package/dist/schemas.d.ts +53 -0
  17. package/dist/schemas.d.ts.map +1 -0
  18. package/dist/schemas.js +51 -0
  19. package/dist/schemas.js.map +1 -0
  20. package/dist/tools/cache.d.ts +28 -0
  21. package/dist/tools/cache.d.ts.map +1 -0
  22. package/dist/tools/cache.js +40 -0
  23. package/dist/tools/cache.js.map +1 -0
  24. package/dist/tools/compare.d.ts +34 -0
  25. package/dist/tools/compare.d.ts.map +1 -0
  26. package/dist/tools/compare.js +96 -0
  27. package/dist/tools/compare.js.map +1 -0
  28. package/dist/tools/context.d.ts +25 -0
  29. package/dist/tools/context.d.ts.map +1 -0
  30. package/dist/tools/context.js +6 -0
  31. package/dist/tools/context.js.map +1 -0
  32. package/dist/tools/retrieve.d.ts +34 -0
  33. package/dist/tools/retrieve.d.ts.map +1 -0
  34. package/dist/tools/retrieve.js +101 -0
  35. package/dist/tools/retrieve.js.map +1 -0
  36. package/dist/tools/save.d.ts +31 -0
  37. package/dist/tools/save.d.ts.map +1 -0
  38. package/dist/tools/save.js +132 -0
  39. package/dist/tools/save.js.map +1 -0
  40. package/dist/tools/screenshots.d.ts +30 -0
  41. package/dist/tools/screenshots.d.ts.map +1 -0
  42. package/dist/tools/screenshots.js +83 -0
  43. package/dist/tools/screenshots.js.map +1 -0
  44. package/dist/tools/search.d.ts +51 -0
  45. package/dist/tools/search.d.ts.map +1 -0
  46. package/dist/tools/search.js +184 -0
  47. package/dist/tools/search.js.map +1 -0
  48. package/dist/tools/status.d.ts +26 -0
  49. package/dist/tools/status.d.ts.map +1 -0
  50. package/dist/tools/status.js +93 -0
  51. package/dist/tools/status.js.map +1 -0
  52. package/dist/utils/cache.d.ts +96 -0
  53. package/dist/utils/cache.d.ts.map +1 -0
  54. package/dist/utils/cache.js +241 -0
  55. package/dist/utils/cache.js.map +1 -0
  56. package/dist/utils/http.d.ts +22 -0
  57. package/dist/utils/http.d.ts.map +1 -0
  58. package/dist/utils/http.js +42 -0
  59. package/dist/utils/http.js.map +1 -0
  60. package/dist/utils/rate-limit.d.ts +45 -0
  61. package/dist/utils/rate-limit.d.ts.map +1 -0
  62. package/dist/utils/rate-limit.js +62 -0
  63. package/dist/utils/rate-limit.js.map +1 -0
  64. package/dist/utils/validation.d.ts +14 -0
  65. package/dist/utils/validation.d.ts.map +1 -0
  66. package/dist/utils/validation.js +22 -0
  67. package/dist/utils/validation.js.map +1 -0
  68. package/package.json +88 -10
package/CHANGELOG.md ADDED
@@ -0,0 +1,155 @@
1
+ ## [3.0.1](https://github.com/Mearman/mcp-wayback-machine/compare/v3.0.0...v3.0.1) (2026-05-09)
2
+
3
+ ### Chores
4
+
5
+ * enable dependabot auto-merge for passing PRs ([1453f3e](https://github.com/Mearman/mcp-wayback-machine/commit/1453f3e93a4bd759c950c5b19fc805b32ce9562c))
6
+
7
+ ## [3.0.0](https://github.com/Mearman/mcp-wayback-machine/compare/v2.2.0...v3.0.0) (2026-05-09)
8
+
9
+ ### ⚠ BREAKING CHANGES
10
+
11
+ * v3.0.0 major release - complete toolchain migration
12
+ from Yarn/Biome to pnpm/ESLint, native Node type stripping, DI-based
13
+ tool architecture, per-endpoint cache TTLs, SPN2 advanced options,
14
+ CDX advanced features, and MCP Registry integration.
15
+
16
+ ### Bug Fixes
17
+
18
+ * correct mcpName to match GitHub repo name ([7ad4e45](https://github.com/Mearman/mcp-wayback-machine/commit/7ad4e453653e3ae41176c6fc77b7a200f4c75385))
19
+
20
+ ## [2.2.0](https://github.com/Mearman/mcp-wayback-machine/compare/v2.1.1...v2.2.0) (2026-05-09)
21
+
22
+ ### Features
23
+
24
+ * add cache management, screenshot listing, and snapshot comparison tools ([cd8c122](https://github.com/Mearman/mcp-wayback-machine/commit/cd8c122ca8ba618386b75638dc56dc0f9cbd45a5))
25
+ * add server.json generation script for MCP Registry ([a578da7](https://github.com/Mearman/mcp-wayback-machine/commit/a578da74e72a75caa2cbf45ed2e0ea1403e24e16))
26
+ * migrate toolchain and rewrite for strict TypeScript ([008434e](https://github.com/Mearman/mcp-wayback-machine/commit/008434ebac4216d3e30de7083c22100bbcf9fb5a))
27
+
28
+ ### Refactoring
29
+
30
+ * extract shared response schemas ([9bf978d](https://github.com/Mearman/mcp-wayback-machine/commit/9bf978dc99455aa957db8027a96504b35b2af3be))
31
+
32
+ ### Documentation
33
+
34
+ * update readme for v2 feature set ([e315381](https://github.com/Mearman/mcp-wayback-machine/commit/e315381f72b0af043e32695459202ad8437148c5))
35
+
36
+ ### Tests
37
+
38
+ * cover SPN2 options and CDX advanced features ([09e50a0](https://github.com/Mearman/mcp-wayback-machine/commit/09e50a0bbea5a41246adaab2be8f393b74e19fe8))
39
+
40
+ ### Chores
41
+
42
+ * remove tsconfig.tests.json ([e683d44](https://github.com/Mearman/mcp-wayback-machine/commit/e683d4454ada39dd53274a74cc38c2ea547bc839))
43
+
44
+ ## [2.1.1](https://github.com/Mearman/mcp-wayback-machine/compare/v2.1.0...v2.1.1) (2026-05-09)
45
+
46
+ ### Bug Fixes
47
+
48
+ * disable provenance for GitHub Packages publish ([112607c](https://github.com/Mearman/mcp-wayback-machine/commit/112607c3902db407b03cdb556a3afc3ff7f58df3))
49
+
50
+ ## [2.1.0](https://github.com/Mearman/mcp-wayback-machine/compare/v2.0.0...v2.1.0) (2026-05-09)
51
+
52
+ ### Features
53
+
54
+ * add in-memory and disk request caching for read operations ([d901348](https://github.com/Mearman/mcp-wayback-machine/commit/d90134856936bd2e39c71692ad978a13098d3b49))
55
+
56
+ ### Bug Fixes
57
+
58
+ * pass NPM_TOKEN to semantic-release for npm auth verification ([043c694](https://github.com/Mearman/mcp-wayback-machine/commit/043c694312e34b3a563a419245e1b9e945a92259))
59
+ * propagate semantic-release exit code in CI release step ([d34008d](https://github.com/Mearman/mcp-wayback-machine/commit/d34008dbeb663383908828c66dbd8008f2972bf7))
60
+ * split eslint config into per-context tsconfig resolution ([54a33db](https://github.com/Mearman/mcp-wayback-machine/commit/54a33dbb84b87ab1c223f31822a9cb495188f220))
61
+
62
+ ### Refactoring
63
+
64
+ * rewrite source for strict typescript and eslint compliance ([58a8415](https://github.com/Mearman/mcp-wayback-machine/commit/58a8415595eff5827143d59075fcdd2b9582d27b)), closes [#3](https://github.com/Mearman/mcp-wayback-machine/issues/3) [#18](https://github.com/Mearman/mcp-wayback-machine/issues/18)
65
+
66
+ ### Documentation
67
+
68
+ * update README for pnpm, caching, and Node 22+ ([68c2156](https://github.com/Mearman/mcp-wayback-machine/commit/68c2156b31b33a0ed20323956b140d1087f48130))
69
+
70
+ ### Tests
71
+
72
+ * add node:test suite with 80% coverage threshold ([97443ba](https://github.com/Mearman/mcp-wayback-machine/commit/97443bace96a552bf271858004313f8478be3215))
73
+
74
+ ### CI
75
+
76
+ * add GitHub Packages publishing alongside npmjs ([ab58f25](https://github.com/Mearman/mcp-wayback-machine/commit/ab58f25a1a1a4e7d02213a4d4f09ba30052cfa5c))
77
+ * rewrite workflow for pnpm, matrix builds, and OIDC publishing ([0dcf8e5](https://github.com/Mearman/mcp-wayback-machine/commit/0dcf8e57cfc2b5c08f8ebe890cfb59e775e516d7))
78
+
79
+ ### Chores
80
+
81
+ * migrate toolchain from yarn/biome to pnpm/eslint/turbo ([26dac1c](https://github.com/Mearman/mcp-wayback-machine/commit/26dac1c557e8704f68bb9e03713a8d7a7cfadc73))
82
+ * remove stale workflows, template artifacts, and vitest tests ([928d87b](https://github.com/Mearman/mcp-wayback-machine/commit/928d87b97046e3c01ce0a3ec9d35c8ef43b844df))
83
+
84
+ # [2.0.0](https://github.com/Mearman/mcp-wayback-machine/compare/v1.0.4...v2.0.0) (2025-06-05)
85
+
86
+
87
+ ### Bug Fixes
88
+
89
+ * replace GitHub license badge with CC BY-NC-SA 4.0 badge ([feda5a0](https://github.com/Mearman/mcp-wayback-machine/commit/feda5a0d5ee7807475118af8b2c123c4668c29f2))
90
+
91
+
92
+ ### Features
93
+
94
+ * add CLI support for direct command-line usage ([94a1bf8](https://github.com/Mearman/mcp-wayback-machine/commit/94a1bf8e3dd8386b29e67bd5295f68b2f63e7d98))
95
+
96
+
97
+ ### BREAKING CHANGES
98
+
99
+ * The tool now checks for CLI arguments and will run in CLI mode if any are provided
100
+
101
+ ## [1.0.4](https://github.com/Mearman/mcp-wayback-machine/compare/v1.0.3...v1.0.4) (2025-06-04)
102
+
103
+
104
+ ### Bug Fixes
105
+
106
+ * use lowercase package name and correct registry for GitHub Packages ([0a3b4ba](https://github.com/Mearman/mcp-wayback-machine/commit/0a3b4ba9958f1680245eb5b5b30f84ff82475631))
107
+
108
+ ## [1.0.3](https://github.com/Mearman/mcp-wayback-machine/compare/v1.0.2...v1.0.3) (2025-06-04)
109
+
110
+
111
+ ### Bug Fixes
112
+
113
+ * skip prepublishOnly script for GitHub Packages publish ([25c3c3f](https://github.com/Mearman/mcp-wayback-machine/commit/25c3c3fc104f7c0c55cf4a8e9bf3d5952aa91884))
114
+
115
+ ## [1.0.2](https://github.com/Mearman/mcp-wayback-machine/compare/v1.0.1...v1.0.2) (2025-06-04)
116
+
117
+
118
+ ### Bug Fixes
119
+
120
+ * add version detection for GitHub Packages publishing ([4298868](https://github.com/Mearman/mcp-wayback-machine/commit/429886820cb90238249fdf8563c203fff55f5382))
121
+
122
+ ## [1.0.1](https://github.com/Mearman/mcp-wayback-machine/compare/v1.0.0...v1.0.1) (2025-06-04)
123
+
124
+
125
+ ### Bug Fixes
126
+
127
+ * restore bin field as object for proper CLI naming ([ab966b2](https://github.com/Mearman/mcp-wayback-machine/commit/ab966b28b01ecd1938a3cf3640922ab7e0d24a16))
128
+
129
+ # 1.0.0 (2025-06-04)
130
+
131
+
132
+ ### Bug Fixes
133
+
134
+ * add packageManager field for Yarn 4 compatibility ([dc1de05](https://github.com/Mearman/mcp-wayback-machine/commit/dc1de05a1a856fd666d9c7711626c664fe249c19))
135
+ * convert bin field to object format for npm compatibility ([9f5ee8a](https://github.com/Mearman/mcp-wayback-machine/commit/9f5ee8ad7b1b1ae4c0cabc6ed5109aaea9b50073))
136
+ * resolve test failures and version compatibility issues ([6b682aa](https://github.com/Mearman/mcp-wayback-machine/commit/6b682aa4569693209f7673112c13bc860021acac))
137
+ * resolve timeout test race condition ([8a6dea1](https://github.com/Mearman/mcp-wayback-machine/commit/8a6dea17ced800eb6bf9826be3473aa767406db6))
138
+ * resolve TypeScript errors in test files ([2877988](https://github.com/Mearman/mcp-wayback-machine/commit/2877988733d6010f1a5e98a1e51760f8c71b63ee))
139
+ * use space indentation for markdown files ([58b359b](https://github.com/Mearman/mcp-wayback-machine/commit/58b359b7dc2b561aba1cc45ef95405d87825756d))
140
+
141
+
142
+ ### Features
143
+
144
+ * add bin field to enable npx invocation ([1c48881](https://github.com/Mearman/mcp-wayback-machine/commit/1c48881effe427cf3b9bacd9ce32f78912d1a267))
145
+ * apply CC BY-NC-SA 4.0 license with full license file and README badge ([e8c9980](https://github.com/Mearman/mcp-wayback-machine/commit/e8c998056d3e9cbca272204d83c905478a7c9fc6))
146
+ * implement initial MCP server with tool definitions ([377b6e0](https://github.com/Mearman/mcp-wayback-machine/commit/377b6e02773f8ad59115f0097a69201ea8028e84))
147
+ * implement Wayback Machine API integration ([14d70c1](https://github.com/Mearman/mcp-wayback-machine/commit/14d70c1161e0a8cf78dd6011d670007419011c34))
148
+ * initial project setup with plan for Wayback Machine MCP server ([f265ed8](https://github.com/Mearman/mcp-wayback-machine/commit/f265ed824184f009f1d39a6716632337ae1e58c3))
149
+
150
+ # Changelog
151
+
152
+ All notable changes to this project will be documented in this file.
153
+
154
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
155
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
package/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
2
+
3
+ MCP Wayback Machine Server
4
+ Copyright (c) 2025
5
+
6
+ This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
7
+
8
+ You are free to:
9
+ - Share — copy and redistribute the material in any medium or format
10
+ - Adapt — remix, transform, and build upon the material
11
+
12
+ Under the following terms:
13
+ - Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
14
+ - NonCommercial — You may not use the material for commercial purposes.
15
+ - ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
16
+
17
+ No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
18
+
19
+ Notices:
20
+ You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation.
21
+
22
+ No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material.
23
+
24
+ For commercial use or licensing inquiries, please contact the copyright holder.
package/README.md ADDED
@@ -0,0 +1,194 @@
1
+ # MCP Wayback Machine Server
2
+
3
+ [![npm version](https://img.shields.io/npm/v/mcp-wayback-machine.svg)](https://www.npmjs.com/package/mcp-wayback-machine)
4
+ [![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC-SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/)
5
+ [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/Mearman/mcp-wayback-machine/ci.yml?branch=main)](https://github.com/Mearman/mcp-wayback-machine/actions)
6
+
7
+ An MCP (Model Context Protocol) server and CLI tool for interacting with the Internet Archive's Wayback Machine. Supports full CDX search, snapshot content retrieval, screenshot listing, snapshot comparison, and optional authentication for higher rate limits.
8
+
9
+ ## Installation
10
+
11
+ ### As an MCP server
12
+
13
+ Add to your MCP client configuration (Claude Desktop, VS Code, etc.):
14
+
15
+ ```json
16
+ {
17
+ "mcpServers": {
18
+ "wayback-machine": {
19
+ "command": "npx",
20
+ "args": ["-y", "mcp-wayback-machine"],
21
+ "env": {
22
+ "WAYBACK_ACCESS_KEY": "your-access-key",
23
+ "WAYBACK_SECRET_KEY": "your-secret-key"
24
+ }
25
+ }
26
+ }
27
+ }
28
+ ```
29
+
30
+ The `env` block is optional — the server works anonymously without credentials. See [Credentials](#credentials) for details.
31
+
32
+ ### As a CLI tool
33
+
34
+ ```bash
35
+ npx mcp-wayback-machine save https://example.com
36
+ ```
37
+
38
+ Or install globally:
39
+
40
+ ```bash
41
+ npm install -g mcp-wayback-machine
42
+ wayback save https://example.com
43
+ ```
44
+
45
+ ## Tools
46
+
47
+ ### `save_url`
48
+
49
+ Archive a URL to the Wayback Machine using the SPN2 API.
50
+
51
+ | Parameter | Required | Description |
52
+ |---|---|---|
53
+ | `url` | Yes | The URL to archive |
54
+ | `captureScreenshot` | No | Capture a screenshot as a PNG image |
55
+ | `captureOutlinks` | No | Also archive up to 100 outlinked pages |
56
+ | `ifNotArchivedWithin` | No | Skip if archived within timeframe, e.g. `"30d"` |
57
+ | `jsBehaviorTimeout` | No | Run JavaScript for N seconds before capturing (max 30) |
58
+ | `forceGet` | No | Use simple HTTP GET instead of browser rendering |
59
+ | `delayWbAvailability` | No | Delay indexing ~12 hours to reduce server load |
60
+
61
+ ### `get_archived_url`
62
+
63
+ Retrieve an archived snapshot's content and metadata.
64
+
65
+ | Parameter | Required | Description |
66
+ |---|---|---|
67
+ | `url` | Yes | The URL to retrieve |
68
+ | `timestamp` | No | Specific timestamp (`YYYYMMDDhhmmss`) or `"latest"` |
69
+ | `modifier` | No | URL modifier: `id_` (raw), `im_` (screenshot), `js_` (JS), `cs_` (CSS) |
70
+
71
+ Returns the snapshot's HTML/content body, content type, archived URL, and timestamp.
72
+
73
+ ### `search_archives`
74
+
75
+ Search the CDX API for archived versions of a URL.
76
+
77
+ | Parameter | Required | Description |
78
+ |---|---|---|
79
+ | `url` | Yes | The URL pattern to search for |
80
+ | `matchType` | No | `exact`, `prefix`, `host`, or `domain` |
81
+ | `from` | No | Start date (`YYYYMMDD` or `YYYY-MM-DD`) |
82
+ | `to` | No | End date (`YYYYMMDD` or `YYYY-MM-DD`) |
83
+ | `limit` | No | Maximum results (default 10) |
84
+ | `offset` | No | Skip the first N results |
85
+ | `collapse` | No | Collapse duplicates, e.g. `"timestamp:8"` (per hour), `"digest"` |
86
+ | `filter` | No | Filter by field regex, e.g. `["statuscode:200", "!mimetype:image.*"]` |
87
+ | `resolveRevisits` | No | Resolve warc/revisit entries to original metadata |
88
+ | `showDupeCount` | No | Show duplicate count per capture |
89
+ | `page` | No | Page number for pagination |
90
+ | `pageSize` | No | Results per page |
91
+
92
+ ### `check_archive_status`
93
+
94
+ Check archival statistics for a URL — capture counts, yearly breakdowns, and first/last capture dates.
95
+
96
+ | Parameter | Required | Description |
97
+ |---|---|---|
98
+ | `url` | Yes | The URL to check |
99
+
100
+ ### `list_screenshots`
101
+
102
+ List available screenshots for a URL. Screenshots are generated when captures are made with `captureScreenshot: true`.
103
+
104
+ | Parameter | Required | Description |
105
+ |---|---|---|
106
+ | `url` | Yes | The URL to find screenshots for |
107
+ | `limit` | No | Maximum results (default 10) |
108
+
109
+ ### `compare_snapshots`
110
+
111
+ Compare two archived snapshots of a URL. Fetches the raw content of both and provides a visual diff URL.
112
+
113
+ | Parameter | Required | Description |
114
+ |---|---|---|
115
+ | `url` | Yes | The URL to compare snapshots for |
116
+ | `timestampA` | No | First timestamp. Defaults to oldest available. |
117
+ | `timestampB` | No | Second timestamp. Defaults to newest available. |
118
+
119
+ If no timestamps are provided, automatically selects the oldest and newest available snapshots.
120
+
121
+ ### `clear_cache`
122
+
123
+ Clear all cached API responses. Use when fresh data is needed or after saving a new URL.
124
+
125
+ ## CLI Usage
126
+
127
+ ```bash
128
+ # Archive a URL
129
+ wayback save https://example.com
130
+
131
+ # Retrieve archived content
132
+ wayback get https://example.com
133
+ wayback get https://example.com --timestamp 20231225120000
134
+
135
+ # Search archived versions
136
+ wayback search https://example.com --from 2023-01-01 --to 2023-12-31
137
+ wayback search https://example.com --limit 20
138
+
139
+ # Check archival statistics
140
+ wayback status https://example.com
141
+
142
+ # List screenshots
143
+ wayback screenshots https://example.com
144
+
145
+ # Compare two snapshots
146
+ wayback compare https://example.com
147
+ wayback compare https://example.com --timestamp-a 20230101000000 --timestamp-b 20240101000000
148
+ ```
149
+
150
+ ## Credentials
151
+
152
+ The server works anonymously by default. For higher SPN2 rate limits, set Internet Archive S3 credentials via environment variables:
153
+
154
+ ```bash
155
+ export WAYBACK_ACCESS_KEY="your-access-key"
156
+ export WAYBACK_SECRET_KEY="your-secret-key"
157
+ ```
158
+
159
+ Credentials are only sent on `/save` endpoints. All read operations (retrieve, search, status, screenshots, compare) work without authentication.
160
+
161
+ To obtain credentials, log in to [archive.org](https://archive.org) and visit your account settings to generate S3 access keys.
162
+
163
+ ## Technical Details
164
+
165
+ - **Transport**: stdio (MCP client integration)
166
+ - **Caching**: in-memory and disk-based with per-endpoint TTLs:
167
+ - Snapshot content: 24 hours (immutable once captured)
168
+ - Availability, CDX, sparkline: 1 hour (grows but never mutates)
169
+ - Save operations: 30 minutes (idempotent per URL)
170
+ - Save status polling: 30 seconds (changes during active jobs)
171
+ - **Rate limiting**: 15 requests per minute, with automatic Retry-After handling for 429 responses
172
+ - **Validation**: Zod schemas for all inputs and API responses
173
+ - **Node.js 22+** required
174
+
175
+ ## Development
176
+
177
+ Requires [pnpm](https://pnpm.io) and Node.js 22+.
178
+
179
+ ```bash
180
+ pnpm install
181
+ pnpm validate # typecheck + lint + test + build
182
+ ```
183
+
184
+ ## Resources
185
+
186
+ - [Wayback Machine APIs](https://archive.org/developers/wayback-api.html)
187
+ - [CDX Server Documentation](https://github.com/internetarchive/wayback/tree/master/wayback-cdx-server)
188
+ - [Save Page Now 2 (SPN2) API](https://docs.google.com/document/d/1Nsv52MvSjbLb2PCpHlat0gkzw0EvtSgpKHu4mk0MnrA/)
189
+
190
+ ## License
191
+
192
+ [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](http://creativecommons.org/licenses/by-nc-sa/4.0/).
193
+
194
+ [![CC BY-NC-SA 4.0](https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-nc-sa/4.0/)
package/dist/bin.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
package/dist/bin.js ADDED
@@ -0,0 +1,181 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { GetArchivedUrl, getArchivedUrl } from "./tools/retrieve.js";
5
+ import { SaveUrl, saveUrl } from "./tools/save.js";
6
+ import { SearchArchives, searchArchives } from "./tools/search.js";
7
+ import { CheckArchiveStatus, checkArchiveStatus } from "./tools/status.js";
8
+ import { ListScreenshots, listScreenshots } from "./tools/screenshots.js";
9
+ import { ClearCache, clearCache } from "./tools/cache.js";
10
+ import { CompareSnapshots, compareSnapshots } from "./tools/compare.js";
11
+ import { context } from "./contexts.js";
12
+ import pkg from "../package.json" with { type: "json" };
13
+ const VERSION = pkg.version;
14
+ const server = new McpServer({
15
+ name: "mcp-wayback-machine",
16
+ version: VERSION,
17
+ }, {
18
+ capabilities: {
19
+ tools: {},
20
+ },
21
+ instructions: "Interact with the Internet Archive's Wayback Machine to save, retrieve, search, and check the archival status of URLs. " +
22
+ "Supports screenshot retrieval, full CDX search with filtering/pagination, " +
23
+ "and optional authentication for higher rate limits.",
24
+ });
25
+ server.registerTool("save_url", {
26
+ description: "Save a URL to the Wayback Machine for archival using the SPN2 API. " +
27
+ "Supports capturing screenshots, outlinks, and conditional archiving. " +
28
+ "Set WAYBACK_ACCESS_KEY and WAYBACK_SECRET_KEY env vars for higher rate limits.",
29
+ inputSchema: SaveUrl,
30
+ }, async (args) => {
31
+ const result = await saveUrl(args, context);
32
+ let text = result.message;
33
+ if (result.archivedUrl !== undefined) {
34
+ text += `\n\nArchived URL: ${result.archivedUrl}`;
35
+ }
36
+ if (result.timestamp !== undefined) {
37
+ text += `\nTimestamp: ${result.timestamp}`;
38
+ }
39
+ if (result.jobId !== undefined) {
40
+ text += `\nJob ID: ${result.jobId}`;
41
+ }
42
+ return { content: [{ type: "text", text }] };
43
+ });
44
+ server.registerTool("get_archived_url", {
45
+ description: "Retrieve an archived version of a URL from the Wayback Machine. " +
46
+ "Returns the snapshot content. Supports URL modifiers: " +
47
+ "id_ (raw content), im_ (screenshot image), js_ (JavaScript), cs_ (CSS).",
48
+ inputSchema: GetArchivedUrl,
49
+ }, async (args) => {
50
+ const result = await getArchivedUrl(args, context);
51
+ let text = result.message;
52
+ if (result.archivedUrl !== undefined) {
53
+ text += `\n\nArchived URL: ${result.archivedUrl}`;
54
+ }
55
+ if (result.timestamp !== undefined) {
56
+ text += `\nTimestamp: ${result.timestamp}`;
57
+ }
58
+ if (result.available !== undefined) {
59
+ text += `\nAvailable: ${result.available ? "Yes" : "No"}`;
60
+ }
61
+ if (result.content !== undefined) {
62
+ text += `\n\nContent-Type: ${result.contentType ?? "unknown"}`;
63
+ text += `\n\n${result.content}`;
64
+ }
65
+ return { content: [{ type: "text", text }] };
66
+ });
67
+ server.registerTool("search_archives", {
68
+ description: "Search the Wayback Machine CDX API for archived versions of a URL. " +
69
+ "Supports match types (exact/prefix/host/domain), date range filtering, " +
70
+ "collapsing duplicates, field filtering, pagination, and duplicate counting.",
71
+ inputSchema: SearchArchives,
72
+ }, async (args) => {
73
+ const result = await searchArchives(args, context);
74
+ let text = result.message;
75
+ if (result.results !== undefined && result.results.length > 0) {
76
+ text += "\n\nResults:";
77
+ for (const archive of result.results) {
78
+ text += `\n\n- Date: ${archive.date}`;
79
+ text += `\n URL: ${archive.archivedUrl}`;
80
+ text += `\n Status: ${archive.statusCode}`;
81
+ text += `\n Type: ${archive.mimeType}`;
82
+ if (archive.duplicateCount !== undefined) {
83
+ text += `\n Duplicates: ${String(archive.duplicateCount)}`;
84
+ }
85
+ }
86
+ }
87
+ return { content: [{ type: "text", text }] };
88
+ });
89
+ server.registerTool("check_archive_status", {
90
+ description: "Check if a URL has been archived by the Wayback Machine and get capture " +
91
+ "statistics including yearly breakdowns.",
92
+ inputSchema: CheckArchiveStatus,
93
+ }, async (args) => {
94
+ const result = await checkArchiveStatus(args, context);
95
+ let text = result.message;
96
+ if (result.isArchived) {
97
+ if (result.firstCapture !== undefined) {
98
+ text += `\n\nFirst captured: ${result.firstCapture}`;
99
+ }
100
+ if (result.lastCapture !== undefined) {
101
+ text += `\nLast captured: ${result.lastCapture}`;
102
+ }
103
+ if (result.totalCaptures !== undefined) {
104
+ text += `\nTotal captures: ${String(result.totalCaptures)}`;
105
+ }
106
+ if (result.yearlyCaptures !== undefined &&
107
+ Object.keys(result.yearlyCaptures).length > 0) {
108
+ text += "\n\nCaptures by year:";
109
+ for (const [year, count] of Object.entries(result.yearlyCaptures)) {
110
+ text += `\n ${year}: ${String(count)}`;
111
+ }
112
+ }
113
+ }
114
+ return { content: [{ type: "text", text }] };
115
+ });
116
+ server.registerTool("list_screenshots", {
117
+ description: "List available screenshots for a URL from the Wayback Machine. " +
118
+ "Screenshots are generated when captures are made with capture_screenshot=1.",
119
+ inputSchema: ListScreenshots,
120
+ }, async (args) => {
121
+ const result = await listScreenshots(args, context);
122
+ let text = result.message;
123
+ if (result.screenshots !== undefined && result.screenshots.length > 0) {
124
+ text += "\n\nScreenshots:";
125
+ for (const screenshot of result.screenshots) {
126
+ text += `\n\n- Date: ${screenshot.date}`;
127
+ text += `\n Screenshot: ${screenshot.screenshotUrl}`;
128
+ text += `\n Original: ${screenshot.originalUrl}`;
129
+ }
130
+ }
131
+ return { content: [{ type: "text", text }] };
132
+ });
133
+ server.registerTool("clear_cache", {
134
+ description: "Clear all cached Wayback Machine API responses. " +
135
+ "Use when fresh data is needed or after saving a URL.",
136
+ inputSchema: ClearCache,
137
+ }, async () => {
138
+ const result = await clearCache();
139
+ return { content: [{ type: "text", text: result.message }] };
140
+ });
141
+ server.registerTool("compare_snapshots", {
142
+ description: "Compare two archived snapshots of a URL. " +
143
+ "Fetches the raw content of both snapshots and provides a visual diff URL. " +
144
+ "If no timestamps specified, compares the oldest and newest available snapshots.",
145
+ inputSchema: CompareSnapshots,
146
+ }, async (args) => {
147
+ const result = await compareSnapshots(args, context);
148
+ let text = result.message;
149
+ if (result.snapshotA !== undefined && result.snapshotB !== undefined) {
150
+ text += `\n\nSnapshot A: ${result.snapshotA.date} (${result.snapshotA.timestamp})`;
151
+ text += `\nSnapshot B: ${result.snapshotB.date} (${result.snapshotB.timestamp})`;
152
+ }
153
+ if (result.changesUrl !== undefined) {
154
+ text += `\n\nVisual diff: ${result.changesUrl}`;
155
+ }
156
+ if (result.contentA !== undefined) {
157
+ text += `\n\n--- Snapshot A Content ---\n${result.contentA}`;
158
+ }
159
+ if (result.contentB !== undefined) {
160
+ text += `\n\n--- Snapshot B Content ---\n${result.contentB}`;
161
+ }
162
+ return { content: [{ type: "text", text }] };
163
+ });
164
+ async function main() {
165
+ const isCliMode = process.stdin.isTTY || process.argv.length > 2;
166
+ if (isCliMode && process.argv.length > 2) {
167
+ const { createCLI } = await import("./cli.js");
168
+ const program = createCLI();
169
+ await program.parseAsync(process.argv);
170
+ }
171
+ else {
172
+ const transport = new StdioServerTransport();
173
+ await server.connect(transport);
174
+ console.error("MCP Wayback Machine server running on stdio");
175
+ }
176
+ }
177
+ main().catch((error) => {
178
+ console.error("Fatal error:", error);
179
+ process.exit(1);
180
+ });
181
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createCLI(): Command;
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,SAAS,YA4OxB"}