Congress[.]gov MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Congress[.]gov MCP Server show me recent bills about healthcare"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Congress.gov MCP server
Ever wonder what our (US) Congress is up to? Tired of reading the news to find out? Ask the US Congress API yourself.
Unofficial MCP server for the Congress.gov API
Installation
Installing via Smithery
To install congress_gov_mcp for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @AshwinSundar/congress_gov_mcp --client claudeManual Installation
Prerequisites
Install uv. The easiest way on macOS and Linux is:
curl -LsSf https://astral.sh/uv/install.sh | shGet a Congress.gov API key.
Install Claude Desktop, Claude Code, or another client that supports MCP Integrations
Initial Setup
Complete Prerequisites
Clone this repository, and
cdin:git clone http://github.com/AshwinSundar/congress_gov_mcpcd congress_gov_mcpInstall dependencies:
uv syncCreate a
.envfile from the template:cp .env.template .envAdd your Congress.gov API key to the
.envfile:
congress_gov_mcp/.env
CONGRESS_GOV_API_KEY="your-api-key-here"
Client Configuration
Claude Desktop
Complete Prerequisites
Copy the absolute path to your
uvinstallation:
which uvAdd the following to your Claude Desktop configuration file, inside the
mcpServersblock:macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"congress_gov_mcp": {
"command": "/absolute_path/to/uv",
"args": [
"run",
"/absolute_path_to/congress_gov_mcp/server.py"
]
}
}
}
Claude Code
Complete Prerequisites
Add the following to
.mcp.jsonin the directory you are running Claude Code in, inside themcpServersblock:
{
"mcpServers": {
"congress_gov_mcp": {
"command": "uv",
"args": [
"run",
"/absolute_path_to/congress_gov_mcp/server.py"
]
}
}
}
Related MCP server: OpenDiscourse MCP
Roadmap
api.congress.gov
/bill
/{congress}
/{congress}/{billType}
/{congress}/{billType}/{billNumber}
/actions
/amendments
/committees
/cosponsors
/relatedbills
/subjects
/summaries
/text
/titles
/amendment
/{congress}
/{congress}/{amendmentType}
/{congress}/{amendmentType}/{amendmentNumber}
/actions
/cosponsors
/amendments
/text
/summaries
/{congress}
/{congress}/{billType}
/congress
/{congress}
/current
/member
/{bioguideId}
/sponsored-legislation
/cosponsored-legislation
/committee
/{systemCode}
/bills
/reports
/nominations
/meetings
/hearings
/house-communication
/senate-communication
/committee-report
/{congress}
/{congress}/{reportType}
/{congress}/{reportType}/{reportNumber}
/text
/committee-print
/{congress}
/{congress}/{printType}
/{congress}/{printType}/{printNumber}
/text
/committee-meeting
/{congress}
/{congress}/{chamber}
/meetings
/hearing
/{congress}
/{congress}/{chamber}
/{congress}/{chamber}/{hearingNumber}
/house-vote
/{congress}
/{congress}/{session}
/{congress}/{session}/{rollCallNumber}
/congressional-record
/{volume}
/{volume}/{pagePrefix}
/{volume}/{pagePrefix}/{pageNumber}
/daily-congressional-record
/{volume}
/{volume}/{issue}
/bound-congressional-record
/{year}
/{year}/{month}
/{year}/{month}/{day}
/house-communication
/{congress}
/{congress}/{communicationType}
/{congress}/{communicationType}/{communicationNumber}
/house-requirement
/{congress}
/{congress}/{requirementNumber}
/senate-communication
/{congress}
/{congress}/{communicationType}
/{congress}/{communicationType}/{communicationNumber}
/nomination
/{congress}
/{congress}/{nominationNumber}
/actions
/hearings
/crsreport
/{productCode}
/treaty
/{congress}
/{congress}/{treatyNumber}
/actions
/committees
Available Tools
21 toolsget_amendmentsB
Retrieve amendments from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/AmendmentEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) amendment_type: Type of amendment - hamdt: House Amendment - samdt: Senate Amendment - suamdt: Senate Unprinted Amendment amendment_number: Specific amendment number (requires congress and amendment_type) offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Amendment data from Congress.gov API
Inputs: congress, amendment_type, amendment_number, offset, +3 more.
get_billsB
Retrieve a list of bills. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/BillEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) bill_type: Type of bill - hr: House of Representatives Bill - s: Senate Bill - hjres: House Joint Resolution - sjres: Senate Joint Resolution - hconres: House Concurrent Resolution - sconres: Senate Concurrent Resolution - hres: House Simple Resolution - sres: Senate Simple Resolution bill_number: Specific bill number (requires congress and bill_type) offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format) sort: Sort order ('updateDate+asc' or 'updateDate+desc')
Returns: dict: Bill data from Congress.gov API
Inputs: congress, bill_type, bill_number, offset, +4 more.
get_bound_congressional_recordB
Retrieve bound congressional record information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/BoundCongressionalRecordEndpoint.md
Args: year: Year month: Month (1-12) day: Day (1-31) offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Bound congressional record data from Congress.gov API
Inputs: year, month, day, offset, +3 more.
get_committee_meetingsB
Retrieve committee meeting information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/CommitteeMeetingEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) chamber: Chamber (house, senate) offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Committee meeting data from Congress.gov API
Inputs: congress, chamber, offset, limit, +2 more.
get_committee_printsB
Retrieve committee print information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/CommitteePrintEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) print_type: Type of print - hprt: House Print - sprt: Senate Print - jprt: Joint Committee Print print_number: Specific print number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Committee print data from Congress.gov API
Inputs: congress, print_type, print_number, offset, +3 more.
get_committee_reportsB
Retrieve committee report information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/CommitteeReportEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) report_type: Type of report - hrpt: House Report - srpt: Senate Report - erpt: Executive Report report_number: Specific report number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Committee report data from Congress.gov API
Inputs: congress, report_type, report_number, offset, +3 more.
get_committeesB
Retrieve committee information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/CommitteeEndpoint.md
Args: system_code: Specific committee system code (e.g., "hsag" for House Agriculture) offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Committee data from Congress.gov API
Inputs: system_code, offset, limit, from_datetime, +1 more.
get_congressB
Retrieve congress information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/CongressEndpoint.md
Args: congress: Specific congress number (e.g., 118 for 118th Congress) or None for all offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20)
Returns: dict: Congress data from Congress.gov API
Inputs: congress, offset, limit.
get_congressional_recordA
Retrieve congressional record information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/DailyCongressionalRecordEndpoint.md
Args: volume: Volume number page_prefix: Page prefix - h: House section - s: Senate section - e: Extensions of Remarks section - d: Daily Digest section page_number: Specific page number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Congressional record data from Congress.gov API
Inputs: volume, page_prefix, page_number, offset, +3 more.
get_crsreportA
Retrieve CRS (Congressional Research Service) report information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/CRSReportEndpoint.md
Args: product_code: Specific product code for CRS report offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: CRS report data from Congress.gov API
Inputs: product_code, offset, limit, from_datetime, +1 more.
get_daily_congressional_recordB
Retrieve daily congressional record information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/DailyCongressionalRecordEndpoint.md
Args: volume: Volume number issue: Issue identifier offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Daily congressional record data from Congress.gov API
Inputs: volume, issue, offset, limit, +2 more.
get_hearingsA
Retrieve hearing information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/HearingEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) chamber: Chamber (house, senate) hearing_number: Specific hearing number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Hearing data from Congress.gov API
Inputs: congress, chamber, hearing_number, offset, +3 more.
get_house_communicationB
Retrieve House communication information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/HouseCommunicationEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) communication_type: Type of communication - ec: Executive Communication - ml: Memorial - pm: Presidential Message - pt: Petition communication_number: Specific communication number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: House communication data from Congress.gov API
Inputs: congress, communication_type, communication_number, offset, +3 more.
get_house_requirementB
Retrieve House requirement information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/HouseRequirementEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) requirement_number: Specific requirement number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: House requirement data from Congress.gov API
Inputs: congress, requirement_number, offset, limit, +2 more.
get_house_votesB
Retrieve House vote information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/HouseRollCallVoteEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) session: Session number (1 or 2) roll_call_number: Specific roll call vote number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: House vote data from Congress.gov API
Inputs: congress, session, roll_call_number, offset, +3 more.
get_membersB
Retrieve member information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/MemberEndpoint.md
Args: bioguide_id: Specific member bioguide ID (e.g., "A000374") offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format) current_member: Filter by current member status (true/false)
Returns: dict: Member data from Congress.gov API
Inputs: bioguide_id, offset, limit, from_datetime, +2 more.
get_nominationB
Retrieve nomination information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/NominationEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) nomination_number: Specific nomination number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Nomination data from Congress.gov API
Inputs: congress, nomination_number, offset, limit, +2 more.
get_senate_communicationB
Retrieve Senate communication information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/SenateCommunicationEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) communication_type: Type of communication - ec: Executive Communication - pm: Presidential Message - pom: Petition or Memorial communication_number: Specific communication number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Senate communication data from Congress.gov API
Inputs: congress, communication_type, communication_number, offset, +3 more.
get_summariesA
Retrieve bill summaries from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/SummariesEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) bill_type: Type of bill - hr: House of Representatives Bill - s: Senate Bill - hjres: House Joint Resolution - sjres: Senate Joint Resolution - hconres: House Concurrent Resolution - sconres: Senate Concurrent Resolution - hres: House Simple Resolution - sres: Senate Simple Resolution offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format) sort: Sort order ('updateDate+asc' or 'updateDate+desc')
Returns: dict: Summary data from Congress.gov API
Inputs: congress, bill_type, offset, limit, +3 more.
get_swaggerD
Inputs: no named parameters.
get_treatyB
Retrieve treaty information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/TreatyEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) treaty_number: Specific treaty number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: Treaty data from Congress.gov API
Inputs: congress, treaty_number, offset, limit, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 21 tools
Each tool targets a distinct resource type within the Congress.gov domain, such as amendments, bills, committees, members, etc. The descriptions clearly differentiate the data each tool retrieves, with no overlap in purpose or functionality.
All tools follow a consistent 'get_' prefix with snake_case naming, clearly indicating retrieval operations. The pattern is uniform across all 21 tools, making them predictable and easy to understand.
With 21 tools, the count is on the higher side for a single server, but it aligns with the comprehensive scope of the Congress.gov API covering many legislative entities. It feels slightly heavy but is reasonable given the domain complexity.
The tool set provides broad coverage of legislative data types, including bills, amendments, committees, members, votes, and more. Minor gaps may exist, such as lack of update or delete operations, but this is typical for a read-only API wrapper and agents can work effectively with the provided retrieval tools.
Maintenance
Related MCP Connectors
Nonpartisan U.S. Congress data: bill decodes, rep lookup, bilingual EN/ES, read-only, no accounts.
U.S. federal policy data — bills, Congress members, voting records, and civic info.
Congressional Documents — full-text search and retrieval over the official record of Congress…
Congress MCP — US Congress bill/law/member data via the official congress.gov API (Library of…
Related MCP Servers
- AlicenseAqualityBmaintenanceThe open Congress.gov MCP server. Provides comprehensive access to the Congress.gov API through 6 organized toolsets, enabling AI systems to retrieve and interact with legislative data from the United States Congress with a clean, unified interface.2452 PyPI36Sustainable Use v1.0
- AlicenseNot gradedqualityDmaintenanceEnables access to comprehensive U.S. legislative and governmental data from GovInfo.gov and Congress.gov APIs, including bills, Congressional records, Federal Register documents, member information, and committee activities.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying U.S. legislative data from Congress.gov API using MCP resources for direct lookups and tools for searching and retrieving related data.8MIT
- AlicenseAqualityBmaintenanceMCP server for the Congress.gov API that tracks US federal legislative process, providing tools to search bills and get bill details.1135 PyPI1Apache 2.0