Install
$ agentstack add mcp-bsmi021-mcp-congress-gov-server ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Congress.gov API MCP Server
This is a Model Context Protocol (MCP) server designed to provide access to the official Congress.gov API (v3) using a hybrid approach:
- MCP Resources: For direct lookups of core legislative entities (Bills, Members, Congresses, Committees, general Info) using standardized URIs.
- MCP Tools: For more complex operations like searching across collections (
congress_search) and retrieving related data lists (congress_getSubResource).
This server acts as a bridge, allowing MCP clients (like AI assistants or development tools) to easily query and utilize U.S. legislative data.
Project Structure
/src: Contains all source code./config: Configuration management (ConfigurationManager.ts)./services: Core logic for interacting with Congress.gov API (CongressApiService.ts,RateLimitService.ts)./tools: MCP tool definitions (search/,subresource/,index.ts)./types: TypeScript interfaces and Zod schemas./utils: Shared utility functions (logging, errors, etc.).resourceHandlers.ts: Logic for handling core entity resource requests.createServer.ts: Server instance creation, resource and tool registration.server.ts: Main application entry point./dist: Compiled JavaScript output (generated bynpm run build)./docs: Project documentation (PRD, Feature Spec, RFCs).package.json: Project metadata and dependencies.tsconfig.json: TypeScript compiler options..eslintrc.json,.prettierrc.json: Linting and formatting rules..env: (Not committed) For storingCONGRESS_GOV_API_KEY.
Getting Started
- Install Dependencies:
``bash npm install ``
- Set API Key: Create a
.envfile in the project root and add your Congress.gov API key:
`` CONGRESS_GOV_API_KEY=YOUR_API_KEY_HERE ``
(Get a key from https://api.data.gov/signup/)
- Build the Server:
``bash npm run build ``
- Run the Server:
``bash npm start ``
(This runs node dist/server.js)
Alternatively, run in development mode using npm run dev (uses ts-node and nodemon).
Usage with MCP Client
Connect your MCP client to the running server (e.g., via stdio if running locally).
Accessing Resources
Use the access_mcp_resource command/method with the appropriate URI.
Examples:
- Get Bill H.R. 3076 (117th Congress):
```
congress-server congress-gov://bill/117/hr/3076
```
- Get Member Pelosi:
```
congress-server congress-gov://member/P000197
```
- Get Info about 118th Congress:
```
congress-server congress-gov://congress/118
```
- Get API Overview:
```
congress-server congress-gov://info/overview
```
Using Tools
Use the use_mcp_tool command/method.
!!! CRITICAL TOOL WORKFLOW: Finding Entities & Getting Related Data !!!
Many common tasks require a mandatory two-step process using both tools:
- STEP 1: Find the Entity ID using
congress_search
- Purpose: Locate the specific bill, member, committee, etc., you need and extract its unique identifier(s) (e.g.,
memberId, or thecongress,billType,billNumberfor a bill URI). - Tool:
congress_search - Example: Find member "John Kennedy" (might return multiple results requiring selection):
```xml
congress-server congress_search
{ "collection": "member", "query": "John Kennedy" }
```
- Output: Look for the
memberId(e.g.,K000393) or other necessary identifiers in the results. - !!! WARNING !!! Searching might return multiple results. You MUST identify the correct entity and use its specific ID for the next step.
- !!! API LIMITATION !!! Filtering general searches by
congressusing thefiltersparameter is NOT SUPPORTED by the underlying API (e.g., for/v3/billor/v3/member) and will be ignored. Congress-specific filtering usually requires using specific API paths (e.g.,/v3/bill/117), which this tool does not construct.
- STEP 2: Get Related Data using
congress_getSubResource
- Purpose: Use the identifier(s) found in Step 1 to construct the
parentUriand fetch related details (actions, sponsors, text, etc.). - Tool:
congress_getSubResource - Prerequisite: You MUST have the correct
parentUri(e.g.,congress-gov://member/K000393) from Step 1. - Example: Get legislation sponsored by member
K000393:
```xml
congress-server congress_getSubResource
{ "parentUri": "congress-gov://member/K000393", "subResource": "sponsored-legislation", "limit": 5 }
```
- !!! GUARANTEED ERROR WARNING !!! You MUST use a
subResourcestring that is STRICTLY VALID for theparentUritype (e.g.,'sponsored-legislation'for members,'actions'for bills). Providing an invalid combination WILL cause an error. Check the tool description for valid combinations.
Following this two-step process is ESSENTIAL for reliably getting related information.
Tool Examples:
- Search for Bills containing "climate" (limit 5):
```xml
congress-server congress_search
{ "collection": "bill", "query": "climate", "limit": 5 }
```
- List Members (No Congress Filter Possible Here):
- Note: As mentioned above, filtering by
congressdirectly incongress_searchis not supported by the API for the 'member' collection.
```xml
congress-server congress_search
{ "collection": "member", "limit": 10 // Add "query" or other filters like "type" if needed }
```
- Get Actions for Bill H.R. 3076 (117th) (Requires URI from Search or Known Info):
```xml
congress-server congress_getSubResource
{ "parentUri": "congress-gov://bill/117/hr/3076", "subResource": "actions", "limit": 10 }
```
- Get Legislation Sponsored by Member P000197:
```xml
congress-server congress_getSubResource
{ "parentUri": "congress-gov://member/P000197", "subResource": "sponsored-legislation", "limit": 5 }
```
Linting and Formatting
- Lint:
npm run lint - Format:
npm run format
Code will be automatically linted and formatted on commit via Husky and lint-staged.
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: bsmi021
- Source: bsmi021/mcp-congressgov_server
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.