mcp-libraryofcongress 2.1.1 → 3.0.0
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.
- package/CHANGELOG.md +36 -0
- package/README.md +48 -5
- package/dist/index.js +574 -267
- package/dist/index.js.map +1 -1
- package/dist/loc/client.d.ts +4 -4
- package/dist/loc/client.js +319 -142
- package/dist/loc/client.js.map +1 -1
- package/package.json +18 -9
- package/server.json +68 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.0.0
|
|
4
|
+
|
|
5
|
+
- **This server now needs node 24 or later.** Node 20 reached its end of
|
|
6
|
+
support on 2026-04-30 and node 22 is no longer what this code is built and
|
|
7
|
+
typed against. That is what makes this a major version: an install on an
|
|
8
|
+
older node is refused rather than left to fail somewhere later.
|
|
9
|
+
- **Every refusal of an argument opens with `invalid_input`.** A value outside
|
|
10
|
+
its bounds, of the wrong type, or outside the set an argument reads used to
|
|
11
|
+
come back in the validator's own words, with no code to branch on.
|
|
12
|
+
- **A container image is published for each version**, on ghcr, for amd64 and
|
|
13
|
+
arm64. The readme carries the configuration that runs it.
|
|
14
|
+
- The published package carries its changelog, and the entry point it declares
|
|
15
|
+
for the package root now publishes its types.
|
|
16
|
+
|
|
17
|
+
## 2.1.2
|
|
18
|
+
|
|
19
|
+
- A search the Library could not run is reported as a failure instead of as an
|
|
20
|
+
empty catalogue. Under load the site answers with a rendered page holding no
|
|
21
|
+
rows and a pagination block counting zero results, written in exactly the
|
|
22
|
+
words a search that genuinely matched nothing is written in: the collections
|
|
23
|
+
listing, which holds 584 collections and takes no query at all, came back as
|
|
24
|
+
`of: 0` beside an empty `results`, and the server published that as the
|
|
25
|
+
Library having gathered no collection. What separates the two is what the site
|
|
26
|
+
says about keeping the answer. A search it stands behind may be kept for a
|
|
27
|
+
day; the page it renders while its search is failing carries `no-cache` and a
|
|
28
|
+
lifetime of zero. A count of zero read off such a page is now `rate_limited`,
|
|
29
|
+
which says the site could not answer and says nothing about what the Library
|
|
30
|
+
holds. The catalogue, newspaper and collections searches all read their count
|
|
31
|
+
from that block, so all three are covered. A search that really matches
|
|
32
|
+
nothing still answers with a count of zero.
|
|
33
|
+
- The nightly live canary tells a contract that moved apart from a site that
|
|
34
|
+
could not answer. A route that came back rate limited, unreachable or out of
|
|
35
|
+
time leaves that case out of the run and names it on stderr, so only an answer
|
|
36
|
+
this server could not read fails the canary and opens an issue. Each assertion
|
|
37
|
+
states the field or the behaviour it holds the site to.
|
|
38
|
+
|
|
3
39
|
## 2.1.1
|
|
4
40
|
|
|
5
41
|
- The README carries the same badge row as every server here: npm, CI, the
|
package/README.md
CHANGED
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
[](./LICENSE)
|
|
6
6
|
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.smeet666/mcp-libraryofcongress)
|
|
7
7
|
[](https://glama.ai/mcp/servers/smeet666/mcp-libraryofcongress)
|
|
8
|
+
[](https://m8ven.ai/mcp/smeet666-mcp-libraryofcongress-1rr3lc)
|
|
8
9
|
[](https://cursor.com/en/install-mcp?name=libraryofcongress&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIm1jcC1saWJyYXJ5b2Zjb25ncmVzcyJdfQ%3D%3D)
|
|
9
10
|
[](https://insiders.vscode.dev/redirect/mcp/install?name=libraryofcongress&config=%7B%22name%22%3A%22libraryofcongress%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22mcp-libraryofcongress%22%5D%7D)
|
|
11
|
+
<!-- m8ven-verify: 69c0541bf1d6a6e94b450b4d2b058659 -->
|
|
10
12
|
|
|
11
13
|
An MCP server for the [Library of Congress](https://www.loc.gov). **Search the
|
|
12
14
|
text scanned off digitised American newspaper pages**, search the catalogue by
|
|
@@ -41,7 +43,24 @@ claude mcp add libraryofcongress -- npx -y mcp-libraryofcongress
|
|
|
41
43
|
}
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
### With Docker
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"libraryofcongress": {
|
|
52
|
+
"command": "docker",
|
|
53
|
+
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-libraryofcongress:3.0.0"]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`-i` keeps stdin open, which is where the protocol travels, and no `-t` is
|
|
60
|
+
passed: a TTY rewrites the stream and breaks it. The container needs outbound
|
|
61
|
+
HTTPS to `www.loc.gov` and `lccn.loc.gov`, and nothing else: no volume, no port, no environment variable, no credential.
|
|
62
|
+
|
|
63
|
+
Node 24 or later.
|
|
45
64
|
|
|
46
65
|
**Bundle, without npm**
|
|
47
66
|
|
|
@@ -299,8 +318,11 @@ console.log(data.paging.resultCount, data.hits[0]?.sourceUrl);
|
|
|
299
318
|
## Troubleshooting
|
|
300
319
|
|
|
301
320
|
**`rate_limited`.** The site asked this client to slow down, or this server was
|
|
302
|
-
asked for more than its pacing allows. It
|
|
303
|
-
|
|
321
|
+
asked for more than its pacing allows. It also covers a search the site could
|
|
322
|
+
not run: it answers then with a page holding no rows and refuses to have that
|
|
323
|
+
page kept, and a count of nothing read off it would say the Library holds
|
|
324
|
+
nothing. It says nothing about whether the Library holds what you asked for.
|
|
325
|
+
Wait and ask again.
|
|
304
326
|
|
|
305
327
|
**`parse_failure`.** A response arrived in a shape this server cannot read,
|
|
306
328
|
which includes a long answer cut off in transit. It usually means a route
|
|
@@ -391,7 +413,25 @@ claude mcp add libraryofcongress -- npx -y mcp-libraryofcongress
|
|
|
391
413
|
}
|
|
392
414
|
```
|
|
393
415
|
|
|
394
|
-
|
|
416
|
+
### Avec Docker
|
|
417
|
+
|
|
418
|
+
```json
|
|
419
|
+
{
|
|
420
|
+
"mcpServers": {
|
|
421
|
+
"libraryofcongress": {
|
|
422
|
+
"command": "docker",
|
|
423
|
+
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-libraryofcongress:3.0.0"]
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
`-i` garde l'entrée standard ouverte, qui est le canal du protocole, et aucun
|
|
430
|
+
`-t` n'est passé : un terminal réécrit le flux et le casse. Le conteneur a besoin
|
|
431
|
+
d'un accès HTTPS sortant vers `www.loc.gov` et `lccn.loc.gov`, et de rien d'autre :
|
|
432
|
+
aucun volume, aucun port, aucune variable d'environnement, aucun identifiant.
|
|
433
|
+
|
|
434
|
+
Node 24 ou plus récent.
|
|
395
435
|
|
|
396
436
|
**Bundle, sans npm**
|
|
397
437
|
|
|
@@ -659,7 +699,10 @@ console.log(data.paging.resultCount, data.hits[0]?.sourceUrl);
|
|
|
659
699
|
## Dépannage
|
|
660
700
|
|
|
661
701
|
**`rate_limited`.** Le site demande à ce client de ralentir, ou ce serveur a été
|
|
662
|
-
sollicité au-delà de sa cadence.
|
|
702
|
+
sollicité au-delà de sa cadence. Ce code couvre aussi une recherche que le site
|
|
703
|
+
n'a pas pu exécuter : il répond alors par une page sans aucune ligne et refuse
|
|
704
|
+
qu'elle soit conservée, et un compte de zéro lu sur cette page affirmerait que
|
|
705
|
+
la Library ne conserve rien. Cela ne dit rien de ce que la Library conserve.
|
|
663
706
|
Attendez et redemandez.
|
|
664
707
|
|
|
665
708
|
**`parse_failure`.** Une réponse est arrivée dans une forme illisible pour ce
|