mcpField
M
mcp-libraryofcongress

mcp-libraryofcongress

本地服务
github.com搜索与检索0今天更新

关于 mcp-libraryofcongress

mcp-libraryofcongress 将美国国会图书馆目录与数字馆藏接入聊天客户端,可检索扫描报纸中的文字并读取馆藏记录。无需 API 密钥或账户。

主要功能

  1. 01检索扫描报纸文字
  2. 02按字段搜索馆藏目录
  3. 03读取记录、权利与馆藏地点
  4. 04浏览数字馆藏

适用场景

  1. 01查找某地或某年份报纸报道
  2. 02按主题发现照片、地图或书籍
  3. 03核对馆藏记录的权利和原件所在地
  4. 04查找特定主题的数字馆藏

MCP 相关

作为 MCP 服务,它向客户端提供报纸搜索、目录搜索、记录读取和馆藏列表工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
npmmcp-libraryofcongress3.1.0
mcpbmcp-libraryofcongress-3.1.0.mcpb3.1.0

工具

4

收录的工具列表 · 更新于 今天

参数类型必填说明
pageinteger否匹配结果的页码,从 1 开始。
limitinteger否要返回的匹配项数。
querystring是要搜索的词语或带引号的短语,例如 '"cure for influenza"'。索引读取页面文本并保留单个字符,因此也能处理仅含一个字符的查询。
year_tointeger否最晚年份,包含该年份。
locationstring否报纸的出版州,按图书馆使用的写法填写:'new york'、'district of columbia'。这是此工具返回的匹配结果中 'state' 所携带的值。
year_frominteger否最早年份,包含该年份。
publicationstring否一份报纸,名称需包含其城镇和发行年份:'new-york tribune (new york [n.y.]) 1866-1924'。请从此处匹配结果中的 'publication',或从 search_items 中 media_type 为 'newspapers' 的标题获取写法。
max_excerpt_charsinteger否单个段落的字符数预算。请结合 'max_excerpts_per_match' 阅读:答案大小等于这两项的乘积再乘以匹配数。
max_excerpts_per_matchinteger否每条匹配结果保留的段落数。一页中多次出现匹配词语时会返回多个段落,后续段落很少包含首段没有的信息。

详细介绍

mcp-libraryofcongress

npm CI license MCP Registry Glama M8ven LobeHub 在 Cursor 中安装 在 VS Code 中安装

美国国会图书馆是美国的国家图书馆,并将其大量馆藏发布到网上:书籍、照片、地图、录音、手稿,以及可追溯至 18 世纪的美国报纸页面。报纸页面经过扫描和光学字符识别处理,因此可以搜索上面的印刷文字。馆藏策展人还会将资料汇集成数字馆藏,并对每个馆藏单独进行描述和发布。

此服务可将聊天客户端连接到该图书馆。你可以搜索报纸上的印刷文字,按标题、创作者、主题、地点或语言搜索目录,查看单条记录及其权利声明和原件收藏地点,并列出数字馆藏。无需 API 密钥或账户。

法语版


安装

一键安装

在 Cursor 中安装 在 VS Code 中安装

Claude Code

claude mcp add libraryofcongress -- npx -y mcp-libraryofcongress

Claude Desktop、Cursor 和所有使用标准配置格式的客户端

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

需要 Node 24 或更高版本,无需设置任何环境变量。

使用 Docker
{
  "mcpServers": {
    "libraryofcongress": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-libraryofcongress:3.0.2"]
    }
  }
}

-i 用于保持标准输入处于打开状态,协议通过此输入传输;省略 -t,因为 TTY 会改写数据流。容器需要能够通过 HTTPS 访问 www.loc.gov 和 chroniclingamerica.loc.gov,除此之外不需要任何内容:无需卷、端口或凭据。

使用不依赖 npm 的 Bundle

从最新发布版本下载 mcp-libraryofcongress-3.0.2.mcpb 并打开。支持 MCP bundle 的客户端会自动安装,无需 npm,也无需编辑配置文件。该 bundle 包含其依赖项,因此安装时不会下载任何内容。

