# mcp-libraryofcongress [Health: Active]

**Category:** 🎨 Art & Culture  
**Repository:** https://github.com/smeet666/mcp-libraryofcongress  
**GitHub Stars:** 0  
**npm Downloads (last month):** 456  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/mcp-libraryofcongress

## Description
Search inside scanned US newspapers and browse the Library of Congress catalogue. No API key.

## Tools
Capabilities this server exposes over MCP:

- **search_newspapers** — Search the text inside digitised American newspaper pages held by the Library of Congress. This reads what optical recognition took off the scanned pages, so it finds a phrase that appears nowhere in a title or a catalogue record. Double quotes change how the Library matches the words, and it decides what they mean: a page can come back carrying the words apart or in another order rather than the phrase as written. What the quotes do to the number of matching pages varies from one query to the next, so run the search both ways rather than expecting either form to return more. 'total' counts the pages that match, and they page: ask for page 2, 3 and so on to see beyond the first answer. It is not a count of how many times the words occur. Each match names the newspaper, the date, the leaf of the issue and the state it was published in, and 'source_url' opens that leaf with the query applied. 'location' keeps to papers published in one state, 'publication' to a single paper, and 'year_from' with 'year_to' to a span of years. A filter matching nothing is dropped and the answer says so. Every match carries 'excerpt_kind', and the excerpts are labelled with it in the text. A 'passage' is the text around the words that matched. A 'page_opening' is the start of the page, sent because the text the Library returned with the row stops before those words appear, so it does not carry the match and quoting it quotes something else. Use search_items instead when looking for a work by its title, creator or subject.
- **search_items** — Search the Library of Congress catalogue: books, photographs, maps, recordings, films, manuscripts, sheet music and newspaper titles. 'media_type' is required, because the Library keeps a separate catalogue for each kind of thing. This matches titles, creators and catalogue descriptions. It does not read the text inside a scan; use search_newspapers for a phrase printed on a newspaper page. Filters take the words the Library itself uses: 'subject' and 'location' as the rows here spell them, 'language' written in English, 'collection' as list_collections reports it under 'collection_filter'. A filter matching nothing is set aside and the search asked again without it; the answer names what was dropped, and the count it reports is then the unfiltered search's. By default only material with a digitised copy is returned; set 'online_only' to false to take in records the Library holds on a shelf alone. A row carries an 'identifier' get_item takes when it names a record. A row that is a collection the Library gathered names no record: 'is_collection' is true there, 'identifier' is null, and 'source_url' opens the collection.
- **get_item** — Read one Library of Congress record by its identifier, as returned by search_items or search_newspapers. An identifier can carry slashes: a single newspaper issue is named by its paper, its date and its edition together. Sections are opt-in: 'basic' is the default and covers what a description needs. 'date' carries only the precision the record's own words support, and 'date_stated' repeats those words, which can be a span of years the record was filed at the opening of. Where the Library has established no date it files the record under a cataloguing code, which 'date_code' carries while 'date' and 'year' stay null. 'citations' returns the ready-made citations the Library publishes for the record. 'resources' lists the served copies, such as page images and downloadable files. 'full_metadata' returns every field the Library publishes for the record, which is large and rarely needed. A long description paginates: when 'next_offset' is not null, call again with 'offset' set to it.
- **list_collections** — List the digital collections of the Library of Congress: bodies of material a curator chose, described and published together. Use it to see what is there before searching, since a collection names a corpus that a query would have to guess at. 'collection_filter' on each row is the wording search_items takes as its 'collection' argument, and 'searchable_media_types' names the catalogues that filter can be sent to. A collection whose 'searchable_media_types' is empty gathers a kind of thing the catalogue search is not divided into, such as web archives; set 'searchable_only' to leave those out. 'item_count' is how many records the collection gathers, which is the size of the corpus rather than the number of rows here.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "mcp-libraryofcongress": {
    "command": "npx",
    "args": ["-y","mcp-libraryofcongress"]
  }
}
```

## Documentation

## What the mcp-libraryofcongress MCP server does

The mcp-libraryofcongress MCP server gives an AI client access to selected Library of Congress discovery functions. It can search the words found inside scanned US newspaper pages, search catalogue records, retrieve an individual item record, and list digital collections published by Library of Congress curators.

Newspaper searching uses text produced by optical character recognition. Results can include the matching page’s identifier, title, contributing library, year, page number, publication details, state, excerpts, and a source URL. Catalogue searches can cover books, photographs, maps, audio, manuscripts, or newspapers, with filters such as date, subject, location, language, and collection.

## How it works

The server communicates with an MCP client over the standard local process configuration. A client invokes one of four tools:

- `search_newspapers` searches OCR text from scanned newspaper pages.
- `search_items` searches Library of Congress catalogue records.
- `get_item` reads a record, its rights information, and where the original is held.
- `list_collections` returns the available digital collections.

A typical research flow starts with `search_newspapers` or `search_items`. Search results provide an `identifier`, which can then be passed to `get_item` for more record detail. Newspaper results are paginated by matching leaves, not by the number of times a phrase appears. Excerpts may be centered on a match or may show the beginning of a page when the returned text does not include the matching words, so excerpts should be interpreted alongside their metadata.

## Setup and configuration

The mcp-libraryofcongress MCP server does not require an API key, account, environment variable, volume, port, or credential. The npm-based setup requires Node 24 or later:

```json
{
  "mcpServers": {
    "libraryofcongress": {
      "command": "npx",
      "args": ["-y", "mcp-libraryofcongress"]
    }
  }
}
```

Claude Code can add it with `claude mcp add libraryofcongress -- npx -y mcp-libraryofcongress`. Docker is also supported with the image `ghcr.io/smeet666/mcp-libraryofcongress:3.0.2`; stdin must remain open, and the container needs outbound HTTPS access to `www.loc.gov` and `chroniclingamerica.loc.gov`. An `.mcpb` bundle is available for clients that support MCP bundles and includes its dependencies.

## Tools and capabilities

`search_newspapers` requires a query of 1–300 characters. Optional filters include publication location, publication name, year range, result limit, page number, excerpt length, and excerpts per match. Its result limit defaults to 10 and can be set from 1 to 25.

`search_items` requires a query of 1–300 characters. It supports media-type, year, subject, location, language, and collection filters. `get_item` uses an item identifier from a search result. `list_collections` lists the digital collections exposed by the Library of Congress.

## Limitations and notes

Newspaper matches depend on OCR text, so the returned text can differ from the scan. A `page_opening` excerpt does not necessarily contain the query match; it is provided when the Library of Congress response does not expose the matching text in that excerpt. The `total` value for newspaper searches counts matching newspaper leaves, not occurrences of the query.

The mcp-libraryofcongress MCP server is focused on discovery and record retrieval.

_Full upstream README: https://allmcps.com/mcp/mcp-libraryofcongress/readme_

