Skip to main content
Glama
cbwinslow

OpenDiscourse MCP

OpenDiscourse MCP

Model Context Protocol (MCP) servers for accessing bulk data from govinfo.gov and congress.gov APIs with comprehensive AI-powered code review and data ingestion capabilities.

Overview

This project provides MCP servers that enable AI assistants to access comprehensive legislative and governmental data from:

  • GovInfo API: Congressional documents, Federal Register, Code of Federal Regulations, and more

  • Congress.gov API: Bills, members, committees, nominations, and legislative activities

  • Bulk Data Ingestion: Automated downloading and processing of govinfo.gov bulk data

  • AI Code Review: Multi-agent AI crews for comprehensive code analysis

Features

GovInfo Server Tools

  • govinfo_list_collections - List collections updated since a specific date

  • govinfo_get_package - Get detailed package information

  • govinfo_list_granules - List granules within a package

  • govinfo_get_granule - Get detailed granule information

  • govinfo_download_content - Download content (PDF, XML, HTML)

Congress.gov Server Tools

  • congress_get_bill - Get detailed bill information

  • congress_search_bills - Search for bills by text query

  • congress_get_bill_actions - Get legislative actions for a bill

  • congress_get_bill_text - Get full text of a bill

  • congress_search_members - Search for members of Congress

  • congress_get_member - Get detailed member information

  • congress_get_committee_meetings - Get committee meetings

  • congress_get_nominations - Get presidential nominations

Bulk Data Ingestion

  • Comprehensive Download: Automated ingestion of all govinfo.gov bulk data

  • Congress Coverage: 113th to 123rd Congress (2013-2024)

  • Document Types: BILLS, BILLSTATUS, PLAW, STATUTE, FR, CREC

  • Parallel Processing: 50 workers for high-performance downloads

  • XML Validation: Schema-based validation for data integrity

  • Skip-on-Existing: Resumable downloads with intelligent file skipping

  • Progress Monitoring: Real-time progress tracking and comprehensive reporting

AI Code Review Suite

  • Security Review: Vulnerability assessment and security analysis

  • Performance Review: Bottleneck identification and optimization suggestions

  • Quality Review: Code style, testing, architecture, and accessibility analysis

  • Documentation Review: Documentation quality and completeness assessment

  • Multi-Agent: Specialized AI agents for different review aspects

  • Observability: Langfuse integration for monitoring and tracing

Installation

Prerequisites

  1. Node.js and npm (for MCP server)

  2. Python 3.10+ (for setup scripts)

  3. PostgreSQL (for database storage)

  4. Bitwarden CLI (for API key management)

Quick Start

# Clone the repository
git clone https://github.com/cbwinslow/opendiscourse_mcp.git
cd opendiscourse_mcp

# Install Node.js dependencies
npm install

# Install Bitwarden CLI
npm install -g @bitwarden/cli

# Set up database
./scripts/setup_database.sh

# Set up API keys with Bitwarden
python3 scripts/setup_bitwarden.py

# Start MCP server
npm start

Detailed Setup

1. Python Environment

# Verify Python version (requires 3.10+)
python --version

# Using uv (recommended)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Or using pip
python3.10 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

2. Database Setup

# Automated database setup
./scripts/setup_database.sh

# Manual setup (if script fails)
# Start PostgreSQL
brew services start postgresql  # macOS
sudo systemctl start postgresql  # Linux

# Create database and user
sudo -u postgres createdb opendiscourse
sudo -u postgres createuser -s opendiscourse
sudo -u postgres psql -c "ALTER USER opendiscourse PASSWORD 'opendiscourse123';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE opendiscourse TO opendiscourse;"

3. Bitwarden Setup

# Install Bitwarden CLI
npm install -g @bitwarden/cli

# Test Bitwarden integration
python3 scripts/test_bitwarden.py

# Add API keys to Bitwarden:
# - GovInfo API Key
# - Congress.gov API Key

4. API Key Configuration

# Set environment variables (optional)
export BITWARDEN_EMAIL="your-email@example.com"
export BITWARDEN_PASSWORD="your-master-password"

# Run automated setup
python3 scripts/setup_bitwarden.py

5. MCP Server Deployment

# Install dependencies
uv sync

# Start server
npm start

# Development mode
npm run dev

Bitwarden Item Setup:

Create these items in your Bitwarden vault:

  • GovInfo API Key

    • Name: GovInfo API Key

    • Custom Field: api_key with your GovInfo API key

  • Congress.gov API Key

    • Name: Congress.gov API Key

    • Custom Field: api_key with your Congress.gov API key

Configuration

Required API Keys

  1. GovInfo API Key

  2. Congress.gov API Key

Optional Configuration

  • MCP_LOG_LEVEL - Logging level (default: info)

  • GOVINFO_RATE_LIMIT - GovInfo rate limit requests/hour (default: 1000)

  • CONGRESS_RATE_LIMIT - Congress.gov rate limit requests/hour (default: 4000)

