mcpField
C
Crs Reports

Crs Reports

远程服务
pipeworx.io法律与政务05 周前更新

关于 Crs Reports

Crs Reports 为政策研究者、立法工作人员及法律从业者提供国会研究服务(CRS)报告的搜索与全文读取。响应标明报告的权威属性、引用、许可和更新时间,并区分托管语料库与实时 API 的数据范围。

主要功能

  1. 01按主题和条件检索报告
  2. 02读取报告全文及相关立法
  3. 03查看近期发布或修订内容
  4. 04浏览 CRS 主题分类
  5. 05标明权威属性与许可信息

适用场景

  1. 01查找国会对某项政策或法规的分析
  2. 02阅读报告并核对其引用的法案和公法
  3. 03跟踪 CRS 对议题的近期更新

MCP 相关

它通过 `crs_search`、`crs_report`、`crs_recent` 和 `crs_topics` 等 MCP 工具提供 CRS 报告数据。可经 Pipeworx 网关连接,或作为本地 stdio MCP 服务运行。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/crs-reports/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

@pipeworx/crs-reports

国会研究服务处(CRS)报告——国会对法规、联邦计划和政策选项进行的非党派分析——可按主题搜索,也可阅读全文;每条报告的权威性、引文、许可和时效都会在每次响应中注明。

属于 Pipeworx — 一个将 AI agents 连接到 1679+ 个实时数据源的 MCP 网关。

工具

  • crs_search(query?, topic?, product_class?, author?, published_since?, published_before?, limit?) — 对报告标题和 CRS 随报告发布的摘要进行排序搜索。 返回标题、报告编号、CRS 主题分类、作者、发布日期 和摘要片段。仅对标题和摘要排序,不搜索报告正文 — 每条响应都会通过 searched 说明这一限制, 否则搜索无结果可能会被误解为“CRS 从未写过相关内容”。
  • crs_report(report_id, include_text?, max_chars?) — 按报告编号(R43255、IF13006、LSB10123)获取一份完整报告。返回当前版本的完整文本,以及作者、主题、报告引用的法案和公法,还有报告时效。
  • crs_recent(days?, topic?, product_class?, limit?) — 查看 CRS 最近发布或修订的内容,按时间从新到旧排列。变更动态可用于追踪后续跟进法案或规则的分析。
  • crs_topics(facet?, limit?) — CRS 自有的主题分类体系及各术语的计数,还有分析师和产品类别。筛选前请先调用:CRS 使用 U.S. Trade Policy,猜测使用 Trade 会匹配不到任何结果。

身份验证

使用 Pipeworx 网关:无需密钥。 网关会注入语料库 — 报告索引和提取出的报告文本 — 因此调用网关时,调用方无需提供任何内容。

独立安装(npm i @pipeworx/mcp-crs-reports):请准备 api.data.gov 密钥。 独立安装不包含语料库的任何部分,因此该软件包会回退到国会图书馆自己的 API,并需要密钥才能调用。可在任意工具调用中通过 _apiKey 传入密钥;可在 https://api.data.gov/signup/ 免费获取,且一个密钥可用于所有由 api.data.gov 提供前置服务的 API。如果没有语料库和密钥,所有工具都会返回 {found: false, reason: "corpus_unavailable"} 并说明情况。

两种模式会明确标注,因为它们返回的结果并不相同

每条响应都包含 mode:corpus(托管模式)或 live_api(独立安装并提供密钥)。实时模式无法完成的操作会在响应中明确说明,而不会静默降级:

mode: "corpus"mode: "live_api"
crs_report 文本完整提取的报告文本,并经过校验和验证仅提供 CRS 自己的 summary,绝不会以 text 命名;正文仍保存在 pdf_url 指向的 PDF 中
crs_search 范围对所有标题和摘要进行排序仅搜索标题,从最近更新的一端开始扫描(列表端点完全没有查询参数);响应会说明已读取的数量及语料库总量
topic / author 筛选支持按名称拒绝 — 这些字段只存在于单份报告记录中,若要应用筛选,就需要对 14,000 份报告逐一请求
crs_topics完整词汇表及各术语的计数仅提供 product_class,不含计数

这些拒绝是有意为之。针对筛选问题返回未筛选的列表,只是披着正确标签的错误答案;而将一份 3,700 字符的摘要放到本应容纳 61,000 字符报告的字段中,则是调用方最难察觉的替代行为。

如果语料库在调用过程中发生故障,且调用方提供了 _apiKey,则会改用实时 API 返回结果,并通过 degraded_from_corpus 说明情况。

数据源

数据说明了什么、没有说明什么

CRS 分析具有说服力,但不具约束力。 它不是法律,对任何法院和机构都没有约束力,只作为背景和立法语境引用。每条响应都带有 authority.binding_status: "persuasive" 和一段用文字说明这一点的 binding_note,因此下游 Agent 不会把 CRS 对某项法规的解释误认为法规本身。

这是一组当前有效的报告,范围从 2018 年至今——撰写本文时共有 14,115 份报告,这是 CRS 目前列为有效的报告,而非完整的历史存档。CRS 撤回或取代的报告会从该集合中移除。

