Skip to main content
Glama
AshwinSundar

Congress[.]gov MCP Server

by AshwinSundar

get_congressional_record

Retrieve official congressional record data from Congress.gov to access legislative proceedings, debates, and floor actions by volume, page, or date range.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
volumeNo
page_prefixNo
page_numberNo
offsetNo
limitNo
from_datetimeNo
to_datetimeNo

Implementation Reference

  • The core handler function implementing the get_congressional_record tool. It constructs the API URL based on provided parameters (volume, page_prefix, page_number), adds pagination and date filters, calls the Congress.gov API using requests, and handles errors by returning an error dict.
    @mcp.tool() async def get_congressional_record( volume: int | None = None, page_prefix: str | None = None, page_number: int | None = None, offset: int = 0, limit: int = 20, from_datetime: str | None = None, to_datetime: str | None = None ) -> dict: """ 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 """ base_url = "https://api.congress.gov/v3/congressional-record" url = base_url if volume: url += f"/{volume}" if page_prefix: url += f"/{page_prefix}" if page_number: url += f"/{page_number}" params = { "api_key": congress_gov_api_key, "format": "json", "offset": offset, "limit": min(limit, 250) } if from_datetime: params["fromDateTime"] = from_datetime if to_datetime: params["toDateTime"] = to_datetime try: response = requests.get(url, params=params) response.raise_for_status() return response.json() except requests.exceptions.RequestException as e: return { "error": f"Failed to retrieve congressional record information: {str(e)}", "status_code": getattr(e.response, "status_code", None) }
  • server.py:672-672 (registration)
    The @mcp.tool() decorator registers the get_congressional_record function as an MCP tool with FastMCP instance.
    @mcp.tool()
  • The function signature and docstring define the input schema (parameters with types and descriptions) and output type (dict) for the tool.
    async def get_congressional_record( volume: int | None = None, page_prefix: str | None = None, page_number: int | None = None, offset: int = 0, limit: int = 20, from_datetime: str | None = None, to_datetime: str | None = None ) -> dict:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AshwinSundar/congress_gov_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server