Skip to main content
Glama
Congress[.]gov MCP Server

Congress[.]gov MCP Server

by AshwinSundar

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 claude

Manual Installation

Prerequisites

  1. Install uv. The easiest way on macOS and Linux is:

    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Get a Congress.gov API key.

  3. Install Claude Desktop, Claude Code, or another client that supports MCP Integrations

Initial Setup

  1. Complete Prerequisites

  2. Clone this repository, and cd in:

    git clone http://github.com/AshwinSundar/congress_gov_mcp
    cd congress_gov_mcp
  3. Install dependencies:

    uv sync
  4. Create a .env file from the template:

    cp .env.template .env
  5. Add your Congress.gov API key to the .env file:

congress_gov_mcp/.env

CONGRESS_GOV_API_KEY="your-api-key-here"

Client Configuration

Claude Desktop

  1. Complete Prerequisites

  2. Copy the absolute path to your uv installation:

which uv
  1. Add the following to your Claude Desktop configuration file, inside the mcpServers block:

    macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    Windows: %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

  1. Complete Prerequisites

  2. Add the following to .mcp.json in the directory you are running Claude Code in, inside the mcpServers block:

{
  "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 tools
get_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

    C2.9/5.0

    Scored across 21 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count3/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      The 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.
      24
      52 PyPI
      36
      Sustainable Use v1.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables 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.
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables querying U.S. legislative data from Congress.gov API using MCP resources for direct lookups and tools for searching and retrieving related data.
      8
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      MCP server for the Congress.gov API that tracks US federal legislative process, providing tools to search bills and get bill details.
      11
      35 PyPI
      1
      Apache 2.0