CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
cyanheads avatar

Congressgov Mcp Server

cyanheads/congressgov-mcp-server
110 toolsSTDIO, HTTPregistry active
Summary

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.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →

Tools

Public tool metadata for what this MCP can expose to an agent.

10 tools
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), 'get' for full bill detail (sponsor, policy area, CBO estimates, law inf...8 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), 'get' for full bill detail (sponsor, policy area, CBO estimates, law inf...

Parameters* required
billNumberinteger
Bill number. Required for get and sub-resource operations.
billTypestring
Bill type code. Required for get and sub-resource operations.one of hr · s · hjres · sjres · hconres · sconres
congressinteger
Congress number (e.g., 118, 119).
fromDateTimestring
Start of date range filter (ISO 8601). Filters by latest action date.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operationstring
Which data to retrieve.one of list · get · actions · amendments · cosponsors · committees
toDateTimestring
End of date range filter (ISO 8601).
congressgov_enacted_lawsBrowse enacted public and private laws from Congress.gov. Use 'list' to browse laws by congress, or 'get' for a specific law's full detail. Each law references its origin bill for the full legislative history. Law types: pub: Public laws (general application, most common); pri...6 params

Browse enacted public and private laws from Congress.gov. Use 'list' to browse laws by congress, or 'get' for a specific law's full detail. Each law references its origin bill for the full legislative history. Law types: pub: Public laws (general application, most common); pri...

Parameters* required
congressinteger
Congress number.
lawNumberinteger
Law number. Required for 'get'.
lawTypestring
Law type. Required for 'get'.one of pub · priv
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operationstring
Which data to retrieve.one of list · get
congressgov_member_lookupDiscover congressional members and their legislative activity. There is no name search — use 'list' with stateCode (optionally with district), with a congress number, or with currentMember=true to find members. Once you have a bioguideId, use 'get' for full profile or 'sponsor...8 params

Discover congressional members and their legislative activity. There is no name search — use 'list' with stateCode (optionally with district), with a congress number, or with currentMember=true to find members. Once you have a bioguideId, use 'get' for full profile or 'sponsor...

Parameters* required
bioguideIdstring
Unique member identifier (e.g., 'P000197'). Required for get/sponsored/cosponsored.
congressinteger
Congress number to filter by.
currentMemberboolean
Filter to currently serving members. Omit to include both current and former members.
districtinteger
Congressional district number. Requires stateCode. Use 0 for at-large.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operationstring
Which data to retrieve.one of list · get · sponsored · cosponsored
stateCodestring
Two-letter state code (e.g., 'CA', 'TX').
congressgov_committee_lookupBrowse congressional committees and their legislation, reports, and nominations. Committee codes follow the pattern chamber-prefix (h/s/j) + abbreviation + number — use 'list' to discover codes, then 'get' or drill into 'bills', 'reports', or 'nominations' ('nominations' is Se...7 params

Browse congressional committees and their legislation, reports, and nominations. Committee codes follow the pattern chamber-prefix (h/s/j) + abbreviation + number — use 'list' to discover codes, then 'get' or drill into 'bills', 'reports', or 'nominations' ('nominations' is Se...

Parameters* required
chamberstring
Chamber filter. Required for 'get' and sub-resources.one of house · senate · joint
committeeCodestring
Committee system code (e.g., 'hsju00'). Required for get and sub-resources.
congressinteger
Congress number.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operationstring
Which data to retrieve.one of list · get · bills · reports · nominations
orderstring
Sort order for the 'bills' sub-resource. 'recent' (default) returns newest update-date first; 'oldest' returns ascending update-date order. Ignored by other operations.one of recent · oldestdefault: recent
congressgov_roll_votesRetrieve House roll call vote data and individual member voting positions — House-only, as Senate vote data is not yet in the Congress.gov API. Use 'list' to find votes by congress and session, 'get' for vote details (question, result, associated bill), or 'members' for how ea...6 params

Retrieve House roll call vote data and individual member voting positions — House-only, as Senate vote data is not yet in the Congress.gov API. Use 'list' to find votes by congress and session, 'get' for vote details (question, result, associated bill), or 'members' for how ea...

Parameters* required
congressinteger
Congress number.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operationstring
Which data to retrieve.one of list · get · members
sessioninteger
Session number (1 or 2). Odd years are session 1, even years session 2.
voteNumberinteger
Roll call vote number. Required for 'get' and 'members'.
congressgov_senate_nominationsBrowse presidential nominations to federal positions and track the Senate confirmation process. Nominations use 'PN' (Presidential Nomination) numbering, and a single nomination may contain multiple nominees — use 'nominees' to see individual appointees. Partitioned nomination...6 params

Browse presidential nominations to federal positions and track the Senate confirmation process. Nominations use 'PN' (Presidential Nomination) numbering, and a single nomination may contain multiple nominees — use 'nominees' to see individual appointees. Partitioned nomination...

Parameters* required
congressinteger
Congress number.
limitinteger
Results per page (1-250).default: 20
nominationNumberstring
Nomination number (e.g., '1064'). Required for detail operations.
offsetinteger
Pagination offset.default: 0
operationstring
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...
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 (lastSummaryUpdateDate)...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 (lastSummaryUpdateDate)...

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 and retrieve 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 use letter-number codes (e.g., R40097, RL33612, IF...4 params

Browse and retrieve 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 use letter-number codes (e.g., R40097, RL33612, IF...

Parameters* required
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operationstring
Which data to retrieve.one of list · get
reportNumberstring
CRS report ID (e.g., 'R40097'). Required for 'get'.
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...6 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
congressinteger
Congress number.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operationstring
Which data to retrieve.one of list · get · text
reportNumberinteger
Committee report number. Required for get and text operations.
reportTypestring
Report type. Required for get and text operations.one of hrpt · srpt · erpt
congressgov_daily_recordBrowse the daily Congressional Record — floor speeches, debates, and legislative text published each day Congress is in session. Navigation is hierarchical: list → volumes, issues → individual articles. Use 'list' to find recent volumes, 'issues' to see what's in a volume, and...5 params

Browse the daily Congressional Record — floor speeches, debates, and legislative text published each day Congress is in session. Navigation is hierarchical: list → volumes, issues → individual articles. Use 'list' to find recent volumes, 'issues' to see what's in a volume, and...

Parameters* required
issueNumberinteger
Issue number within a volume. Required for 'articles'.
limitinteger
Results per page (1-250).default: 20
offsetinteger
Pagination offset.default: 0
operationstring
Which data to retrieve.one of list · issues · articles
volumeNumberinteger
Volume number. Required for 'issues' and 'articles'.

@cyanheads/congressgov-mcp-server

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

11 Tools • 5 Resources • 2 Prompts

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

Public Hosted Server: https://congressgov.caseyjhand.com/mcp


Overview

U.S. congressional data from the Congress.gov API v3 and the Senate's official vote feed: bills, enacted laws, members, committees, roll call votes, nominations, CRS and committee reports, and the Congressional Record. Browse legislative activity, read bill and report text, and follow the Senate confirmation pipeline from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.

Tools

ToolDescription
congressgov_bill_lookupBrowse and retrieve bills: actions, sponsors, summaries, text, related bills
congressgov_enacted_lawsBrowse enacted public and private laws by congress
congressgov_member_lookupFind members by state, district, or congress, and retrieve their legislative portfolios
congressgov_committee_lookupBrowse committees and their legislation, reports, and nominations
congressgov_roll_votesRetrieve House and Senate roll call votes and each member's position
congressgov_senate_nominationsBrowse presidential nominations and track Senate confirmation
congressgov_bill_summariesBrowse recently updated CRS bill summaries
congressgov_crs_reportsBrowse and retrieve nonpartisan CRS policy reports
congressgov_committee_reportsBrowse and read committee reports accompanying legislation
congressgov_daily_recordBrowse and read the daily Congressional Record
congressgov_search_billsKeyword-search bill titles and CRS summaries via a local full-text mirror (opt-in)

Resources

ResourceDescription
congress://currentCurrent congress number, session dates, chamber info
congress://bill-typesReference table of valid bill type codes
congress://member/{bioguideId}Member profile by bioguide ID
congress://bill/{congress}/{billType}/{billNumber}Bill detail by congress, type, and number
congress://committee/{committeeCode}Committee detail by committee code

Bill, member, and committee data is also reachable through congressgov_bill_lookup, congressgov_member_lookup, and congressgov_committee_lookup (operation get), since many MCP clients are tool-only and never surface resources.

Prompts

PromptDescription
congressgov_bill_analysisStructured framework for analyzing a bill
congressgov_legislative_researchResearch framework for a policy area across Congress

Capability reference

congressgov_bill_lookup tool

  • list browses one congress, narrowed by billType and a fromDateTime/toDateTime range on the record's update date, newest first unless order: 'oldest'; get, actions, amendments, cosponsors, committees, subjects, summaries, text, titles, related, and content need congress + billType + billNumber
  • Copied bill-row keys type and number are accepted as billType and billNumber; bill type codes are case-insensitive, and relatedbills (any case) selects related. Send one name per field: canonical and alias keys together are rejected.
  • content reads the text version at textVersionIndex (0-based in text order, 0 is the most recent) and returns one character window in content.text with totalCharacters, truncated, and nextOffset
  • summaries takes an optional versionCode (00 introduced, 49 public law) and applies the same page budget and row window as congressgov_bill_summaries, steered by characterOffset/characterLimit; a cut row carries textTotalCharacters, textTruncated, and textNextOffset

congressgov_enacted_laws tool

  • list browses one congress, optionally by lawType (pub or priv), the enactment filter congressgov_bill_lookup lacks; get needs lawType + lawNumber, taken from a list row's laws[].number (118-90) or its bare number (90)
  • get returns the origin bill record, with the law citation on its laws[] array

congressgov_member_lookup tool

  • No name search: list filters by stateCode (plus district, 0 for at-large, which requires stateCode), congress, and currentMember
  • get returns the profile for a bioguideId (e.g. P000197); sponsored and cosponsored return that member's legislation

congressgov_committee_lookup tool

  • committeeCode is a chamber prefix (h/s/j), letters, and a 2-digit suffix (e.g. hsju00); get, bills, reports, and the Senate-only nominations infer chamber from the prefix
  • A committee name in committeeCode resolves when exactly one committee matches, and otherwise returns the candidate rows with a notice; list with filter name-matches every committee in scope, past the 250-row page cap, and fuzzy hits carry approximate: true
  • Exact matches require every query token; typo matches require each token to match a name token at the similarity floor. Blank filters browse normally; unrelated tokens return no matches.
  • bills is newest first by default (order), and its rows carry no titles, so chain congressgov_bill_lookup get per row

congressgov_roll_votes tool

  • chamber is house (default, Congress.gov API) or senate (the Senate's LIS feed); every call needs congress + session (1 or 2), and get/members add voteNumber, which resets each session and is specific to one chamber
  • list is newest first unless order: 'oldest'; get returns the question, result, tallies, and party breakdown, and members returns each member's position
  • Senate votes start at the 101st Congress (1989), and Senate rows pair the feed's year-less voteDate with a derived voteDateIso

congressgov_senate_nominations tool

  • list browses one congress; get, actions, committees, hearings, and nominees need a nominationNumber (1000 for PN1000), and nominees also needs an ordinal from the nominees array get returns
  • Multi-part nominations (e.g. PN851) keep their activity on partitioned children (851-1, 851-2, …); an empty sub-resource call on the bare number returns a notice pointing there

congressgov_bill_summaries tool

  • Optional congress and billType (which requires congress); fromDateTime/toDateTime filter on the summary's update time, not the bill's action date, and cover the last 7 days when both are omitted
  • A page stops adding rows at 50,000 serialized characters (at least one row always returns, and pagination.nextOffset resumes); a summary over 25,000 characters arrives windowed with textTotalCharacters, textTruncated, and textNextOffset
  • For one bill's summaries, or to read a windowed summary to the end, use congressgov_bill_lookup summaries

congressgov_crs_reports tool

  • list browses the catalog; get takes a reportNumber such as R40097, RL33612, or IF12345
  • id, reportId, and report_id are accepted as reportNumber. Send only one identifier key; canonical and alias keys together, or multiple aliases, are rejected.
  • get returns authors, topics, summary, and download formats

congressgov_committee_reports tool

  • list browses one congress, optionally by reportType (hrpt House, srpt Senate, erpt Executive); get, text, and content need reportType + reportNumber
  • get returns the citation, title, committees, and associated bill; text lists {type, url} format links, and content reads the report as one character window

congressgov_daily_record tool

  • Navigation runs list (volumes) → issues (by volumeNumber) → articles (by volumeNumber + issueNumber)
  • content reads the article at articleIndex (0-based across the issue) as one character window; Record articles publish Formatted Text and PDF only, so format: 'xml' fails as format_unavailable

congressgov_search_bills tool

  • query keywords (AND-combined) over bill titles and CRS summaries, narrowed by congress, billType, and originChamber; limit 1–100, offset pagination
  • BM25-ranked rows carry billId plus congress/billType/billNumber for congressgov_bill_lookup, and a summaryPreview; policy area and full bill text are not indexed
  • Listed only when CONGRESS_MIRROR_ENABLED=true; until bun run mirror:init builds the index, it returns an empty result with a notice

congress://current resource

  • Current congress number, session dates, and chamber info, the baseline for other queries
  • Cached publicly for 1 hour

congress://bill-types resource

  • The 8 bill type codes (hr, s, hjres, sjres, hconres, sconres, hres, sres) with description, chamber, and an example citation
  • Static, with no upstream call; cached publicly for 24 hours

congress://member/{bioguideId} resource

  • bioguideId is one uppercase letter and 6 digits (e.g. P000197)
  • Returns the member profile: name, state, party, terms, leadership, office, legislation counts

congress://bill/{congress}/{billType}/{billNumber} resource

  • congress and billNumber are positive integers; billType is one of the 8 bill type codes
  • Returns bill detail: sponsor, status, policy area, committees, latest action

congress://committee/{committeeCode} resource

  • committeeCode is h/s/j followed by 3–8 lowercase alphanumeric characters (e.g. hsju00); chamber comes from the first letter
  • Returns committee detail: name, chamber, subcommittees, history, legislation counts

congressgov_bill_analysis prompt

  • Arguments: congress, billType, and billNumber, all required
  • Returns one user message framing a seven-part analysis, from summary to outlook, with the tools to call for each part

congressgov_legislative_research prompt

  • Arguments: topic required; congress optional, defaulting to the current congress
  • With CONGRESS_MIRROR_ENABLED, the plan opens with congressgov_search_bills; without it, the prompt asks for a seed bill, member, committee, or CRS report ID, since no other tool takes a topic

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

Congress.gov-specific:

  • Type-safe client for the Congress.gov REST API v3, plus a client for the Senate's LIS XML feed that backs Senate roll votes
  • The Congress.gov API has no keyword search, so tools browse by congress, type, date range, chamber, state, and district, and address bills by congress + billType + billNumber, members by bioguideId, and committees by system code; list operations page with limit 1–250 (default 20) and offset
  • content on bill text, committee reports, and Record articles reads format text (default) or xml through a characterOffset/characterLimit window (1–100,000 characters, default 25,000), fetched only from www.congress.gov under a 25 MB ceiling and a 30s deadline
  • Optional API key from api.data.gov: documented fallbacks are DEMO_KEY 30 requests/hour and 50/day per IP, registered keys 5,000/hour. Valid upstream hourly quota headers override the fallback; actual quotas vary
  • Opt-in local SQLite FTS5 mirror (CONGRESS_MIRROR_ENABLED) adds keyword search over bill titles and CRS summaries

Agent-friendly output:

  • Every list response carries effectiveQuery and totalCount; a notice fires when nothing matched, and a page past the end says so in the rendered output
  • list rejects entity identities it would discard: bill billNumber, vote voteNumber, nomination nominationNumber, CRS/committee reportNumber, and Record volumeNumber. The incompatible_identity domain error names the detail operation to select or the field to remove; pagination and defaulted selectors remain accepted.
  • Exact character windows: content returns offset, truncated, and nextOffset, so walking a multi-megabyte bill never skips or repeats a character
  • Typed content failures (document_unavailable, format_unavailable, document_fetch_failed, document_too_large, offset_past_end) alongside the shared not_found, rate_limited, invalid_request, upstream_error, and upstream_timeout reasons, each with a recovery hint. Document byte ceilings and exhausted document/summary offsets use domain validation (-32007); malformed arguments remain protocol invalid parameters (-32602)

Getting started

Public Hosted Instance

A public instance is available at https://congressgov.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:

{
  "mcpServers": {
    "congressgov-mcp-server": {
      "type": "streamable-http",
      "url": "https://congressgov.caseyjhand.com/mcp"
    }
  }
}

Self-Hosted / Local

Add the following to your MCP client configuration file.

{
  "mcpServers": {
    "congressgov-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/congressgov-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "CONGRESS_API_KEY": "your-api-key"
      }
    }
  }
}

Or with npx (no Bun required):

{
  "mcpServers": {
    "congressgov-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/congressgov-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "CONGRESS_API_KEY": "your-api-key"
      }
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "congressgov-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "-e", "CONGRESS_API_KEY=your-api-key",
        "ghcr.io/cyanheads/congressgov-mcp-server:latest"
      ]
    }
  }
}

For Streamable HTTP, set the transport and start the server:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 CONGRESS_API_KEY=your-api-key bun run start:http
# Server listens at http://localhost:3010/mcp

Prerequisites

  • Bun v1.4.0 or higher (or Node.js v24+).
  • Optional: a free api.data.gov key uses a documented fallback of 5,000 requests/hour instead of the demo fallback of 30/hour and 50/day per IP. Upstream hourly headers may advertise a different quota.

Installation

  1. Clone the repository:
git clone https://github.com/cyanheads/congressgov-mcp-server.git
  1. Navigate into the directory:
cd congressgov-mcp-server
  1. Install dependencies:
bun install
  1. Configure environment:
cp .env.example .env
# edit .env and set CONGRESS_API_KEY (and the mirror vars, if you want keyword search)

Configuration

VariableDescriptionDefault
CONGRESS_API_KEYAPI key from api.data.gov. Fallbacks: DEMO_KEY 30/hour and 50/day per IP; registered key 5,000/hour. Upstream hourly quota headers take precedence.DEMO_KEY
CONGRESS_API_BASE_URLCongress.gov API base URL.https://api.congress.gov/v3
CONGRESS_MIRROR_ENABLEDEnable the local bill search mirror and the congressgov_search_bills tool.false
CONGRESS_MIRROR_PATHFilesystem path to the SQLite mirror index..mirror/bills.sqlite3
CONGRESS_MIRROR_REFRESH_CRONCron schedule for the in-process mirror refresh (HTTP transport only). Unset means running mirror:refresh yourself.—
CONGRESS_MIRROR_CONGRESSESComma-separated congress numbers to mirror (e.g. 118,119).current congress + 1 prior
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_HTTP_PORTHTTP server port.3010
MCP_SESSION_MODEHTTP session mode: stateless, stateful, or auto; auto resolves to stateful.stateless
MCP_AUTH_MODEAuthentication: none, jwt, or oauth.none
MCP_LOG_LEVELLog level (debug, info, notice, warning, error, etc.).info
LOGS_DIRDirectory for log files (Node.js only).<project-root>/logs
OTEL_ENABLEDEnable OpenTelemetry.false
OTEL_EXPORTER_OTLP_ENDPOINTBase OTLP endpoint for traces and metrics.—
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTExplicit OTLP logs endpoint; the base endpoint does not enable log export.—
LOG_TOOL_FAILURE_PAYLOADSLog failed-call input and output with key-based redaction; secrets inside free-form values are not redacted.false
LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTESMaximum bytes per failed-call input or output record.16384

See .env.example for the full list of optional overrides.

Running the server

Local development

  • Build and run the production version:

    bun run rebuild
    bun run start:http   # or start:stdio
    
  • Build the bill search mirror from this checkout (with CONGRESS_MIRROR_ENABLED=true):

    bun run mirror:init      # full build
    bun run mirror:refresh   # incremental refresh
    bun run mirror:verify    # readiness and integrity check
    

    The mirror CLI requires this checkout or the Docker image's path mapping; an npm installation cannot run these scripts.

  • Run checks and tests:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    

Docker

docker build -t congressgov-mcp-server .
docker run --rm -e CONGRESS_API_KEY=your-api-key -p 3010:3010 congressgov-mcp-server

The Dockerfile defaults to HTTP transport, stateless session mode, and logs to /var/log/congressgov-mcp-server. OpenTelemetry peer dependencies are installed by default; build with --build-arg OTEL_ENABLED=false to omit them. The image carries the mirror scripts, so docker exec <container> bun run mirror:init builds the index in place.

Project structure

DirectoryPurpose
src/index.tscreateApp() entry point: registers tools, resources, and prompts, inits services, and schedules the mirror refresh.
src/config/Server-specific environment variable parsing and validation with Zod.
src/mcp-server/tools/Tool definitions (definitions/*.tool.ts) plus shared input, formatting, and summary-window helpers.
src/mcp-server/resources/definitions/Resource definitions (*.resource.ts).
src/mcp-server/prompts/definitions/Prompt definitions (*.prompt.ts).
src/services/congress-api/Congress.gov API client: auth, pagination, rate limiting.
src/services/congress-documents/Bounded document-text fetch: host allowlist, byte ceiling, character window.
src/services/congress-mirror/Local SQLite FTS5 bill-search mirror: ingest, normalize, schema.
src/services/senate-lis/Senate LIS XML client for Senate roll call votes.
src/utils/HTML/XML character-reference decoding.
scripts/Build, devcheck, and release tooling, plus the mirror:init / mirror:refresh / mirror:verify CLIs.
tests/Unit and integration tests, mirroring the src/ structure.

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for request-scoped logging, ctx.state for tenant-scoped storage
  • All tools are read-only, with readOnlyHint: true and idempotentHint: true annotations
  • Wrap external API calls: validate raw → normalize to a domain type → return the output schema; never fabricate missing fields

Contributing

Issues are welcome. Run checks and tests before submitting:

bun run devcheck
bun run test

License

Apache-2.0 — see LICENSE for details.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →

Configuration

CONGRESS_API_KEY

API key from api.data.gov — optional (falls back to DEMO_KEY: 30 req/hr). Own key: 1000 req/hr. Free signup at api.data.gov.

MCP_LOG_LEVELdefault: info

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

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'.

Categories
Data & Analytics
Registryactive
Package@cyanheads/congressgov-mcp-server
TransportSTDIO, HTTP
UpdatedJun 4, 2026
View on GitHub

More from cyanheads

  • Calculator Mcp Server1
  • Nws Weather Mcp Server1
  • Nhtsa Vehicle Safety Mcp Server1
  • Obsidian Mcp Server582
  • Hn Mcp Server3
  • Git Mcp Server221
  • Secedgar Mcp Server5
  • Pubchem Mcp Server9
  • Cdc Health Mcp Server3
  • Met Museum Mcp Server3
  • Mcp Ts Core145
  • Courtlistener Mcp Server2
  • Open Meteo Mcp Server2
  • Treasury Fiscaldata Mcp Server2
  • Usaspending Mcp Server2
  • Worldbank Mcp Server2
  • Bls Labor Mcp Server1
  • Cpsc Recalls Mcp Server1
  • Devops Status Mcp Server1
  • Earthquake Mcp Server1
  • Eia Energy Mcp Server1
  • Eurostat Mcp Server1
  • Fcc Broadband Mcp Server1
  • Gdelt Mcp Server1

Related Data & Analytics MCP Servers

View all →
cyanheads avatar
Earthquake Mcp Server

cyanheads/earthquake-mcp-server

Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts.
1
cyanheads avatar
Epa Mcp Server

cyanheads/epa-mcp-server

EPA data: ECHO facility compliance, TRI releases, Superfund, drinking water, and AirNow air quality.
1
cyanheads avatar
Eurostat Mcp Server

cyanheads/eurostat-mcp-server

Search and query 8,933 Eurostat datasets — EU economy, demography, trade, and NUTS regional data.
1
cyanheads avatar
Fbi Crime Mcp Server

cyanheads/fbi-crime-mcp-server

FBI Crime Data Explorer — UCR estimates, NIBRS breakdowns, hate crimes, arrests, and agency data.
1
cyanheads avatar
Fcc Broadband Mcp Server

cyanheads/fcc-broadband-mcp-server

FCC broadband availability, coverage analysis, and digital divide data for US geographies.
1
cyanheads avatar
Openfda Mcp Server

cyanheads/openfda-mcp-server

Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP.
1