Skip to main content
ClaudeWave
cyanheads avatar
cyanheads

libofcongress-mcp-server

View on GitHub

Search LOC digital collections, browse Chronicling America newspapers with full OCR text, and look up LC Subject Headings via MCP. STDIO or Streamable HTTP.

MCP ServersOfficial Registry5 stars1 forks● TypeScriptApache-2.0Updated today
ClaudeWave Trust Score
95/100
✓ Verified
Passed
  • ✓Open-source license (Apache-2.0)
  • ✓Actively maintained (<30d)
  • ✓Clear description
  • ✓Topics declared
  • ✓Documented (README)
Last scanned: 10/15/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/cyanheads/libofcongress-mcp-server
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "libofcongress": {
      "command": "node",
      "args": ["/path/to/libofcongress-mcp-server/dist/index.js"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/cyanheads/libofcongress-mcp-server and follow its README for install instructions.
Use cases

MCP Servers overview

<div align="center">
  <h1>@cyanheads/libofcongress-mcp-server</h1>
  <p><b>Search LOC digital collections, browse Chronicling America newspapers with full OCR text, and look up LC Subject Headings via MCP. STDIO or Streamable HTTP.</b>
  <div>6 Tools • 1 Resource</div>
  </p>
</div>

<div align="center">

[![Version](https://img.shields.io/badge/Version-0.5.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/libofcongress-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^2.3.1-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/%40cyanheads%2Flibofcongress-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/libofcongress-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.3%2B-blueviolet.svg?style=flat-square)](https://bun.sh/)

</div>

<div align="center">

[![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/libofcongress-mcp-server/releases/latest/download/libofcongress-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=libofcongress-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvbGlib2Zjb25ncmVzcy1tY3Atc2VydmVyIl19) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22libofcongress-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Flibofcongress-mcp-server%22%5D%7D)

[![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)

</div>

<div align="center">

**Public Hosted Server:** [https://libofcongress.caseyjhand.com/mcp](https://libofcongress.caseyjhand.com/mcp)

</div>

---

## Overview

Library of Congress digital collections, Chronicling America newspaper archives, and LC Subject Headings (LCSH) authority data. Search items and newspaper pages, retrieve full item metadata and OCR text, resolve LCSH subject terms, and browse curated collections from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.

### Tools

| Tool | Description |
|:-----|:------------|
| `libofcongress_search_items` | Search LOC digital collections by keyword with format, date range, subject, location, and collection filters. |
| `libofcongress_get_item` | Retrieve full metadata for a specific LOC digital item — contributors, subjects, rights, formats, its digital resources, and a paged list of its pages. |
| `libofcongress_search_newspapers` | Search historical newspaper pages in the Chronicling America corpus with OCR excerpts. |
| `libofcongress_get_newspaper_page` | Retrieve the full text and metadata of one page — a newspaper page, or a book or manuscript page from `libofcongress_get_item`. |
| `libofcongress_search_subjects` | Search Library of Congress Subject Headings (LCSH) by keyword. |
| `libofcongress_browse_collections` | List and browse LOC curated digital collections, optionally filtered by keyword. |

### Resources

| Resource | Description |
|:-----|:------------|
| `libofcongress://item/{+item_id}` | LOC digital item metadata by ID — stable URI for injecting item context into agent conversations. |

All resource data is also reachable via `libofcongress_get_item`. Use `libofcongress_search_items` to discover item IDs first.

## Capability reference

### `libofcongress_search_items` <sub>tool</sub>

- Filters: eight material formats (`photo`, `map`, `newspaper`, `manuscript`, `audio`, `film`, `book`, `notated-music`), inclusive year range (`date_start`/`date_end`), subject (an LCSH heading from `libofcongress_search_subjects` or a facet term, split at `--` into lowercase terms with dates dropped and ANDed — `United States--History--Civil War, 1861-1865` filters on `united states` + `history` + `civil war`), location, and `collection_slug` (from `libofcongress_browse_collections`, mutually exclusive with `format`); up to 100 results per page — a larger `limit` (up to 1000) is served as a 100-result page with `effectiveLimit` and a notice
- Each result's `date` is the date as LOC catalogs it (`c1915 Feb. 19.`), not the padded `YYYY-01-01` sort key LOC uses for photos
- Each result carries `is_item` — `true` for catalog items whose `id` resolves via `libofcongress_get_item`, `false` for collections, exhibit/guide pages, and newspaper pages, whose `url` should be opened instead
- `include_facets: true` adds `subject_facets` and `location_facets` — LOC's top 10 subject and location terms across all matches, each with its item count, the values the `subject` and `location` filters accept. Off by default, since the facet block adds LOC response time to every search
- A zero-result notice names the subject terms and location it applied

---

### `libofcongress_get_item` <sub>tool</sub>

- Takes a search result's `id`, simple or multi-segment (newspaper issues: `sn95047246/1935-09-05/ed-1`), or a loc.gov item link (`https://www.loc.gov/item/2017760320/`, `http://` or without `www.`, `item/2017760320`), read as its bare ID; any other URL — a `/resource/` page URL, another host — is rejected as `invalid_item_id` before any request. Returns contributors with their roles, LCSH `subject_headings` as cataloged (`Transportation--Oklahoma--Maps`), `subject_terms` (the lowercase facet terms the search `subject` filter accepts), notes, summary, languages, locations, rights, physical description, call number, former IDs, formats, and `access_restricted`
- `date` is the date as LOC catalogs it (`1936 Apr.`, `1909-1911.`), not the padded sort key LOC keeps for photos
- `rights_information` is plain text: where LOC sends its rights statement as HTML, the tags are dropped and each link's target is kept as an absolute URL (`Copyright and other Restrictions (https://www.loc.gov/legal/)`). Catalog text from `www.loc.gov` arrives with its HTML character references (`&#8217;`, `&hellip;`) decoded, on every tool; page text from `libofcongress_get_newspaper_page` is returned as the text service sends it, since that text is not HTML-escaped
- `resources` lists each digital resource with its page count, representative `image`, `pdf`, and `audio` (MP3); `pages` lists a window of the item's pages — each a `page_url` and `has_text` — 50 at a time by default (`page_offset`, `page_limit`, `page_total`, `next_page_offset`; at most 100 per call — a larger `page_limit`, up to 1000, is served as 100 with `effectivePageLimit` and a notice). A page with text reads through `libofcongress_get_newspaper_page`. `include_files: true` adds each listed page's download URLs (JPEG sizes, JP2, TIFF, text)
- `related_items` carries related record IDs or URLs in full; fields absent upstream are omitted rather than filled

---

### `libofcongress_search_newspapers` <sub>tool</sub>

- Filters: keyword, inclusive date range down to the day (`date_start`/`date_end` take an integer year or a `YYYY`, `YYYY-MM`, or `YYYY-MM-DD` string), US state (full name or postal code, matched against the state LOC indexes each title under), and newspaper title (the exact `newspaper_title` of a search result); up to 100 results per page — a larger `limit` (up to 1000) is served as a 100-result page with `effectiveLimit` and a notice
- Each result carries a ~500-character OCR excerpt for relevance assessment (in a fenced code block in the text output), `states` (every state LOC indexes the title under), and the `url` that `libofcongress_get_newspaper_page` takes verbatim

---

### `libofcongress_get_newspaper_page` <sub>tool</sub>

- Takes the `url` from a `libofcongress_search_newspapers` result, or a `pages[].page_url` from `libofcongress_get_item` — newspaper, book, and manuscript pages alike. Also reads the same `/resource/` URL over `http://` or without `www.`, a newspaper page path ending `/ed-N/seq-M/`, and a Chronicling America page link (`chroniclingamerica.loc.gov/lccn/<lccn>/<date>/ed-N/seq-M/` or `www.loc.gov/chroniclingamerica/lccn/…`), each as its `https://www.loc.gov/resource/…/?sp=M` page; the output `page_url` is that URL, with only the `sp` query parameter kept. Rejected as `invalid_page_url` before any request: a Chronicling America link that names no single page (an issue link without `seq-M`, an `/ocr/` view, a file link), any other host, a path with a dot segment or percent-escape, and a non-numeric `sp`
- Returns that page's own text (OCR, or a volunteer transcription for some manuscripts) as `ocr_text` — in the text output, a fenced code block holding the same text, so OCR noise never reads as Markdown — with the issue's `newspaper_title`, `date`, `place_of_publication`, `states`, `edition`, the page's `sequence`, and the page count `segment_count`; `ocr_available: false` marks an image-only page, and a `notice` says why a page with text came back empty — a text service that did not answer (retry) or a body that could not be read as text (retrying will not help)

---

### `libofcongress_search_subjects` <sub>tool</sub>

- Keyword query, up to 50 results per call (default 10; a larger `limit`, up to 1000, returns up to 50 with a notice); returns the authorized LCSH `label` and stable LOC `uri`, ranked by relevance with an exact match for the query first — pass the label verbatim as `libofcongre
bunchronicling-americadigital-collectionshistorical-researchlcshlibrary-of-congresslocmcpmcp-servermodel-context-protocolnewspapersstdiostreamable-httpsubject-headingstypescript

What people ask about libofcongress-mcp-server

What is cyanheads/libofcongress-mcp-server?

+

cyanheads/libofcongress-mcp-server is mcp servers for the Claude AI ecosystem. Search LOC digital collections, browse Chronicling America newspapers with full OCR text, and look up LC Subject Headings via MCP. STDIO or Streamable HTTP. It has 5 GitHub stars and its last recorded update is dated 2026-10-14.

How do I install libofcongress-mcp-server?

+

You can install libofcongress-mcp-server by cloning the repository (https://github.com/cyanheads/libofcongress-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is cyanheads/libofcongress-mcp-server safe to use?

+

Our security agent has analyzed cyanheads/libofcongress-mcp-server and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.

Who maintains cyanheads/libofcongress-mcp-server?

+

cyanheads/libofcongress-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-10-14, with 1 open issues.

Are there alternatives to libofcongress-mcp-server?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy libofcongress-mcp-server to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: cyanheads/libofcongress-mcp-server
[![Featured on ClaudeWave](https://claudewave.com/api/badge/cyanheads-libofcongress-mcp-server)](https://claudewave.com/repo/cyanheads-libofcongress-mcp-server)
<a href="https://claudewave.com/repo/cyanheads-libofcongress-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-libofcongress-mcp-server" alt="Featured on ClaudeWave: cyanheads/libofcongress-mcp-server" width="320" height="64" /></a>