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 House, Senate, and legislative proceedings with filtering by date, volume, and page parameters.

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
from_datetimeNo
limitNo
offsetNo
page_numberNo
page_prefixNo
to_datetimeNo
volumeNo

Implementation Reference

  • Implementation of the get_congressional_record tool handler. This async function constructs the API URL based on provided parameters (volume, page_prefix, page_number), adds pagination and date filters, queries the Congress.gov API using requests, and returns the JSON response or 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 in the FastMCP server. The tool name is derived from the function name.
    @mcp.tool()
  • Function signature with type hints and comprehensive docstring defining the input schema (parameters with types, defaults, descriptions) and output (dict from API). FastMCP uses this for tool schema generation.
    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