你可以询问什么

  • “俄克拉荷马州报纸如何报道 1907 年的建州投票?”
  • “帮我找找 1920 年以前芝加哥贫民窟的照片。”
  • “读取那条记录,并告诉我原件由谁持有。”
  • “有哪些关于南北战争的数字馆藏?”
  • “我可以重复使用那张照片吗?”

常规流程是先搜索,再查看记录:搜索结果行中包含 identifier,然后用 get_item 读取记录。

工具

工具功能说明
search_newspapers搜索扫描报纸页面上印刷的文字。
search_items按标题、创建者、主题、地点或语言搜索目录。
get_item读取一条记录、其权利信息以及原件的保存地点。
list_collections列出策展人员发布的数字馆藏。
search_newspapers

搜索扫描报纸页面的文字,这些文字通过光学字符识别从页面中提取。

参数类型必填功能说明
query字符串,1 至 300 个字符是要在页面上查找的文字。
location字符串,最多 120 个字符否报纸的出版地。
publication字符串,最多 200 个字符否一份报纸。
year_from整数,1000 至 9999否起始年份,包含该年份。
year_to整数,1000 至 9999否结束年份,包含该年份。
limit整数,1 至 25,默认值为 10否返回的匹配结果数。
page整数,1 至 100,默认值为 1否要查看第几页匹配结果。
max_excerpt_chars整数,80 至 1200,默认值为 300否返回的段落长度。
max_excerpts_per_match整数,1 至 10,默认值为 3否每个匹配页面返回的段落数。

返回内容: hits,每条都包含 identifier,可供 get_item 使用;title;creator,即提供该扫描件的图书馆;year;page_number,即该期报纸中的页码;published_on;publication,以及报纸的发行年份;state;excerpts;和 excerpt_kind。

excerpt_kind 用于判断摘录的价值。 passage 是匹配文字周围的内容,并以匹配文字为中心。page_opening 是该页开头的内容;之所以返回它,是因为图书馆随结果行返回的文字在匹配词出现之前就结束了:它不包含匹配内容,因此引用它就等于引用了别的内容,而 source_url 会在应用查询的情况下打开该页。**total 统计的是报纸页数,并支持分页:**它绝不会统计这些文字出现的次数。

search_items

一次搜索一种类型的目录内容。

参数类型必填作用
query字符串,1 至 300 个字符是要查找的词语。
media_typebooks、photos、maps、audio、manuscripts 或 newspapers否要查询的目录。
year_from整数,1000 至 9999否起始年份,包含该年份。
year_to整数,1000 至 9999否结束年份,包含该年份。
subject字符串,最多 120 个字符否主题标题。
location字符串,最多 120 个字符否地点。
language字符串,最多 120 个字符否语言,以英文书写。
collection字符串,最多 160 个字符否一个馆藏,名称与 list_collections 中的相同。
online_only布尔值,默认 true否仅保留可在线访问的记录。
sortrelevance、newest、oldest 或 title,默认 relevance否结果行的排序方式。
limit整数,1 至 50,默认 10否返回的结果行数。
page整数,1 至 100,默认 1否要返回的结果页码。

返回内容: items,其中每项包含 identifier、title、creator、year、 出版时的 date(通常是一个范围)、is_collection 和 source_url。 Library 按内容类型分别维护目录,因此不指定 media_type 时会查询通用目录,total 则统计其中符合条件的记录数。

get_item

读取一条记录。较繁重的内容需要主动请求,不会默认提供; 较长的描述会分页。

ArgumentTypeRequiredWhat it does
identifierstring, 1 to 300 charactersyes记录所带的标识符。
sectionsarray of basic, citations, resources, full_metadata, default ["basic"]no要返回的部分。
offsetinteger, 0 or more, default 0no描述的续读位置。
max_description_charsinteger, 200 to 20000, default 2000no要提供多少描述内容。