无需许可。 CRS 报告属于美国联邦政府作品,根据 17 U.S.C. §105 不受版权保护,因此 license_terms.encumbered 为 false,且无需署名。只有一个注意事项,CRS 本身也会注明,本工具包在 license_caveat 中也会重复说明:个别报告可能转载第三方图表或照片,而 §105 不适用于这些内容。

陷阱,测于 2026-09-15

操作导入流程(scripts/ingest-crs-reports.mjs)前,值得了解以下事项:

  • sort 参数会被接受,但会被忽略。 sort=updateDate+asc、sort=updateDate+desc 和无意义的参数都会返回相同的首行。列表始终按 updateDate 从新到旧排列。请求不会报错,因此基于 sort 构建的排序是错误的,却看似正确。
  • fromDateTime / toDateTime 确实有效,并且会根据 updateDate 进行筛选——未筛选时有 14,115 条,使用 fromDateTime=2026-09-01 时有 585 条。这两个参数组成变更源,可让每日运行保持增量更新。
  • updateDate 是带着 Z 的 America/New_York 墙上时间。 对 14 份抽样报告进行检查后发现,每份报告的 PDF Last-Modified 时间都恰好比 updateDate 晚 4 小时(EDT)或 5 小时(EST),精确到秒;这种与夏令时的关联排除了固定发布延迟的可能。PDF 标头记录的是同一事件的真实 UTC 时间,并会存储该时间。
  • 遍历一次列表无法获取整个语料库。 列表恰好返回其声称的 14,115 行,但只有 14,097 个不同的 ID:其中 18 个 ID 各出现两次,每对重复项的 updateDate 都相同(2025-09-08T11:20:24Z)。这是一个不稳定的次级排序问题——列表仅按 updateDate 排序,而数千条记录共享同一批量重新发布的时间戳——因此会漏掉大约与重复数量相同的报告,尽管总数看起来完全正确。导入流程会合并重复项并再次遍历。
  • 列表行落后于其自身的详情记录。 IF12988 的两条记录仅相隔数秒:list.version 为 1、list.updateDate 为 22:09:04,而 currentVersion 为 6、updateDate 为 22:38:57。用列表枚举;所有值都以详情记录为准。
  • HTML 版本无法访问,但 PDF 正常。 /crs_external_products/<T>/HTML/<id>.html 路径从 Worker 出口和笔记本电脑访问时都会返回 403,并带有 Cf-Mitigated: challenge;无论是否提供完整的浏览器标头,结果都一样。PDF 路径在两处都返回 200。对 PDF 发起普通 HEAD 请求会得到 403,而 GET 请求会得到 200,因此仅通过 HEAD 探测会误判这个可用路径。
  • 短篇产品的 summary 是全文,长篇产品的 summary 则仅包含摘要。 R43255 的摘要有 3,754 个字符,而报告全文有 61,691 个字符。每条响应中的 text_source 都会说明文本来自哪个版本。

快速开始

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "crs-reports": {
      "url": "https://gateway.pipeworx.io/crs-reports/mcp"
    }
  }
}
此端点实际提供的内容

https://gateway.pipeworx.io/crs-reports/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、 discover_tools、search_within、remember/recall 和其他整个网关通用的工具。因此,你看到的工具数量会多于表格中的数量:目前,单个工具包端点除了工具包自身的工具外,还会列出大约 30 个共享工具。连接的 initialize 响应会说明确切范围,也是当天实际情况的权威依据。

这是有意为之,并非意外复用了多个服务。元工具能让限定范围的连接回答本工具包未涵盖的问题——通过 ask_pipeworx 跨整个目录路由——而无需再添加第二个 MCP 服务。目前无法挂载不含这些工具的工具包端点;如果额外的架构定义带来的上下文开销超过了路由功能的价值,请连接一次完整网关,而不是连接多个工具包端点。

或者,连接完整的 Pipeworx 网关,直接列出每个工具包的工具,而不只是当前工具包的工具:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

两个 URL 都会连接到同一个网关和同一批 1679+ 个数据源。唯一的区别是哪些工具包的工具会被直接列出;无论连接哪个,ask_pipeworx 都能访问所有工具。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/crs_search \
  -H 'Content-Type: application/json' \
  -d '{"query":"tariffs"}'

首次调用无需账户。查看任意工具:GET https://gateway.pipeworx.io/v1/tools/crs_search。查找工具:使用 {"query":"..."} 向 https://gateway.pipeworx.io/v1/tools/search_packs 发送 POST 请求。

独立运行(无需网关账户)

此软件包也可作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经由网关往返:

{
  "mcpServers": {
    "crs-reports": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-crs-reports"]
    }
  }
}

或者直接运行,以确认它能正常启动:

npx -y @pipeworx/mcp-crs-reports

它通过 stdin/stdout 使用 MCP 协议,并响应 initialize/tools/list/tools/call,但仅提供此工具包的工具——不包含上述网关连接额外提供的共享元工具。代码相同,工具相同,但没有 ask_pipeworx 路由功能。

使用 ask_pipeworx

你也可以用通俗的英语提问,而不是直接调用工具——这既适用于上面的工具包端点,也适用于完整网关:

ask_pipeworx({ question: "your question about Crs Reports data" })

网关会自动选择合适的工具并填写参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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