cyanheads avatar

Congressgov Mcp Server

cyanheads/congressgov-mcp-server

A comprehensive wrapper around the Congress.gov REST API v3 that brings legislative data into your MCP workflow. You get ten read-only tools covering bills, votes, members, committees, nominations, CRS reports, and the daily Congressional Record, plus resources for current session info and bill type lookups. Built on the developer's mcp-ts-core framework with declarative tool definitions and pluggable auth. Runs stdio or streamable HTTP, and there's a public hosted instance at congressgov.caseyjhand.com if you want to skip setup. Needs an api.data.gov key for serious use (1,000 req/hr vs the 30/hr demo limit). Reach for this when you're building legislative tracking, policy research tools, or anything that needs structured access to what's moving through Congress.

GitHub stars
2
tools
12
transport
STDIO, HTTP
env vars
7
last updated
Nov 11, 2026

Install

From registry metadata
$ npx add-mcp https://congressgov.caseyjhand.com/mcp --name congressgov

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http congressgov https://congressgov.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 12 tools

Verified live against the running server on Nov 13, 2026.

congressgov_bill_lookupBrowse and retrieve U.S. legislative bill data from Congress.gov. Discover bills by filtering on congress, bill type, and date range — there is no keyword search. Use 'list' to browse (requires congress, defaults to most-recently-updated first), 'get' for full bill detail (spo...14 params

Browse and retrieve U.S. legislative bill data from Congress.gov. Discover bills by filtering on congress, bill type, and date range — there is no keyword search. Use 'list' to browse (requires congress, defaults to most-recently-updated first), 'get' for full bill detail (spo...

Parameters* required
billNumbervalue
Bill number. Required for get and sub-resource operations. Accepts the digit-string form list rows carry (e.g. "9479") as well as a number.
billTypestring
Bill type code. Required for get and sub-resource operations.one of hr · s · hjres · sjres · hconres · sconres
characterLimitinteger
Maximum characters to return (1-100000) — for the document window on 'content', and for each row's summary text on 'summaries'. Legislative documents run past a million characters and an enacted bi...default: 25000
characterOffsetinteger
First character to return, 0-based — of the document on 'content', and of every returned row's summary text on 'summaries'. Offsets are exact and are never snapped to a section or paragraph break,...default: 0
congress*integer
Congress number (e.g., 118, 119).
formatstring
Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls bac...one of text · xmldefault: text
fromDateTimestring
Start of date range filter (ISO 8601), for 'list' only. Filters by the bill's update date — when Congress.gov last touched the record — not by the bill's latest legislative action. Other operations...
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · get · actions · amendments · cosponsors · committees
orderstring
Sort order for 'list' (sorts by update date). 'recent' (default) is newest first; 'oldest' is ascending. Ignored by other operations.one of recent · oldestdefault: recent
textVersionIndexinteger
Which text version 'content' reads: the version's 0-based position in the rows 'text' returns, counted across pages. Dated versions run newest first, but an enrolled bill's undated Enrolled Bill ve...default: 0
toDateTimestring
End of date range filter (ISO 8601), for 'list' only. Same field semantics as fromDateTime.
versionCodestring
Which summary version 'summaries' returns — the versionCode a summary row carries ('00' introduced, '49' public law). Selection runs over the bill's whole summary list, which Congress.gov publishes...
congressgov_amendment_lookupBrowse and retrieve U.S. congressional amendments from Congress.gov — House (hamdt), Senate (samdt), and Senate unprinted (suamdt, 97th and 98th Congresses only). An amendment is addressed by congress + amendmentType + amendmentNumber, the identifiers other tools return: congr...12 params

Browse and retrieve U.S. congressional amendments from Congress.gov — House (hamdt), Senate (samdt), and Senate unprinted (suamdt, 97th and 98th Congresses only). An amendment is addressed by congress + amendmentType + amendmentNumber, the identifiers other tools return: congr...

Parameters* required
amendmentNumbervalue
Amendment number. Required for every operation but 'list', which refuses it. Accepts the digit-string form rows carry (e.g. "255") as well as a number.
amendmentTypestring
Amendment type: 'hamdt' (House), 'samdt' (Senate), or 'suamdt' (Senate unprinted, 97th and 98th Congresses only). Optional on 'list'; required for every other operation.one of hamdt · samdt · suamdt
characterLimitinteger
Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows.default: 25000
characterOffsetinteger
First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with ev...default: 0
congress*integer
Congress number (e.g., 118, 119).
fromDateTimestring
Start of the update-date window for 'list' (ISO 8601, e.g. 2026-10-01T00:00:00Z): when Congress.gov last touched the record, not when the amendment was offered. Other operations ignore it and say s...
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · get · actions · cosponsors · amendments · text
orderstring
Sort order for 'list' (sorts by update date). 'recent' (default) is newest first; 'oldest' is ascending. Ignored by other operations.one of recent · oldestdefault: recent
textVersionIndexinteger
Which text version 'content' reads, 0-based against the order 'text' returns; each 'text' row carries the textVersionIndex that reads it. Ignored by other operations.default: 0
toDateTimestring
End of the update-date window for 'list' (ISO 8601). Same field semantics as fromDateTime.
congressgov_enacted_lawsBrowse enacted public and private laws from Congress.gov by congress and law type ('pub' for public laws, 'priv' for private). 'list' filters by enactment status and law type — the discovery path 'bill_lookup' does not offer. 'get' returns the origin bill record (sponsor, acti...6 params

Browse enacted public and private laws from Congress.gov by congress and law type ('pub' for public laws, 'priv' for private). 'list' filters by enactment status and law type — the discovery path 'bill_lookup' does not offer. 'get' returns the origin bill record (sponsor, acti...

Parameters* required
congress*integer
Congress number.
lawNumbervalue
Law number, as carried by a 'list' row's `laws[].number` — either the full citation ('118-90', rendered as 'Public Law 118-90') or the portion after the hyphen ('90'); the prefix is the congress an...
lawTypestring
Law type — 'pub' (public laws, general application, most common) or 'priv' (private laws, specific individuals or entities). Required for 'get'.one of pub · priv
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · get
congressgov_member_lookupDiscover congressional members and their legislative activity. No name search. For 'list', filter by stateCode (optionally with district), by congress, or by both together (e.g., 118th Congress + CA, or CA district 12 in the 118th). Add currentMember=true to restrict to curren...8 params

Discover congressional members and their legislative activity. No name search. For 'list', filter by stateCode (optionally with district), by congress, or by both together (e.g., 118th Congress + CA, or CA district 12 in the 118th). Add currentMember=true to restrict to curren...

Parameters* required
bioguideIdstring
Unique member identifier (e.g., 'P000197'). Required for get/sponsored/cosponsored; 'list' refuses it.
congressinteger
Congress number to filter by, for 'list' only — Congress.gov offers no congress filter on a member's sponsored or cosponsored legislation.
currentMemberboolean
Filter to currently serving members, for 'list' only. Omit to include both current and former members.
districtinteger
Congressional district number, for 'list' only. Requires stateCode. Use 0 for at-large.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · get · sponsored · cosponsored
stateCodestring
Two-letter state code (e.g., 'CA', 'TX'), for 'list' only.
congressgov_committee_lookupBrowse congressional committees and their legislation, reports, and nominations. Use 'list' (with optional 'filter' for name→code resolution) to discover committee codes — the systemCode on each row, such as 'hsju00' or the historical 'n79043125' — then 'get' or drill into 'bi...10 params

Browse congressional committees and their legislation, reports, and nominations. Use 'list' (with optional 'filter' for name→code resolution) to discover committee codes — the systemCode on each row, such as 'hsju00' or the historical 'n79043125' — then 'get' or drill into 'bi...

Parameters* required
chamberstring
Chamber filter for 'list'. For 'get' and sub-resources, the committee's chamber, inferred when omitted; set it to resolve a committee name given as committeeCode among that chamber's committees only.one of house · senate · joint
committeeCodestring
Committee system code: the systemCode of a 'list' row, e.g. 'hsju00' or 'n79043125', matched case-insensitively. Required for 'get' and sub-resources; 'list' refuses it. Any other value with a lett...
congressinteger
Congress number, for 'list' only — Congress.gov offers no congress filter on a committee's bills, reports, or nominations.
filterstring
Filter committee-list results by name (e.g., 'transportation', 'armed services'), for 'list' only; fuzzy-matched rows are labeled approximate.
fromDateTimestring
Start of the update-date window for 'bills' and 'reports' (ISO 8601, e.g. 2025-03-01T00:00:00Z): a row matches when Congress.gov updated it at any time inside the window, so older rows touched in t...
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · get · bills · reports · nominations
orderstring
Row order for the 'bills' sub-resource. Congress.gov lists a committee's bills roughly from least to most recently updated: 'recent' (default) reverses that list, so the rows it lists last come fir...one of recent · oldestdefault: recent
toDateTimestring
End of the update-date window for 'bills' and 'reports' (ISO 8601). Same semantics as fromDateTime. Ignored by 'list', 'get', and 'nominations'.
congressgov_roll_votesRetrieve U.S. congressional roll call votes and individual member voting positions for either chamber. Set 'chamber' to 'house' (default, from the Congress.gov API — Congress.gov publishes House roll call votes from the 115th Congress (2017) onward) or 'senate' (from the Senat...11 params

Retrieve U.S. congressional roll call votes and individual member voting positions for either chamber. Set 'chamber' to 'house' (default, from the Congress.gov API — Congress.gov publishes House roll call votes from the 115th Congress (2017) onward) or 'senate' (from the Senat...

Parameters* required
bioguideIdvalue
For 'members' on a House vote: return only the position of the member with this bioguide ID (e.g. 'J000298', as congressgov_member_lookup returns it), in any letter case. The Senate's LIS feed iden...
chamberstring
Chamber whose votes to query, in any letter case. 'house' (default) draws from the Congress.gov API; 'senate' draws from the Senate's official LIS roll-call feed, or from Voteview's published vote...one of house · senatedefault: house
congress*integer
Congress number.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · get · members
orderstring
Sort order for 'list', by roll call number in both chambers — the order votes were taken within a session. 'recent' (default) returns the session's latest vote first; 'oldest' starts at roll call 1...one of recent · oldestdefault: recent
partyvalue
For 'members': return only the positions of one party, by the code the roster carries (e.g. 'D', 'R', 'I'), in any letter case. Combined filters must all match; they apply before limit and offset,...
session*integer
Session number (1 or 2). A congress's first year is session 1 and its second year session 2; a second session can run into January 1–3 of the following year (the 116th Congress's second session vot...
stateCodevalue
For 'members': return only the positions of one state's or territory's members, by two-letter code (e.g. 'WA'), in any letter case. Ignored by 'list' and 'get'.
voteNumberinteger
Roll call vote number. Required for 'get' and 'members'.
congressgov_senate_nominationsBrowse presidential nominations to federal positions and track the Senate confirmation process. Use 'list' to browse, 'get' for nomination detail, 'actions'/'committees'/'hearings' for confirmation pipeline data, or 'nominees' to retrieve individual appointees in a multi-nomin...8 params

Browse presidential nominations to federal positions and track the Senate confirmation process. Use 'list' to browse, 'get' for nomination detail, 'actions'/'committees'/'hearings' for confirmation pipeline data, or 'nominees' to retrieve individual appointees in a multi-nomin...

Parameters* required
congress*integer
Congress number.
fromDateTimestring
Start of the update-date window for 'list' (ISO 8601, e.g. 2026-10-01T00:00:00Z): the date Congress.gov last updated a nomination record, not its received or latest action date. Ignored by other op...
limitinteger
Results per page (1-250).default: 20
nominationNumberstring
Nomination number, bare or as the citation list rows carry (e.g. 'PN730-2'). Use the parent form (e.g. '1000') for nominations whose activity sits on the parent; use the partitioned form (e.g. '851...
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · get · nominees · actions · committees · hearings
ordinalinteger
Batch ordinal within a multi-nominee nomination. Each ordinal addresses a group of nominees; the 'nominees' operation returns every individual in that batch. Use 'get' first to see available ordina...
toDateTimestring
End of the update-date window for 'list' (ISO 8601). Same field semantics as fromDateTime. Ignored by other operations.
congressgov_bill_summariesBrowse recent CRS (Congressional Research Service) bill summaries — plain-language summaries of bills at each legislative stage, useful for answering "what's happening in Congress?". The fromDateTime/toDateTime filters apply to the summary's update time, not the bill's action...6 params

Browse recent CRS (Congressional Research Service) bill summaries — plain-language summaries of bills at each legislative stage, useful for answering "what's happening in Congress?". The fromDateTime/toDateTime filters apply to the summary's update time, not the bill's action...

Parameters* required
billTypestring
Bill type filter. Requires 'congress'.one of hr · s · hjres · sjres · hconres · sconres
congressinteger
Congress number. Optional — omit for summaries across all congresses.
fromDateTimestring
Start of date range (ISO 8601), filtered on the summary update time. Defaults to 7 days ago if neither date param is set.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
toDateTimestring
End of date range (ISO 8601), filtered on the summary update time. Defaults to now.
congressgov_crs_reportsBrowse, retrieve, and read CRS (Congressional Research Service) reports — nonpartisan policy analyses by subject-matter experts at the Library of Congress, covering policy areas, legislative proposals, and legal questions. Report IDs are letters then digits (R40097, RL33612, I...8 params

Browse, retrieve, and read CRS (Congressional Research Service) reports — nonpartisan policy analyses by subject-matter experts at the Library of Congress, covering policy areas, legislative proposals, and legal questions. Report IDs are letters then digits (R40097, RL33612, I...

Parameters* required
characterLimitinteger
Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows.default: 25000
characterOffsetinteger
First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with ev...default: 0
fromDateTimestring
Start of the update-date window for 'list' (ISO 8601, e.g. 2026-10-01T00:00:00Z): the date Congress.gov last updated a report, not its publication date. Ignored by other operations.
limitinteger
Results per page (1-250): reports on 'list', related materials on 'get'.default: 20
offsetinteger
Pagination offset: into the report list on 'list', into the report's related materials on 'get'.default: 0
operation*string
Which data to retrieve.one of list · get · content
reportNumberstring
CRS report ID — letters then digits (e.g. 'R40097', 'IF12345') or two digit groups joined by a hyphen (e.g. '96-548'). Case and surrounding whitespace are ignored. Required for 'get' and 'content'.
toDateTimestring
End of the update-date window for 'list' (ISO 8601). Same field semantics as fromDateTime. Ignored by other operations.
congressgov_committee_reportsBrowse and retrieve committee reports from Congress.gov — reports accompany legislation reported out of committee and explain the bill's purpose, committee amendments, dissenting views, and the committee vote. Report types are 'hrpt' (House), 'srpt' (Senate), and 'erpt' (Execu...13 params

Browse and retrieve committee reports from Congress.gov — reports accompany legislation reported out of committee and explain the bill's purpose, committee amendments, dissenting views, and the committee vote. Report types are 'hrpt' (House), 'srpt' (Senate), and 'erpt' (Execu...

Parameters* required
characterLimitinteger
Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows.default: 25000
characterOffsetinteger
First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with ev...default: 0
conferenceboolean
For 'list': true returns only conference reports, false only the others; omit for both. Ignored by other operations.
congress*integer
Congress number.
formatstring
Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls bac...one of text · xmldefault: text
fromDateTimestring
Start of the update-date window for 'list' (ISO 8601, e.g. 2025-06-01T00:00:00Z): the date Congress.gov last updated a report record, not its publication date. Ignored by other operations.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · get · text · content
partinteger
Which part of a multi-part report 'get', 'text', and 'content' serve; Part 1 when omitted. A multi-part response lists the report's part numbers in parts. 'list' does not take it.
reportNumberinteger
Committee report number. Required for get, text, and content operations.
reportTypestring
Report type. Required for get, text, and content operations.one of hrpt · srpt · erpt
toDateTimestring
End of the update-date window for 'list' (ISO 8601). Same field semantics as fromDateTime. Ignored by other operations.
congressgov_daily_recordBrowse the daily Congressional Record — floor speeches, debates, and legislative text published each day Congress is in session. Navigation is hierarchical: volumes (via 'list') → issues (via 'issues') → articles (via 'articles'). Use 'list' to find recent volumes, 'issues' to...9 params

Browse the daily Congressional Record — floor speeches, debates, and legislative text published each day Congress is in session. Navigation is hierarchical: volumes (via 'list') → issues (via 'issues') → articles (via 'articles'). Use 'list' to find recent volumes, 'issues' to...

Parameters* required
articleIndexinteger
Which article 'content' reads, 0-based against the issue's whole article sequence — the same absolute position 'articles' pages through with offset. Ignored by other operations.default: 0
characterLimitinteger
Maximum characters to return for 'content' (1-100000). Legislative documents run past a million characters, so a full bill takes several windows.default: 25000
characterOffsetinteger
First character to return for 'content', 0-based. Offsets are exact and are never snapped to a section or paragraph break, so feeding the response's nextOffset back walks the whole document with ev...default: 0
formatstring
Document format for 'content'. 'text' is GPO's Formatted Text — plain, pre-formatted print output, published for every document checked. 'xml' prefers United States Legislative Markup and falls bac...one of text · xmldefault: text
issueNumbervalue
Issue number within a volume. Required for 'articles' and 'content'. List rows carry this as a string (e.g. "109") — both forms are accepted.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operation*string
Which data to retrieve.one of list · issues · articles · content
volumeNumbervalue
Volume number. Required for 'issues', 'articles', and 'content'. Accepts a number or the digit-string form list rows carry.
congressgov_search_billsKeyword-search U.S. bills by title and CRS summary text — the discovery path the Congress.gov API itself lacks (it has no keyword search). Backed by a local full-text index over a bounded window of congresses, which every response names in mirroredCongresses; title and summary...6 params

Keyword-search U.S. bills by title and CRS summary text — the discovery path the Congress.gov API itself lacks (it has no keyword search). Backed by a local full-text index over a bounded window of congresses, which every response names in mirroredCongresses; title and summary...

Parameters* required
billTypestring
Restrict to a bill type (hr, s, hjres, sjres, hconres, sconres, hres, sres).one of hr · s · hjres · sjres · hconres · sconres
congressinteger
Restrict to a single congress (e.g. 119), one of the mirroredCongresses every response reports. Omit to search the whole mirrored window.
limitinteger
Results per page (1–100, default 20).default: 20
offsetinteger
Pagination offset.default: 0
originChamberstring
Restrict to the originating chamber.one of House · Senate
query*string
Keywords matched against bill titles and summaries (e.g. "semiconductor export controls"). Words are AND-combined; "two words" matches the exact phrase; word* matches a prefix; -word or NOT word ex...

Sponsors

Configuration

CONGRESS_API_KEY

Optional API key from api.data.gov. Fallbacks: DEMO_KEY 30/hour and 50/day per IP; registered key 5000/hour. Upstream hourly quota headers take precedence.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/congressgov-mcp-server

Access U.S. congressional data (bills, votes, members, committees) via MCP. STDIO or Streamable HTTP.

12 Tools • 6 Resources • 2 Prompts • 1 Skill

Details

Repository
github.com/cyanheads/congressgov-mcp-server
Category
Data & Analytics
Package
@cyanheads/congressgov-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
3
Prompts
2
Tools verified
Nov 13, 2026

More from cyanheads

Related Data & Analytics MCP servers

View all
1cyanheads avatarEpa Mcp Servercyanheads/epa-mcp-serverSearch EPA compliance, TRI, Superfund, drinking-water, EJScreen, and AirNow data.2stars
2cyanheads avatarOpenfec Mcp Servercyanheads/openfec-mcp-serverAccess FEC campaign finance data. Query data about candidates, money trails, and election filings.2stars
3cyanheads avatarSports Mcp Servercyanheads/sports-mcp-serverGet live scores, schedules, standings, team and player data for NFL, NBA, MLB, NHL, and soccer.2stars
4dsbissett avatarOffice Addin Mcpdsbissett/office-addin-mcpMCP server for Office add-ins via WebView2/CDP. Provides excel.*, page.*, and addin.* tools.2stars
5houtini-ai avatarFmphoutini-ai/fmp-mcpAccess financial data and market information via Financial Modeling Prep API2stars
6ofershap avatarSqliteofershap/mcp-server-sqliteSQLite MCP — query databases, inspect schemas, explain queries, export data.2stars