Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.smeet666/mcp-libraryofcongress

NPM · MCP-LIBRARYOFCONGRESS · 2 COMPONENTS · SCANNED AUG 12

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

+44 this week 79 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to smeet666/mcp-libraryofcongress). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 2 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability59
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2171 tokens (~542/item across 4 items; 4 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management20
  • Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 93% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · mcp-libraryofcongress

# add to Claude Code
claude mcp add smeet666-mcp-libraryofcongress -- npx -y mcp-libraryofcongress
# add to Codex CLI
codex mcp add smeet666-mcp-libraryofcongress -- npx -y mcp-libraryofcongress
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "smeet666-mcp-libraryofcongress": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-libraryofcongress"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add smeet666-mcp-libraryofcongress --command npx --arg -y --arg mcp-libraryofcongress
# ~/.hermes/config.yaml
mcp_servers:
  smeet666-mcp-libraryofcongress:
    command: "npx"
    args: ["-y", "mcp-libraryofcongress"]
// mcp.json
{
  "mcpServers": {
    "smeet666-mcp-libraryofcongress": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-libraryofcongress"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 11 Aug 26 +2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 9 Aug 26 0
    • Schema quality: 445 → 542 functional
    • Package version: 2.0.0 → 2.1.0 functional
  • 8 Aug 26 0
    • Package version: 1.1.0 → 2.0.0 functional
  • 7 Aug 26 +15
    • Provenance: fail → pass security
    • Known CVEs: partial → pass security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • The attested source repository moved: smeet666/mcp-libraryofcongress security
    • Tool coverage: 100 → unverified functional
    • Capabilities: pass → unverified functional
    • Stability: unverified → 0.03 functional
    • Security disclosure: fail → pass functional
    • Dependency health: partial → 0.85 functional
    • Package version: 1.0.0 → 1.1.0 functional
  • 6 Aug 26 +27
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • MCP protocol: unverified → pass functional
    • Tool coverage: unverified → 100 functional
    • First check of Tool coverage: 100 functional
    • First check of Tool coverage: 93 functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
  • 5 Aug 26 35

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 12 Aug 2026 · Analysed npm/mcp-libraryofcongress@2.1.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo smeet666/mcp-libraryofcongress
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/smeet666/mcp-libraryofcongress/.github/workflows/publish.yml@refs/tags/v2.1.0
Rekor log index 2398150868
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:365817cd4191073bb142a78de45cf84cc3cc6afec41fd396dd22d0f6747df33f4b7ebcaed0589281465e392d87276ad8874c237af4f6b33ff4dc86145
Dependencies 95 packages
Packages resolved 95
Stale 30
Tree resolution Complete
MCP tools · 4 exposed · ~1,674 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
get_item ~313

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.

NameTypeReqDescription
identifierstringyesRecord identifier, such as '2017645459' or 'sn83045462/1929-02-03/ed-1'.
max_description_charsintegerCharacters of the description to return in one call.
offsetintegerWhere to resume the description.
sectionsarrayWhich parts to return. Each one beyond 'basic' adds to the size of the answer.
NameTypeReqDescription
call_numberyes
citationsobject
descriptionyes
full_metadataobject
itemobjectyes
languagearrayyes
locationarrayyes
next_offsetyesPass as 'offset' to read the rest of the description. Null when it ends here.
notesarrayyes
notes_on_recordarrayyesNotes the Library published about the record itself, less any whose words the description already carries. The Library assembles the description of some records out of these notes, and those records…
offsetintegeryes
part_ofarrayyesCollections and divisions the record sits in.
repositoryyesWhere the original is held.
resourcesarray
rightsyesWhat the Library says about reuse. Null when it says nothing, which is not permission.
subjectsarrayyes

No examples provided.

list_collections ~230

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.

NameTypeReqDescription
limitintegerCollections to return.
max_description_charsintegerBudget for one collection's description.
pageintegerWhich page of collections, from 1.
searchable_onlybooleanKeep only the collections whose formats name a media_type, which are the ones search_items can be asked for.
NameTypeReqDescription
collectionsarrayyes
notesarrayyes
pageintegeryes
totalintegeryesCollections the Library publishes, not the number returned.

No examples provided.

search_items ~502

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.

NameTypeReqDescription
collectionstringA collection, named exactly as list_collections reports it under 'collection_filter'.
languagestringA language, written in English: 'english'.
limitinteger
locationstringA place, such as 'oklahoma'.
media_typestringyesWhich catalogue to search: books, photos, maps, audio, film-and-videos, manuscripts, notated-music or newspapers. 'newspapers' holds the papers themselves; a phrase printed on a page belongs in searc…
online_onlybooleanKeep to material with a digitised copy. Set false to include shelf-only records.
pageinteger
querystringyesWords to look for in titles, creators and catalogue descriptions. The catalogue index holds no word of a single letter, so at least one word has to run to two letters or more, unless it is written in…
sortstringOrder of the results.
subjectstringA subject heading, such as 'crime'.
year_fromintegerEarliest year, inclusive.
year_tointegerLatest year, inclusive.
NameTypeReqDescription
itemsarrayyes
notesarrayyes
pageintegeryes
querystringyes
totalintegeryesRecords matching across this catalogue for the search the rows come from, not the number returned. A filter that matched nothing is set aside, and this then counts the search without it, which the no…

No examples provided.

search_newspapers ~629

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.

NameTypeReqDescription
limitintegerMatches to return.
locationstringThe state a paper was published in, written as the Library writes it: 'new york', 'district of columbia'. It is the value 'state' carries on the matches this tool returns.
max_excerpt_charsintegerBudget for one passage. Read it together with 'max_excerpts_per_match': the size of the answer is the product of the two and the number of matches.
max_excerpts_per_matchintegerPassages to keep per match. A page holding the words several times yields several, and the later ones rarely say anything the first did not.
pageintegerWhich page of matches, from 1.
publicationstringOne newspaper, named with its town and the years it ran: 'new-york tribune (new york [n.y.]) 1866-1924'. Take the wording from 'publication' on a match here, or from a title in search_items with medi…
querystringyesWords or a quoted phrase, such as '"cure for influenza"'. The index reads the text off the pages themselves and holds single characters, so a query of one character is a query it answers.
year_fromintegerEarliest year, inclusive.
year_tointegerLatest year, inclusive.
NameTypeReqDescription
hitsarrayyes
notesarrayyes
pageintegeryes
querystringyes
totalintegeryesNewspaper pages that match, not the number returned and not a count of occurrences. Raise 'page' to read further into it.

No examples provided.