**返回内容:**记录及其 title、creator、year、date、format 和 source_url,以及 description、subjects、location、language、 part_of(记录所属的馆藏和分部)、repository(原件的保存地点)、 call_number 和 rights。记录中为空的字段为 null。next_offset 用于 继续读取较长的描述,到末尾时为 null。标识符可以包含斜杠:单期报纸由报纸名称、 日期和版次共同标识。

list_collections

列出数字馆藏,即由策展人挑选、描述并一起发布的资料集合。

ArgumentTypeRequiredWhat it does
limitinteger, 1 to 50, default 20no要提供的馆藏数量。
pageinteger, 1 to 100, default 1no要查看的馆藏页码。
searchable_onlyboolean, default falseno仅保留可用于缩小搜索范围的馆藏。
max_description_charsinteger, 80 to 2000, default 300no每条描述要提供的字符数。

返回内容:collections,其中每项包含 identifier(用于访问该馆藏的 slug)、 title、collection_filter(search_items 使用的筛选条件文字)、 searchable_media_types、description、item_count、subjects、 formats(馆藏所含资料的类型)和 source_url。total 统计图书馆发布的馆藏总数, 该数量大于返回的馆藏数。

扫描文本的价值

报纸页面上的文字是通过光学字符识别从页面中提取的,因此摘录中会包含这一过程产生的误读。 提供的文本保留了识别结果,不会经过校正。引用时请注明这是扫描文本,并链接到页面, 以便读者查看原始页面。

权利

每条记录都会在 rights 中说明自身的权利信息,而图书馆的条款因每次捐赠而异。 重新使用任何内容前,请先阅读相关声明,并在展示内容时一并注明。

配置

所有变量均为可选项。在客户端配置的 env 块中设置它们。

变量默认值作用
LOC_USER_AGENT项目标识向 Library 标识你的应用,并提供可联系到相关人员的地址。
LOC_MIN_INTERVAL_MS6000两次请求之间的间隔,范围为 3000 到 60000。
LOC_TIMEOUT_MS30000单次请求的截止时间,范围为 1000 到 120000。
LOC_NEWSPAPER_TIMEOUT_MS90000搜索报纸的截止时间,范围为 1000 到 300000。
LOC_MAX_RETRIES3临时故障后的重试次数,范围为 0 到 8。
LOC_CACHE_TTL_MS900000答案在内存中的保留时间,范围为 0 到 86400000。
LOC_CACHE_MAX_ENTRIES200同时保存在内存中的答案数量,范围为 1 到 5000。
LOC_LOG_LEVELerrorsilent、error、info 或 debug,写入 stderr。

超出范围的值将回退为默认值,原因会写入 stderr。

错误

每个故障都带有六种代码之一、一条消息,以及在有帮助时指出下一步操作的提示。

代码发生的情况处理方法
not_foundLibrary 已响应,但没有该记录。使用 search_items 检查标识符。
invalid_input请求尚未发出,参数就已被拒绝。阅读消息,其中会指出相关参数。
rate_limitedLibrary 要求此客户端放慢速度。等待提示中指出的秒数,然后使用相同参数再次调用。记录仍然存在。
parse_failure收到的响应格式无法由此客户端读取。在问题跟踪器中报告。
network_error请求未能完成。稍后重试。
timeout请求超时。提高 LOC_TIMEOUT_MS;搜索报纸时则提高 LOC_NEWSPAPER_TIMEOUT_MS。

作为一个库

读取 Library 的这一层单独发布,包含自身的请求间隔、缓存和错误处理,且不绑定任何协议。

import { LocClient } from "mcp-libraryofcongress/client";

const client = new LocClient();
const { data, cached } = await client.searchItems({ query: "tenement", mediaType: "photos" });
console.log(data.total, cached);

每次读取都会返回 { data, cached },并在出错时抛出带有六种代码之一的错误。这里同样会确保两次请求之间有最短间隔。

请求节奏与来源说明

Library 发布的限制是其 API 每分钟 20 次请求,整个网站每分钟 10 次请求,取两者中较低的限制:请求逐个发送,间隔至少 6 秒;无论服务器如何配置,间隔下限均为 3 秒。User-Agent 始终以项目标识和可联系到相关人员的地址结尾。

每条结果都附有读取该内容的页面地址。Library of Congress 是公共机构,其记录会注明各自的权利信息。

此 MCP 服务是一个非官方项目,与 Library of Congress 没有关联。

隐私

此服务不会收集任何关于你的信息,也不会向其作者发送任何内容。它在你的计算机上运行,只会连接 www.loc.gov 和 chroniclingamerica.loc.gov,除此之外不会连接任何其他地址;运行期间,它会将回答保存在内存中,不会写入磁盘。 PRIVACY.md 说明了请求会携带哪些信息,以及哪些设置会改变这些信息。

开发

npm install
npm run build:fixtures
npm test
npm run check

测试使用生成的测试夹具运行,不会发起网络请求。实时测试套件 npm run test:live 会针对每个路由发起一次请求,并每晚直接对 Library 运行。

贡献

错误报告、问题和想法请提交到 问题跟踪器。 欢迎提交拉取请求;先创建问题有助于就更改方案达成一致。请参阅 CONTRIBUTING.md。

许可证

MIT,详见 LICENSE。记录属于 Library of Congress 及其注明的提交者,并受各条记录所声明的权利约束。


mcp-libraryofcongress(法语版)

英文版

Library of Congress 是美国国家图书馆,并在网上发布了其大量馆藏:书籍、照片、地图、录音、手稿,以及自 18 世纪以来的美国报纸页面。这些报纸页面经过数字化处理和光学字符识别,因此可以搜索其中印刷的文字。馆藏人员还会将资料汇集成数字馆藏,每个馆藏都会作为一个独立集合进行描述和发布。

此服务将对话客户端连接到这座图书馆。你可以搜索报纸页面上印刷的文字,按标题、作者、主题、地点或语言搜索目录,查看包含权利条款及原件保存地点的记录,并列出数字馆藏。无需 API 密钥或账号。

安装

一键安装

在 Cursor 中安装 在 VS Code 中安装

Claude Code

claude mcp add libraryofcongress -- npx -y mcp-libraryofcongress

Claude Desktop、Cursor 以及任何采用标准配置格式的客户端

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

需要 Node 24 或更高版本,无需设置任何环境变量。

使用 Docker
{
  "mcpServers": {
    "libraryofcongress": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-libraryofcongress:3.0.2"]
    }
  }
}

-i 会保持标准输入打开,它是协议通道;省略 -t 是因为 TTY 会改写数据流。容器只需能够通过 HTTPS 连接到 www.loc.gov 和 chroniclingamerica.loc.gov,除此之外不需要任何内容:无需卷、端口或凭据。

无需 npm 的安装包

下载 mcp-libraryofcongress-3.0.2.mcpb,文件位于 最新发布版本, 然后打开它。支持 MCP 安装包的客户端会自动完成安装,无需 npm,也无需修改 配置文件。安装包包含其依赖项,因此安装时不会下载任何内容。

可以这样提问

  • “1907 年俄克拉荷马州的报纸对加入联邦的投票有什么报道?”
  • “帮我找找 1920 年以前芝加哥的公寓楼照片。”
  • “读一下这条记录,告诉我原件由谁保存。”
  • “有哪些关于南北战争的数字馆藏?”
  • “我可以重复使用这张照片吗?”

通常的流程是先搜索,再查看记录:一条结果包含一个 identifier,然后用 get_item 读取该记录。

工具

工具功能
search_newspapers在数字化报纸页面的印刷文字中搜索。
search_items按标题、作者、主题、地点或语言搜索目录。
get_item查看记录、权利信息以及原件的保存地点。
list_collections列出馆藏人员发布的数字馆藏。
search_newspapers

在数字化报纸页面的文本中搜索,这些文本由光学字符识别生成。

