Search LOC digital collections, browse Chronicling America newspapers with full OCR text, and look up LC Subject Headings via MCP. STDIO or Streamable HTTP.
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/cyanheads/libofcongress-mcp-server{
"mcpServers": {
"libofcongress": {
"command": "node",
"args": ["/path/to/libofcongress-mcp-server/dist/index.js"]
}
}
}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">
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/libofcongress-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/libofcongress-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
</div>
<div align="center">
[](https://github.com/cyanheads/libofcongress-mcp-server/releases/latest/download/libofcongress-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=libofcongress-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvbGlib2Zjb25ncmVzcy1tY3Atc2VydmVyIl19) [](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)
[](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 (`’`, `…`) 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 `libofcongreWhat 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.
[](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>More MCP Servers
Reverse engineer anything with agents, from app behavior down to native binaries.
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev