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.
12 tools: 12 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads12Claude Code: allow: see these tools
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/mcpTools
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_get_legal_documentFetch one FEC legal document — advisory opinion, MUR, ADR, administrative fine, or statute — by its type and number.No findings
Why it is in this group
- The name "openfec_get_legal_document" says "get": a word for reading.
Description, as the server wrote it Fetch one FEC legal document — advisory opinion, MUR, ADR, administrative fine, or statute — by its type and number. openfec_search_legal replaces each result's documents and dispositions arrays with a count and category summary and cuts every commission vote down to a date and a 200-character action; this returns the record as upstream sends it, whole when it fits the 100,000-byte response budget. A larger record returns its scalar fields and the arrays that fit, with the rest listed in withheld; page through one by re-calling with array and offset. doc_type is the plural form of the document_type discriminator on a search result (advisory_opinion becomes advisory_opinions, mur becomes murs, adr becomes adrs, admin_fine becomes admin_fines, statute becomes statutes), and no is that result's no field — every document type carries it, and advisory opinions repeat it as ao_no.
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
openfec_search_legalSearch FEC legal documents: advisory opinions, enforcement cases (MURs), alternative dispute resolutions, administrative fines, and statutes.No findings
Why it is in this group
- The name "openfec_search_legal" says "search": a word for reading.
Description, as the server wrote it Search FEC legal documents: advisory opinions, enforcement cases (MURs), alternative dispute resolutions, administrative fines, and statutes. The citation, penalty, respondent, ao_number, and case_number filters each apply to only some document types; with type omitted, the search returns only the types every one of them applies to. Each response is held to 100,000 bytes: when a page would exceed it, whole results are held back and nextFromHit gives the from_hit that continues each document type.
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.