参数类型必填功能
query字符串,1 至 300 个字符是要在页面中搜索的词语。
location字符串,最多 120 个字符否报纸的出版地点。
publication字符串,最多 200 个字符否特定报纸。
year_from整数,1000 至 9999否最早年份,包含该年。
year_to整数,1000 至 9999否最晚年份,包含该年。
limit整数,1 至 25,默认值为 10否返回的匹配结果数。
page整数,1 至 100,默认值为 1否要返回的匹配结果页码。
max_excerpt_chars整数,80 至 1200,默认值为 300否返回的文本片段长度。
max_excerpts_per_match整数,1 至 10,默认值为 3否每个匹配页面返回的文本片段数。

返回内容: hits,每条结果都带有 identifier,可供 get_item 使用; title;creator,即提供数字化内容的图书馆;year;page_number,即报纸 该期中的页码;published_on;包含报纸出版年份的 publication;state; excerpts;以及 excerpt_kind。

excerpt_kind 决定了文本片段的含义。 passage 是围绕搜索词截取的文本, 以搜索词为中心。page_opening 是页面开头的内容;当图书馆提供的文本在搜索词 出现之前就结束时,会返回此类内容:它不包含匹配词,因此引用它就等于引用了别的 内容;而 source_url 会打开应用了搜索查询的页面。**total 统计的是报纸页面数, 并用于分页:**它绝不是搜索词出现次数的统计。

search_items

在目录中搜索,每次搜索一种类型的内容。

参数类型必填作用
query字符串,1 到 300 个字符是要搜索的词语。
media_typebooks、photos、maps、audio、manuscripts 或 newspapers否要查询的目录。
year_from整数,1000 到 9999否最早年份,包含该年。
year_to整数,1000 到 9999否最晚年份,包含该年。
subject字符串,最多 120 个字符否一个主题词。
location字符串,最多 120 个字符否一个地点。
language字符串,最多 120 个字符否一种语言,使用英文书写。
collection字符串,最多 160 个字符否一个合集,名称与 list_collections 中的名称一致。
online_only布尔值,默认 true否仅保留在线记录。
sortrelevance、newest、oldest 或 title,默认 relevance否行的排序方式。
limit整数,1 到 50,默认 10否返回的行数。
page整数,1 到 100,默认 1否要查询的行页码。

返回内容: items,每项包含 identifier、title、creator、year、 date(按发布时的内容显示,通常是一个时间范围)、is_collection 和 source_url。该 图书馆按内容类型分别设有目录,因此不指定 media_type 的搜索会查询总目录,而 total 统计的是其中匹配的记录数。

get_item

读取一条记录。较大的部分需按需请求,而非默认提供;较长的描述则分页返回。

参数类型必填作用
identifier字符串,1 至 300 个字符是某条记录所带的标识符。
sectionsbasic、citations、resources、full_metadata 数组,默认 ["basic"]否要返回的部分。
offset整数,0 或更大,默认 0否从描述的哪个位置继续。
max_description_chars整数,200 至 20000,默认 2000否返回的描述长度。

**返回:**记录包含 title、creator、year、date、format 和 source_url,以及 description、subjects、location、language、 适用于所属馆藏和分部的 part_of、指出原件保存地点的 repository、 call_number 和 rights。记录中为空的字段值为 null。较长描述可通过 next_offset 继续读取;读到末尾时,该值为 null。标识符可以包含斜杠: 期刊编号由其标题、日期和版次共同确定。

list_collections

列出数字馆藏,即由馆员挑选、编目并一起发布的文档集合。

参数类型必填作用
limit整数,1 至 50,默认 20否返回的馆藏数量。
page整数,1 至 100,默认 1否要查看的馆藏页码。
searchable_only布尔值,默认 false否仅保留可用于缩小搜索范围的馆藏。
max_description_chars整数,80 至 2000,默认 300否每条描述的返回长度。

返回:collections,其中每个馆藏都包含 identifier(用于访问该馆藏的 slug); title;collection_filter(search_items 使用的表述);searchable_media_types; description;item_count;subjects;表示馆藏内容类型的 formats;以及 source_url。total 统计图书馆发布的馆藏总数,数量多于本次返回的馆藏数。

数字化文本的价值

