Search inside scanned US newspapers and browse the Library of Congress catalogue. No API key.
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 Library of Congress is the national library of the United States, and it publishes a large part of its holdings online: books, photographs, maps, sound recordings, manuscripts, and the pages of American newspapers going back to the eighteenth century. The newspaper pages have been scanned and run through optical character recognition, so the words printed on them can be searched. Curators also gather material into digital collections, each described and published as a body of its own.
This server connects a chat client to that library. You can search the words printed inside the newspapers, search the catalogue by title, creator, subject, place or language, read one record with its rights statement and where the original is held, and list the digital collections. 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
www.loc.gov and chroniclingamerica.loc.gov, and nothing else: no volume, no
port, no credential.
Download mcp-libraryofcongress-3.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_newspapers | Searches the words printed inside scanned newspaper pages. |
search_items | Searches the catalogue by title, creator, subject, place or language. |
get_item | Reads one record, its rights and where the original is held. |
list_collections | Lists the digital collections curators published. |
search_newspapersSearches the text of scanned newspaper pages, which came off the page through optical character recognition.
| Argument | Type | Required | What it does |
|---|---|---|---|
query | string, 1 to 300 characters | yes | The words to look for on the pages. |
location | string, up to 120 characters | no | A place the paper was published in. |
publication | string, up to 200 characters | no | One newspaper. |
year_from | integer, 1000 to 9999 | no | Earliest year, inclusive. |
year_to | integer, 1000 to 9999 | no | Latest year, inclusive. |
limit | integer, 1 to 25, 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 page. |
In return: hits, each carrying identifier, which get_item takes;
title; creator, which is the library that contributed the scan; year;
page_number, the leaf within the issue; published_on; publication with the
years the paper ran; state; excerpts; and excerpt_kind.
excerpt_kind decides what an excerpt is worth. A passage is the text
around the words that matched, centred on them. A page_opening is the start of
the leaf, sent because the text the Library returned with the row stops before
those words appear: it does not carry the match, so quoting it quotes something
else, and source_url opens the leaf with the query applied. total counts
newspaper leaves, and it pages: it is never a count of how many times the words
occur.
search_itemsSearches the catalogue, one kind of thing at a time.
| Argument | Type | Required | What it does |
|---|---|---|---|
query | string, 1 to 300 characters | yes | Words to look for. |
media_type | books, photos, maps, audio, manuscripts or newspapers | no | The catalogue to read. |
year_from | integer, 1000 to 9999 | no | Earliest year, inclusive. |
year_to | integer, 1000 to 9999 | no | Latest year, inclusive. |
subject | string, up to 120 characters | no | A subject heading. |
location | string, up to 120 characters | no | A place. |
language | string, up to 120 characters | no | A language, written in English. |
collection | string, up to 160 characters | no | One collection, as list_collections names it. |
online_only | boolean, default true | no | Keep the records available online. |
sort | relevance, 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,
date as published, which is often a range, is_collection and source_url.
The Library keeps one catalogue per kind of thing, so a search without
media_type reads the general one, and total counts the records matching
there.
get_itemNo 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-libraryofcongress)<a href="https://allmcps.com/mcp/mcp-libraryofcongress"><img src="https://allmcps.com/api/badge/mcp-libraryofcongress?style=directory" alt="MCP Libraryofcongress on AllMCPs" /></a>