@cyanheads/congressgov-mcp-server (英语)
通过MCP获取美国国会数据(法案,选票,成员,委员会). (原始内容存档于2012-10-12). STIO or Streamable HTTP.
概览
美国国会的数据来自国会. gov和参议院的官方投票数据提供:法案、修正案、颁布的法律、成员、委员会、唱名表决、提名、CRS和委员会的报告以及国会记录。 浏览立法活动,阅读法案和报告文本,并通过参议院的确认跟踪提名.
工具
| 工具 | 说明 |
|---|---|
congressgov_bill_lookup | 浏览并检索账单:动作、赞助人、摘要、文本、相关账单 |
congressgov_amendment_lookup | 浏览和检索众议院和参议院修正案:提案国、修正法案、行动、共同提案国、案文 |
congressgov_enacted_laws | 国会浏览已颁布的公法和私法 |
congressgov_member_lookup | 按州、区或国会找到成员,收回其立法职位 |
congressgov_committee_lookup | 浏览委员会及其立法、报告和提名 |
congressgov_roll_votes | 获取众议院和参议院的点名表决和每个成员的立场 |
congressgov_senate_nominations | 浏览总统提名并跟踪参议院的确认 |
congressgov_bill_summaries | 浏览最近更新的 CRS 法案摘要 |
congressgov_crs_reports | 浏览和检索无党派 CRS 政策报告 |
congressgov_committee_reports | 浏览和阅读委员会随附立法的报告 |
congressgov_daily_record | 浏览并阅读每日国会记录 |
congressgov_search_bills | 通过本地正文镜( opt- in) 搜索关键字的帐单标题和 CRS 摘要 |
资源
| 资源 | 说明 |
|---|---|
congress://current | 目前的大会编号、会期、会议室信息 |
congress://bill-types | 有效帐单类型代码参考表 |
congress://member/{bioguideId} | 生物导引ID成员简介 |
congress://bill/{congress}/{billType}/{billNumber} | 按国会、类型和数目分列的法案细节 |
congress://committee/{committeeCode} | 按委员会代码分列的委员会详情 |
skill://congressgov-guide/SKILL.md | 立法研究指南:识别来源、发现界限、票数和文件证据 |
法案、成员和委员会的数据也可通过 congressgov_bill_lookup, (中文(简体) ), congressgov_member_lookup,以及 congressgov_committee_lookup (业务) get)),因为许多MCP客户端都是工具独有的,从不表面资源.
提示
| 提示 | 说明 |
|---|---|
congressgov_bill_analysis | 分析法案的结构框架 |
congressgov_legislative_research | 整个国会政策领域的研究框架 |
代理技能
congressgov-guide 指导研究涉及法案、法律、成员、委员会、投票和众议院辩论。 它涵盖身份识别特征出处、发现限度和特定版本的文件证据。 带有插件安装、npm、MCPB和多克的导船,通过技能扩展及其在MCP上服务 skill:// 资源.
能力参考
congressgov_bill_lookup 工具
list浏览一congress,缩入billType(单位:千美元)fromDateTime编号 :toDateTime在记录的更新日期, 最新的第一, 除非order: 'oldest'· ;get, (中文(简体) ),actions, (中文(简体) ),amendments, (中文(简体) ),cosponsors, (中文(简体) ),committees, (中文(简体) ),subjects, (中文(简体) ),summaries, (中文(简体) ),text, (中文(简体) ),titles, (中文(简体) ),related,以及content需求congress+ 键billType+ 键billNumbertype财务报告和审定财务报表number从账单行中被接受为billType财务报告和审定财务报表billNumber; 帐单类型代码不敏感。 每个字段发送一个名字, 因为空格和别名密钥一起被拒绝content读取文本文本textVersionIndex(0是最近的一个)并返回一个字符窗口content.text与totalCharacters, (中文(简体) ),truncated,以及nextOffsetsummaries选择versionCode(单位:千美元)00介绍,49(公法)和类似网页congressgov_bill_summaries,使用characterOffset编号 :characterLimitfromDateTime编号 :toDateTime适用于list仅向其他操作发送通知, 指定它们被忽略- 一个
actions准确记录一次点名表决的行rollVote,则congressgov_roll_votes(第115届国会的众议院票,第101届参议院票)
congressgov_amendment_lookup 工具
- 修正案是
congress+ 键amendmentType(单位:千美元)hamdt, (中文(简体) ),samdt,或suamdt在任何信件中;suamdt,参议院未印刷修正案,仅存在于第97和98届国会)+amendmentNumber(数字或数字字符串). 这些识别资料来自congressgov_bill_lookupamendments排行,豪斯congressgov_roll_votes行数(amendmentType编号 :amendmentNumber),以及congressgov_member_lookupsponsored编号 :cosponsored行,只包含行中的编号和类型url list浏览一congress,可选amendmentType,最新的更新,除非order: 'oldest',与fromDateTime编号 :toDateTime记录更新日期;拒绝amendmentNumber(单位:千美元)incompatible_identity) (中文(简体) ). 向其他操作发送通知,指定被忽略的日期get返回提案人、目的、说明、修改后的法案或修正案以及最新行动;actions, (中文(简体) ),cosponsors, (中文(简体) ),amendments(对本修正案的修正)和text页 次资源- 一个
actions准确记录一次点名表决的行rollVote,则congressgov_roll_votesb. 其论据 text列出已出版的文本版本,每个国会记录页;content在textVersionIndex作为一体characterOffset编号 :characterLimit窗口。 页面在周边的会场中打印修正案,因此往往比修正案长得多
congressgov_enacted_laws 工具
list浏览一congress,可选择lawType(单位:千美元)pub或者说priv),颁布过滤器congressgov_bill_lookup缺乏;get需求lawType+ 键lawNumber从列表行的laws[].number(单位:千美元)118-90)或其赤数(90(中文(简体) )get返回原始帐单记录,并在其上引用法律laws[]数组
congressgov_member_lookup 工具
- 无名称搜索 :
list过滤器由stateCode(单位:千美元)district, (中文(简体) ),0* 适用于一般情况,这需要stateCode, (中文(简体) ),congress,以及currentMember get返回配置文件为 abioguideId(例如:.P000197(三);sponsored财务报告和审定财务报表cosponsored退回该成员的立法
congressgov_committee_lookup 工具
committeeCode是一个室前缀( e)h编号 :s编号 :j),字母,并有一个2位后缀(例如.hsju00(三);get, (中文(简体) ),bills, (中文(简体) ),reports只有参议院nominations推断chamber从前缀取出,当前缀的机房不持有代码时,从委员会名册上读取jsat00参议院委员会;chamber在任何信件中都接受,因为委员会各行都予以接受Senate(中文(简体) )- 一个委员会名称在
committeeCode确定一个委员会匹配的时间,否则就用通知返回候选人行。 与chamber设置,只搜索该会议厅的委员会,所以在一个会议厅内有一个独特的名称(judiciary与chamber: 'senate') 一步解决,而一个孤独的模糊的比赛作为候选一行回来;没有chamber单枪匹马的比赛结果 通知上说它很近似 已解决的委员会在会议厅中读取其名册上排行名.list与filter名称比对每个委员会 范围,模糊的命中携带approximate: true bills默认情况下是最新的第一名(order),其行无标题,因此链条congressgov_bill_lookupget每行数
congressgov_roll_votes 工具
chamber实值house(默认,Congress.gov API)或senate(参议院的LIS反馈),任何信件;每通电话都需要congress+ 键session(一或二),以及get编号 :members添加voteNumber,每场会议将重排,并专门针对一个会议厅members过滤器由bioguideId(仅住宅),stateCode,以及party,在呼出前全部应用 :pagination.count计数匹配和memberFilter.rosterCount是名册大小。 参议院呼吁bioguideId失败unsupported_filter以自己的身份识别参议员stateCodelist财务报告和审定财务报表get提供调用并命名任何被忽略的过滤器- 国会的第一年是第1届和第二年第2届,但第二届会议可以持续到次年的1月1-3日(第116届国会的第二届会议在2021-01-01上投票)
list是最新的第一,除非order: 'oldest'· ;get返回问题、结果、统计和党的分解,以及members返回每个成员的位置- 众议院的选票来自第115届国会(2017年)和第101届参议院的选票(1989年),参议院的一排票对着无年号的饲料
voteDate带有衍生词的voteDateIso(票房服务携带)voteDateIso页:1 - 一个房子
get或者说members第115届国会以下的呼叫失败not_found在任何请求之前,命名该覆盖 并指向书记员的投票 XML 在法案行动'srecordedVotes - 当参议院的LIS反馈不能回答
list, (中文(简体) ),get,或members调用(senate.gov拒绝使用HTTP 403或其防火墙页面的自动客户端,另外4xx,5xx或复试后超时,为空机体), 投票视图反之,每届大会的文件都回答,而答复带有source(名称,url,latestVote,并请求引用 Voteview 。 总统职位被取消source.latestVote实值not_found点名表决。 直播自己的未找到的页面,一个被取消的呼叫,一个被花掉的呼叫预算,以及101团之前的大会永远不倒. 当种子解答时,输出没有变化,没有联系Voteview. Voteview的文件被缓存1小时. 众议院的选票不受影响
congressgov_senate_nominations 工具
list浏览一congress,首先更新;fromDateTime编号 :toDateTime在记录的更新日期上过滤,而不是其收到或行动日期.get, (中文(简体) ),actions, (中文(简体) ),committees, (中文(简体) ),hearings,以及nominees需要一个nominationNumber(单位:千美元)1000(一) PN1000;PN730-2, (中文(简体) ),pn730-2,以及730-2等同),和nominees还需要一个ordinal从nominees数组get返回时- 多部分提名(例如PN851)继续从事被分割的儿童活动(
851-1, (中文(简体) ),851-2,...);空子资源调用空子数返回一个指向该子数的通知 - 一项行动,其案文引用了自己的参议院记录投票(第2段)
Record Vote Number: 225.载体rollVote—— 说{ chamber: 'senate', congress, session, voteNumber },则congressgov_roll_votes投票理由。 每一个引用actions排队得一票 包括血压票 还有latestAction打开list行数和get;第101届国会前的选票为零
congressgov_bill_summaries 工具
- 可选
congress财务报告和审定财务报表billType(这需要congress(三);fromDateTime编号 :toDateTime过滤摘要的更新时间,而不是法案的行动日期,并覆盖过去7天,因为这两天都省略了 - 页面返回
limit横行,和pagination.nextOffset恢复; 超过 25 000 个字符的汇总带入窗口textTotalCharacters, (中文(简体) ),textTruncated,以及textNextOffset - 将一项法案摘要,或改为窗口摘要,最后使用
congressgov_bill_lookupsummaries
congressgov_crs_reports 工具
list先浏览目录, 最新的更新;fromDateTime编号 :toDateTimefilter on the date Congress.gov 最后一次更新报告,而不是发布日期.get财务报告和审定财务报表content带一个reportNumber: 字母后为数字(R40097, (中文(简体) ),RL33612, (中文(简体) ),IF12345)或,对于较旧的报告,两个数字组加一个连字符(96-548),无论如何id, (中文(简体) ),reportId,以及report_id被接受为reportNumber; 只发送一个标识键get返回作者、主题、摘要和下载格式content将报告的 HTML 版本读作纯文本characterOffset编号 :characterLimit窗口(文本、样式和注释已删除;表格作为分页行)。 只有 PDF 报告失败format_unavailable,命名其 PDF URL
congressgov_committee_reports 工具
list浏览一congress,可选择reportType(单位:千美元)hrpt{\fn黑体\fs20\shad2\2aH82\3aH20\4aH33\fscx95\3cH592001\be1}豪斯,srpt参议院,erpt执行).fromDateTime编号 :toDateTime最新更新报告记录conference选择会议报告(true)或他人(第2条)false(三);get, (中文(简体) ),text,以及content需求reportType+ 键reportNumberget返回引用、标题、委员会和相关法案;text列表{type, url}格式链接,以及content将报表读作一个字符窗口- 多部分报告作为一份记录提交:
part(默认 1) 在get, (中文(简体) ),text,以及content,以及parts当有多个部分时,列出每个部分的数字。 报告缺少的部分失败not_found,命名它拥有的部分
congressgov_daily_record 工具
- 导航运行
list(数量)issues(按volumeNumber页:1articles(按volumeNumber+ 键issueNumber(中文(简体) ) content阅读文章时articleIndex(全期基于0)作为字符窗口; 记录文章只发布格式文本和PDF, 所以format: 'xml'失败为format_unavailable
congressgov_search_bills 工具
query法案标题和CRS摘要的关键(AND-综合)congress, (中文(简体) ),billType,以及originChamber· ;limit1 - 100, (韩语),offset标记- BM25排行
billId加号congress编号 :billType编号 :billNumber页:1congressgov_bill_lookup,则asummaryPreview;政策领域和法案全文没有索引 - 每一份答复都取出可被搜索的大会的名称
mirroredCongresses页:1congress外出返回空结果,并提示congressgov_bill_lookup - 仅在
CONGRESS_MIRROR_ENABLED=true; 直至bun run mirror:init构建索引, 它在通知中返回空结果
congress://current 资源
- 目前的大会编号、会期和会议室信息,其他查询的基线
- 公开吊车1小时
congress://bill-types 资源
- 8法案类型代码(
hr, (中文(简体) ),s, (中文(简体) ),hjres, (中文(简体) ),sjres, (中文(简体) ),hconres, (中文(简体) ),sconres, (中文(简体) ),hres, (中文(简体) ),sres),并附有描述、室和实例引用 - 静态,没有上游呼叫;公开缓存24小时
congress://member/{bioguideId} 资源
bioguideId是一个大写字母和6个数字(例如:.P000197(中文(简体) )- 返回成员简介:姓名、州、党、任期、领导、职务、立法计数
congress://bill/{congress}/{billType}/{billNumber} 资源
congress财务报告和审定财务报表billNumber是正整数;billType是8个法案类型代码之一- 回返法案细节:发起人、地位、政策领域、委员会、最新行动
congress://committee/{committeeCode} 资源
committeeCode实值h编号 :s编号 :j后接3–8个小写字母(如.hsju00); 膛出自第一个字母- 回返委员会详情:姓名、分庭、小组委员会、历史、立法记录
congressgov_bill_analysis 提示
- 参数 :
congress, (中文(简体) ),billType,以及billNumber时,所有需要 - 返回一份用户信息,其中包含从摘要到展望的7个部分的分析,并附有要求每个部分使用的工具
congressgov_legislative_research 提示
- 参数 :
topic需要;congress选项, 默认为本届大会 - 与
CONGRESS_MIRROR_ENABLED计划以congressgov_search_bills;没有它,即刻要求 种子法案,成员,委员会,或 CRS 报告ID,因为没有其他工具 一个话题
特征
建造在 @cyanheads/mcp-ts-core: stdio和可流式的 HTTP 传输器,可插接式(none 编号 : jwt 编号 : oauth),可互换存储(in-memory, (中文(简体) ), filesystem, (中文(简体) ), Supabase, (中文(简体) ), Cloudflare KV/R2/D1),结构化记录,可选择的OpenTeleometry tracking.
国会
- 国会的Type-security客户端.gov REST API v3,加上参议院LIS XML的客户端支持参议院的滚动投票,而Voteview公布的投票文件则作为无法读取该消息时的倒计时
- The Congress.gov API没有关键词搜索,因此工具按国会,类型,日期范围,会场,州和区浏览;列表操作页面有
limit1–250(违约20)和offset content关于法案文本、修正案文本、委员会报告、记录条款和《公约》执行情况报告的characterOffset编号 :characterLimit窗口 (1-100 000个字符,默认为25 000个),仅从www.congress.gov25 MB 上限;法案文本、委员会报告和记录文章formattext(违约)或xml,一个 CRS 报告总是被读取为它的 HTML 版本,一个修正被读取为它的国会记录页的 HTML . 超过一个窗口( 最多 16 MB) 的文档被下载一次, 其后起的窗口通过 10 分钟的内存服务- 每一个工具调用或读取的资源,其所有上游请求、重试和备份都获得50秒,无论是发出一个请求还是连锁数个请求(a)
content呼叫的元数据查询和文件检索, 一个委员会的名字解决 与委员会名册, 一个分庭何时chamber已设定). MCP客户端60秒默认超时前upstream_timeout从国会,戈夫,可复试者upstream_error从参议院LIS的种子 和投票观回落 - 可选 API 密钥来自 api.data.gov (英语)数字 :
DEMO_KEY允许30个请求/小时和每个IP,注册的钥匙 5000/小时 - Opt- in 本地 SQLite FTS5 镜像 (
CONGRESS_MIRROR_ENABLED)在帐单标题和CRS摘要上添加关键字搜索
方便代理输出 :
- 每一份清单答复都附有
effectiveQuery财务报告和审定财务报表totalCount,带有notice当没有匹配时 list拒绝身份字段( 成员)bioguideId法律lawNumber委员会committeeCode指着一个委员会名称filter,提名nominationNumber,委员会报告part,以及billNumber, (中文(简体) ),voteNumber, (中文(简体) ),reportNumber, (中文(简体) ),volumeNumber与一个incompatible_identity将操作命名为要使用的错误- 行动不使用的投入会收到一份通知,注明它们被忽略;一个成员赞助和共同赞助的立法以及一个委员会的法案、报告和提名横跨每个大会
content返回时offset, (中文(简体) ),truncated,以及nextOffset,所以走多兆字节的帐单 永远不会跳过或重复字符- 类型失败( E)
document_unavailable, (中文(简体) ),format_unavailable, (中文(简体) ),document_fetch_failed, (中文(简体) ),document_too_large, (中文(简体) ),offset_past_end, (中文(简体) ),unsupported_filter, (中文(简体) ),not_found, (中文(简体) ),rate_limited, (中文(简体) ),invalid_request, (中文(简体) ),api_key_rejected, (中文(简体) ),upstream_error, (中文(简体) ),upstream_timeout),每个都有恢复提示
开始
连接到主机实例 :
claude mcp add --transport http congressgov-mcp-server https://congressgov.caseyjhand.com/mcp
或者在当地运行它:
claude mcp add congressgov-mcp-server -- npx -y @cyanheads/congressgov-mcp-server
对于其他客户端,请将此添加到 MCP 配置文件中 :
{
"mcpServers": {
"congressgov-mcp-server": {
"command": "npx",
"args": ["-y", "@cyanheads/congressgov-mcp-server"]
}
}
}
可选: 设置 CONGRESS_API_KEY 免费 api.data.gov 密钥 5000个请求/小时,而不是演示密钥的30/小时和每个IP的50/天。 对于 Docker 或源构建,请参见 运行服务器。 。 。 .
配置
| 变量 | 说明 | 默认 |
|---|---|---|
CONGRESS_API_KEY | API 密钥从 api.data.gov (英语)。 。 。 . | DEMO_KEY |
CONGRESS_API_BASE_URL | Congress.gov API基础URL. | https://api.congress.gov/v3 |
CONGRESS_MIRROR_ENABLED | 启用本地帐单搜索镜像和 congressgov_search_bills 工具. | false |
CONGRESS_MIRROR_PATH | SQLite 镜像索引的文件系统路径 . | .mirror/bills.sqlite3 |
CONGRESS_MIRROR_REFRESH_CRON | 进程内镜像刷新(仅限HTTP运输)的克伦表. 未设定表示运行 mirror:refresh 你自己来. | —— 说 |
CONGRESS_MIRROR_CONGRESSES | 以逗号分隔的大会编号来反射(例如:. 118,119) (中文(简体) ). | 本届大会+1 |
MCP_TRANSPORT_TYPE | 运输: stdio 或者说 http。 。 。 . | stdio |
MCP_HTTP_PORT | HTTP 服务器端口. | 3010 |
MCP_SESSION_MODE | HTTP 会话模式 : stateless, (中文(简体) ), stateful,或 auto· ; auto 决定: stateful。 。 。 . | stateless |
MCP_AUTH_MODE | 认证 : none, (中文(简体) ), jwt,或 oauth。 。 。 . | none |
MCP_LOG_LEVEL | 日志级别 (debug, (中文(简体) ), info, (中文(简体) ), notice, (中文(简体) ), warning, (中文(简体) ), error(见a/c.5/49/70,附件). | info |
LOGS_DIR | 日志文件目录(只有Node.js). | <project-root>/logs |
OTEL_ENABLED | 启用 打开几何。 。 。 . | false |
OTEL_EXPORTER_OTLP_ENDPOINT | 追踪和度量衡的底端OTLP. | —— 说 |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | 明确的OTLP日志端点;基端点不能允许日志导出. | —— 说 |
LOG_TOOL_FAILURE_PAYLOADS | 日志失败调用输入和输出, 并使用基于密钥的编辑; 自由格式值内部的秘密不被编辑 . | false |
LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES | 每个失败调用输入或输出记录的最大字节数 . | 16384 |
见 .env.example 用于完整可选覆盖列表.
运行服务器
要求数 Bun v1.4.0 (英语) 或更高(或Node.js v24+).
git clone https://github.com/cyanheads/congressgov-mcp-server.git
cd congressgov-mcp-server && bun install
cp .env.example .env
# Optionally set CONGRESS_API_KEY and the mirror variables in .env.
地方发展
-
构建并运行制作版本 :
bun run rebuild bun run start:http # or start:stdio -
从此取出时构建帐单搜索镜像 (与
CONGRESS_MIRROR_ENABLED=true:bun run mirror:init # full build bun run mirror:refresh # incremental refresh bun run mirror:verify # readiness and integrity check镜像 CLI 需要此检查或多克图像的路径映射; npm 安装无法运行这些脚本 .
-
运行检查和测试 :
bun run devcheck # Lint, format, typecheck, security bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
夹克
docker run --rm -e CONGRESS_API_KEY=your-api-key -p 3010:3010 ghcr.io/cyanheads/congressgov-mcp-server:latest
图像默认为 HTTP 传输、 无国籍会话模式和日志到 /var/log/congressgov-mcp-server。用于 stdio, 使用 docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio ghcr.io/cyanheads/congressgov-mcp-server:latest。要在当地建设,运行 docker build -t congressgov-mcp-server .; 默认安装了 OpenTelemotry 端对等依赖性, 并且 --build-arg OTEL_ENABLED=false 以略去他们。 图像带有镜像脚本,所以 docker exec <container> bun run mirror:init 建立索引.
项目结构
| 目录 | 目的 |
|---|---|
src/index.ts | createApp() 切入点:登记工具、资源和提示、输入服务,并安排镜像刷新. |
skills/ | 已出版代理商呼叫服务器的立法研究指南. |
src/config/ | 服务器特定环境变量与Zod解析并验证. |
src/mcp-server/tools/ | 工具定义definitions/*.tool.ts)加上共享输入,格式化,和摘要窗口帮助. |
src/mcp-server/resources/definitions/ | 资源定义*.resource.ts) (中文(简体) ). |
src/mcp-server/prompts/definitions/ | 即时定义*.prompt.ts) (中文(简体) ). |
src/services/call-budget.ts | 50秒的预算 每一个工具呼叫的上游请求份额. |
src/services/congress-api/ | Congress.gov API客户端:auth,pagination,速率限制. |
src/services/congress-documents/ | 被绑定的文档文本获取:主机许可列表,字节天花板,字符窗口,以及10分钟的文档机构缓存. |
src/services/congress-mirror/ | 本地 SQLite FTS5 帐单搜索镜:摄取,常态,图案. |
src/services/senate-lis/ | 参议院LIS XML客户端进行参议院点名投票,有"选民观"CSV倒计时. |
src/utils/ | HTML/XML 字符参考解码和国会数字算术. |
scripts/ | 构建、devcheck和发布工具,加上 mirror:init 编号 : mirror:refresh 编号 : mirror:verify (原始内容存档于2018-03-26). CLIs. |
tests/ | 单位和综合测试,反映 src/ 结构. |
发展指南
见 CLAUDE.md 发展准则和建筑规则。 简本:
- 搬运工投掷,框架渔获量——否
try/catch在工具逻辑中 - 使用
ctx.log请求范围伐木,ctx.state租户范围储存 - 所有工具只读,使用
readOnlyHint: true财务报告和审定财务报表idempotentHint: true说明 - 环绕外部 API 调用 : 验证 生 = 规范到域类型 = 返回输出计划; 永远不编造缺失字段
捐款
问题值得欢迎。 提交前进行检查和测试:
bun run devcheck
bun run test
许可证
阿帕奇-2.0 — 见 自由主义 详细情况.