报纸页面中的文字来自光学字符识别,因此摘录可能带有该过程产生的识读错误。 返回的内容会照原样提供,不作校正。引用时请注明这是数字化文本,并附上页面链接, 以便读者查看原始报纸页面。

权利

记录会在 rights 中说明自身的权利信息,而不同馆藏库的图书馆使用条件也各不相同。 重新使用前请阅读相关说明,并在展示内容旁注明该说明。

配置

每个变量都是可选的。请将它们放在客户端配置的 env 块中。

变量默认值作用
LOC_USER_AGENT项目标识向该库标识您的应用,并提供可联系到相关人员的地址。
LOC_MIN_INTERVAL_MS6000两次请求之间的间隔,范围为 3000 到 60000。
LOC_TIMEOUT_MS30000请求的超时时间,范围为 1000 到 120000。
LOC_NEWSPAPER_TIMEOUT_MS90000报纸搜索的超时时间,范围为 1000 到 300000。
LOC_MAX_RETRIES3临时故障后的重试次数,范围为 0 到 8。
LOC_CACHE_TTL_MS900000响应在内存中的保留时间,范围为 0 到 86400000。
LOC_CACHE_MAX_ENTRIES200同时保存在内存中的响应数,范围为 1 到 5000。
LOC_LOG_LEVELerror可选值为 silent、error、info 或 debug,日志写入错误输出。

超出范围的值会回退到默认值,原因会写入错误输出。

错误

每次失败都会带有六种代码之一、一条消息,以及在有帮助时提供的后续操作提示。

代码发生的情况该怎么做
not_found该库已响应,但没有这条记录。使用 search_items 检查标识符。
invalid_input请求发出前,参数已被拒绝。阅读消息,其中会指出相关参数。
rate_limited该库要求此客户端降低请求频率。等待指定的秒数,然后使用相同参数再次调用。该记录仍然存在。
parse_failure响应已到达,但格式无法在此处读取。请在问题跟踪页上报告。
network_error请求未能完成。稍后重试。
timeout请求超时。增大 LOC_TIMEOUT_MS;如果是报纸搜索,则增大 LOC_NEWSPAPER_TIMEOUT_MS。

作为库使用

读取该库的层单独发布,带有自己的请求频率、缓存和错误处理,不附带任何协议。

import { LocClient } from "mcp-libraryofcongress/client";

const client = new LocClient();
const { data, cached } = await client.searchItems({ query: "tenement", mediaType: "photos" });
console.log(data.total, cached);

每次读取都会返回 { data, cached },并在出错时抛出带有六种代码之一的错误。两次请求之间的最短间隔在此处同样适用。

请求频率与归属

该库公布的 API 限额为每分钟 20 个请求,整个网站的限额为每分钟 10 个请求,以较低者为准:请求会逐个发送,间隔至少六秒;无论如何配置,间隔都不会低于三秒。User-Agent 始终以项目身份和联系人员的地址结尾。

每条结果都附有读取该结果的页面地址。Library of Congress 是公共机构,其记录会注明各自的权利声明。

此 MCP 是一个非官方项目,与 Library of Congress 无关联。

隐私

此服务不会收集您的任何信息,也不会向其作者发送任何信息。它在您的计算机上运行,只连接 www.loc.gov 和 chroniclingamerica.loc.gov,在运行期间将响应保存在内存中,且不会写入磁盘。PRIVACY.md 说明了请求会携带哪些信息,以及哪些设置会改变这些行为。

开发

npm install
npm run build:fixtures
npm test
npm run check

测试使用生成的 fixtures 运行,不会发出任何请求。在线测试套件 npm run test:live 会针对每个路由发出一个请求,并且每晚都会对照该图书馆运行。

贡献

问题、疑问和想法都可以提交到问题跟踪区。欢迎提交修改建议;先创建 issue 有助于就修改方案达成共识。请参阅 CONTRIBUTING.md。

许可证

MIT,详见 LICENSE。记录归 Library of Congress 及其列明的提交者所有,并受每条记录所述权利声明约束。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。