Skip to main content
Glama
bsilha

fec-mcp

by bsilha

fec-mcp

An MCP (Model Context Protocol) server for federal (and optionally state) campaign-finance rules, regulations, and data covering PACs, party committees, and candidates.

It provides two complementary tool families:

  1. Rulebook search -- full-text search over official campaign-finance PDF guides. Federal (FEC) guides (campaign guides for candidates, party committees, and PACs, plus the contribution-limits chart) are the built-in baseline; state guides can optionally be added per state (see below). This is the authoritative source for compliance questions and dollar limits: results are quoted directly from the PDFs with source + page citations, not hardcoded or model-recalled figures.

  2. Live OpenFEC data -- real-time lookups against the public OpenFEC API for candidates, committees, filings, disbursements, financial totals, elections, and the reporting calendar. This covers federal elections only -- OpenFEC has no state-level data.

Setup

1. Install

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

2. Add the FEC rulebook PDFs

Place the official FEC PDF guides in data/rulebooks/, for example:

  • The FEC's Campaign Guide for Congressional Candidates and Committees

  • The FEC's Campaign Guide for Political Party Committees

  • The FEC's Campaign Guide for Nonconnected Committees (PACs)

  • The current Contribution Limits chart

These are published on fec.gov under its Campaign Guides / Contribution Limits resources; grab the current versions from there (this repo does not bundle download links since they change over time -- verify you have the current cycle's documents).

Any PDF you drop in data/rulebooks/ is picked up automatically -- the server builds a search index (cached in data/rulebooks/.index/) the first time it starts and rebuilds it whenever files are added, removed, or changed.

Optional: add state-level guides. Drop a state's official campaign-finance PDFs into data/rulebooks/states/{state_code}/ (lowercase two-letter USPS code, e.g. data/rulebooks/states/ca/) and they're indexed the same way, tagged with that state as their jurisdiction. This is entirely incremental -- add one state, several, or none; see data/rulebooks/states/README.md for details. OpenFEC's live data tools remain federal-only regardless.

Live OpenFEC lookups work out of the box with the shared DEMO_KEY, which is heavily rate-limited. For real use, get a free key at https://api.data.gov/signup/ and set it:

export FEC_API_KEY=your_key_here

4. Configure your MCP client

For Claude Code / Claude Desktop, add to your MCP config:

{
  "mcpServers": {
    "fec": {
      "command": "/absolute/path/to/FEC_MCP/.venv/bin/fec-mcp",
      "env": {
        "FEC_API_KEY": "your_key_here"
      }
    }
  }
}

Or run directly for local testing:

fec-mcp

Related MCP server: political-finance-mcp-server

Tools

Rulebook search (grounded in the PDFs you add):

Tool

Purpose

list_rulebook_jurisdictions

List which jurisdictions have PDFs loaded ("federal", state codes)

list_rulebook_sources

List loaded PDFs, page counts, and jurisdiction (optionally filtered)

search_rulebooks

Full-text search across loaded PDFs (optionally filtered by jurisdiction)

get_rulebook_page

Read the full text of one page

Live OpenFEC data (federal only):

Tool

Purpose

search_candidates / get_candidate / get_candidate_totals

Candidate lookup and financials

search_committees / get_committee / get_committee_filings / get_committee_totals

PAC/party/campaign committee lookup, filings, financials

search_disbursements

Itemized Schedule B disbursements (who a committee paid, and how much)

search_filings

Cross-committee filing search

search_elections

Election search by state/office/cycle

get_reporting_calendar

FEC reporting and election deadline dates

Notes on scope

  • No hardcoded contribution limits or rule text. OpenFEC's live API has no endpoint for contribution limits or regulation text, and those figures change (limits are inflation-adjusted every two-year cycle) -- baking them into code risks going stale silently. Instead, this server searches the FEC's own PDFs you provide, so answers are always sourced to a specific document and page.

  • Not legal advice. Tool output should be treated as a research aid and cited back to its source (PDF page or OpenFEC record), not relied on as a substitute for consulting the FEC or legal counsel.

  • State coverage is opt-in and incomplete by default. Out of the box, only federal (FEC) rulebooks are loaded. A question about a specific state's rules will correctly come back empty/unanswerable unless that state's PDFs have been added under data/rulebooks/states/{state_code}/ -- the server won't substitute federal rules for state rules. Live OpenFEC data (candidates, committees, filings, disbursements) is federal only; there is no state-level equivalent here.

Demo

demo/ has a one-page Streamlit chat app over these same tools -- useful for showing the project to someone without walking them through MCP client setup. See demo/README.md.

Development

pip install -e ".[dev]"
pytest
F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • OpenFEC MCP — Federal Election Commission campaign finance data

  • Access FEC campaign finance data. Query data about candidates, money trails, and election filings.

  • MCP server for nonprofit financials via ProPublica — IRS Form 990 data for 1.8M+ nonprofits.

View all MCP Connectors

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/bsilha/FEC_MCP'

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