Usage

Bulk Data Ingestion

The project includes comprehensive bulk data ingestion capabilities for govinfo.gov:

# Run comprehensive ingestion for all available data
python3 scripts/run_comprehensive_ingestion.py

# Run specific congress and document type
python3 -m scripts.ingest_all_govinfo --congress 118 --doc-types BILLS --workers 50

# Run with validation enabled
python3 -m scripts.ingest_all_govinfo --congress 118 --doc-types STATUTE --validate-xml --workers 50

Ingestion Features:

  • Congress Coverage: 113th-123rd Congress (2013-2024)

  • Document Types: BILLS, BILLSTATUS, PLAW, STATUTE, FR, CREC

  • Parallel Downloads: 50 concurrent workers

  • XML Validation: Schema-based validation with XSD files

  • Resume Capability: Skip-on-existing functionality

  • Progress Tracking: Real-time monitoring and JSON results

Configuration:

# Use enums for type-safe configuration
from scripts.ingestion.enums import DocumentType, CongressSession

# Available document types
DocumentType.BILLS.value  # "BILLS"
DocumentType.STATUTE.value  # "STATUTE"

# Available congress sessions
CongressSession.get_available_sessions()  # [113, 114, ..., 123]

AI Code Review

The project includes specialized AI crews for comprehensive code review:

# Run all review types (via GitHub Actions)
# Or manually trigger specific reviews:

# Security review
python3 scripts/security_review_crew.py

# Performance review
python3 scripts/performance_review_crew.py

# Quality review (style, testing, architecture, dependencies, accessibility)
python3 scripts/quality_review_crew.py

# Documentation review
python3 scripts/documentation_review_crew.py

# Original comprehensive review
python3 scripts/code_review_crew.py

AI Review Features:

  • Security Analysis: Vulnerability assessment, security best practices

  • Performance Optimization: Bottleneck identification, efficiency improvements

  • Quality Assessment: Code style, testing coverage, architecture review

  • Documentation Review: API docs, README, inline comments

  • Multi-Agent: Specialized AI agents for different review aspects

  • Observability: Langfuse integration for monitoring and tracing

GitHub Actions Integration:

  • Automatic PR reviews

  • Configurable review types (security, performance, quality, documentation)

  • Python 3.10 enforcement

  • Comprehensive reporting

As MCP Server

# Start MCP server
npm start

# Or in development mode with auto-restart
npm run dev

Integration with Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "opendiscourse": {
      "command": "node",
      "args": ["/path/to/opendiscourse_mcp/src/index.js"],
      "env": {
        "GOVINFO_API_KEY": "your_govinfo_key",
        "CONGRESS_API_KEY": "your_congress_key"
      }
    }
  }
}

API Key Management

The project includes automated API key management through Bitwarden:

# Test Bitwarden integration
python3 scripts/test_bitwarden.py

# Set up API keys from Bitwarden
python3 scripts/setup_bitwarden.py

Features:

  • πŸ” Automatic API key discovery from Bitwarden vault

  • πŸ”“ Secure vault unlocking

  • πŸ“ Environment file updates

  • πŸ—„οΈ Database storage with encryption

  • πŸ” Security masking in console output

Integration with Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "opendiscourse": {
      "command": "node",
      "args": ["/path/to/opendiscourse_mcp/src/index.js"],
      "env": {
        "GOVINFO_API_KEY": "your_govinfo_key",
        "CONGRESS_API_KEY": "your_congress_key"
      }
    }
  }
}

API Coverage

GovInfo Collections

  • BILLS - Congressional bills (all versions)

  • CREC - Congressional Record

  • FR - Federal Register

  • CFR - Code of Federal Regulations

  • USCOURTS - U.S. Courts opinions

  • CHRG - Committee reports and prints

Congress.gov Data

  • Bills and amendments (93rd Congress to present)

  • Member information and voting records

  • Committee data and meetings

  • Presidential nominations

  • Roll call votes

  • Legislative text and summaries

Rate Limits

  • GovInfo API: Follows api.data.gov limits (configurable, default 1000/hour)

  • Congress.gov API: 5,000 requests/hour (configurable, default 4000/hour)

Both clients implement automatic rate limiting with delays between requests.

Development

# Run tests
npm test

# Lint code
npm run lint

# Full build process
npm run build

Documentation

Comprehensive documentation is available in the /docs folder:

  • docs/README.md - Complete reference guide

  • docs/govinfo-api-summary.md - GovInfo API quick reference

  • docs/congress-api-summary.md - Congress.gov API quick reference

  • Downloaded official API repositories and samples

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Run npm run build

  6. Submit a pull request

License

MIT License - see LICENSE file for details.

Support

-
security - not tested
F
license - not found
-
quality - not tested

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/cbwinslow/opendiscourse_mcp'

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