Skip to content

io.github.cyanheads/openfec-mcp-server

by cyanheads · remote · local (npm) · no sign-in to list tools · v0.9.1 · published by GitHub user cyanheads

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

Read only

12 tools: 12 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http openfec https://openfec.caseyjhand.com/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

12 tools

Only reads 12Claude Code: allow
  • openfec_get_committee_totalsGet pre-aggregated committee financial totals — receipts, disbursements, cash on hand, debts, and the itemized/unitemized breakdown — without paginating Schedule A.No findings

    Why it is in this group

    • The name "openfec_get_committee_totals" says "get": a word for reading.
    Description, as the server wrote it
    Get pre-aggregated committee financial totals — receipts, disbursements, cash on hand, debts, and the itemized/unitemized breakdown — without paginating Schedule A. Use mode "single" (the default) with a committee_id for one committee's totals, one row per two-year cycle it has filed. Use mode "by_entity_type" to rank or screen every committee of one type (presidential, pac, party, pac-party, house-senate, ie-only) by state, designation, or a receipts/disbursements threshold.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_lookup_calendarLook up FEC calendar events, filing deadlines, and election dates.No findings

    Why it is in this group

    • The name "openfec_lookup_calendar" says "lookup": a word for reading.
    Description, as the server wrote it
    Look up FEC calendar events, filing deadlines, and election dates. Use to find upcoming filing windows for a committee, locate when a federal election occurred, or scope FEC events by date range and category.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_lookup_electionsLook up federal election races and candidate financial summaries.No findings

    Why it is in this group

    • The name "openfec_lookup_elections" says "lookup": a word for reading.
    Description, as the server wrote it
    Look up federal election races and candidate financial summaries. Find who's running in a race with fundraising totals, or get an aggregate race summary.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_search_candidatesFind federal candidates by name, state, office, party, or cycle.No findings

    Why it is in this group

    • The name "openfec_search_candidates" says "search": a word for reading.
    Description, as the server wrote it
    Find federal candidates by name, state, office, party, or cycle. Retrieve a specific candidate by FEC ID with financial totals. Candidate IDs start with H (House), S (Senate), or P (President) followed by exactly eight letters or digits.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_search_committeesFind political committees (campaign, PAC, Super PAC, party) by name, type, candidate affiliation, or state.No findings

    Why it is in this group

    • The name "openfec_search_committees" says "search": a word for reading.
    Description, as the server wrote it
    Find political committees (campaign, PAC, Super PAC, party) by name, type, candidate affiliation, or state. Retrieve a specific committee by FEC ID. Committee IDs start with C followed by exactly eight digits (e.g., C00358796).

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_search_contributionsSearch itemized individual contributions (Schedule A) or get aggregate breakdowns by size, state, employer, or occupation.No findings

    Why it is in this group

    • The name "openfec_search_contributions" says "search": a word for reading.
    Description, as the server wrote it
    Search itemized individual contributions (Schedule A) or get aggregate breakdowns by size, state, employer, or occupation. Use to answer "who is funding this committee?" Itemized mode requires a committee_id. Aggregate by_size/by_state can use candidate_id instead.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_search_coordinated_expendituresSearch coordinated party expenditures (Schedule F) — spending a party committee makes on behalf of a candidate it supports, in coordination with that campaign.No findings

    Why it is in this group

    • The name "openfec_search_coordinated_expenditures" says "search": a word for reading.
    Description, as the server wrote it
    Search coordinated party expenditures (Schedule F) — spending a party committee makes on behalf of a candidate it supports, in coordination with that campaign. Distinct from independent expenditures (openfec_search_expenditures), which cannot be coordinated with the candidate, and from direct contributions: coordinated expenditures carry their own statutory limits and can run into tens of millions per party in a presidential cycle. Scope with a spending committee_id, a benefiting candidate_id, or a cycle; unscoped queries span all years.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_search_disbursementsSearch itemized committee spending (Schedule B) or get aggregate breakdowns by purpose or recipient.No findings

    Why it is in this group

    • The name "openfec_search_disbursements" says "search": a word for reading.
    Description, as the server wrote it
    Search itemized committee spending (Schedule B) or get aggregate breakdowns by purpose or recipient. All modes require a committee_id. Use to answer "what is this committee spending money on?" or "who is receiving payments from this committee?"

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_search_expendituresSearch independent expenditures (Schedule E) — outside spending supporting or opposing federal candidates.No findings

    Why it is in this group

    • The name "openfec_search_expenditures" says "search": a word for reading.
    Description, as the server wrote it
    Search independent expenditures (Schedule E) — outside spending supporting or opposing federal candidates. Covers Super PACs, party committees, and other groups. Use itemized mode for individual expenditure records, or by_candidate for aggregated totals per candidate; by_candidate needs either a candidate_id or a full race scope (candidate_office alone for President, plus candidate_office_state for Senate, plus candidate_office_district as well for House).

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • openfec_search_filingsSearch FEC filings and reports by committee, candidate, form type, or date range.No findings

    Why it is in this group

    • The name "openfec_search_filings" says "search": a word for reading.
    Description, as the server wrote it
    Search FEC filings and reports by committee, candidate, form type, or date range. Covers financial reports (F3/F3P/F3X), statements of candidacy (F2), organizational filings (F1), 24-hour IE notices (F24), and amendments.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.9.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http openfec https://openfec.caseyjhand.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__openfec__openfec_search_candidates",
      "mcp__openfec__openfec_search_committees",
      "mcp__openfec__openfec_get_committee_totals",
      "mcp__openfec__openfec_search_contributions",
      "mcp__openfec__openfec_search_disbursements",
      "mcp__openfec__openfec_search_expenditures",
      "mcp__openfec__openfec_search_coordinated_expenditures",
      "mcp__openfec__openfec_search_filings",
      "mcp__openfec__openfec_lookup_elections",
      "mcp__openfec__openfec_search_legal",
      "mcp__openfec__openfec_get_legal_document",
      "mcp__openfec__openfec_lookup_calendar"
    ],
    "ask": [],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as openfec. Review it before you use it.