Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Openfec MCP Server

by cyanheadsversion 0.10.0i★ –iComputer or cloud
Registry nameio.github.cyanheads/openfec-mcp-server

Install

Overview

Description from the maker (original English)

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

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 3 of 3 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • Can do 12 things (tools) openfec_search_candidates, openfec_search_committees, openfec_get_committee_totals, openfec_search_contributions …
  • You fill in yourself: FEC_API_KEY, MCP_LOG_LEVEL

You need

  • Runs in the cloudNothing to install; it connects over the internet
  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://openfec.caseyjhand.com/mcp

Or run it on your computer

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "openfec": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openfec-mcp-server"
      ],
      "env": {
        "FEC_API_KEY": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Run this in your terminal

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

Or run it on your computer

claude mcp add openfec --env FEC_API_KEY=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/openfec-mcp-server

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "openfec": {
      "url": "https://openfec.caseyjhand.com/mcp"
    }
  }
}

Or run it on your computer

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "openfec": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openfec-mcp-server"
      ],
      "env": {
        "FEC_API_KEY": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "openfec": {
      "type": "http",
      "url": "https://openfec.caseyjhand.com/mcp"
    }
  }
}

Or run it on your computer

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "openfec": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openfec-mcp-server"
      ],
      "env": {
        "FEC_API_KEY": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://openfec.caseyjhand.com/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • FEC_API_KEY env
    OpenFEC API key — optional (DEMO_KEY: 30 req/hr). Own key: 1000 req/hr. Free at api.data.gov.
  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Tool names and descriptions exactly as the server reported them on Nov 7, 2026. The maker wrote them, not us; we show them as plain text.

  • openfec_search_candidates

    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.

  • openfec_search_committees

    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).

  • openfec_get_committee_totals

    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 f

  • openfec_search_contributions

    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.

  • openfec_search_disbursements

    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?"

  • openfec_search_expenditures

    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_candidat

  • openfec_search_coordinated_expenditures

    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, an

  • openfec_search_filings

    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.

  • openfec_lookup_elections

    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.

  • openfec_search_legal

    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 searc

  • openfec_get_legal_document

    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

  • openfec_lookup_calendar

    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.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account cyanheads, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • ✓ Pass

    Endpoint responds

    Responded in 494 ms (HTTP 200)

  • – Not applicable

    Sign-in with OAuth

    No sign-in needed

  • ✓ Pass

    No hidden instructions in tool descriptions

    Read 12 tool descriptions and found no hidden instructions to the AI

Compared with others in Accounting, finance & taxi

  • More stars than 0% of the other 1734 servers in this category
  • Published to the registry more recently than 79% of the other 1734 servers in this category
  • Basic checks equal to or better than 100% of the other 1734 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Openfec MCP Server safe?

It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.10.0) reached the registry 10 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Finance Toolkit, SolidInvoice, Korea Tax Calculator

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Finance Toolkit

by JerBouma

500+ transparent financial methods calculated from raw statements, not third-party endpoints.

Computer or cloud★ 5,496MITUpdated today
Install

SolidInvoice

by SolidInvoice

Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.

Runs in the cloud★ 981MITUpdated 8 days ago
Install

Korean tax calculation and tax-audit judgment MCP: 96 tools with statutory citations.

Runs on your computer★ 97MITUpdated yesterday
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

@cyanheads/openfec-mcp-server Access FEC campaign finance data on candidates, money trails, and election filings via MCP. STDIO or Streamable HTTP. 12 Tools • 5 FEC Resource Templates • 2 Prompts • 1 Skill

Public Hosted Server: https://openfec.caseyjhand.com/mcp


Overview

US federal campaign finance data from the FEC's OpenFEC API. Search candidates, committees, and filings, trace contributions (Schedule A), disbursements (Schedule B), and independent and coordinated party expenditures (Schedules E/F), and look up election races, legal documents, and filing deadlines.

Tools
ToolDescription
openfec_search_candidatesFind federal candidates by name, state, office, party, or cycle; fetch one by FEC ID with financial totals
openfec_search_committeesFind political committees by name, type, candidate affiliation, or state; fetch one by FEC ID
openfec_get_committee_totalsPre-aggregated financial totals for one committee by cycle, or ranked across committees of one entity type
openfec_search_contributionsItemized contributions (Schedule A), or aggregates by size, state, employer, or occupation
openfec_search_disbursementsItemized committee spending (Schedule B), or aggregates by purpose or recipient
openfec_search_expendituresIndependent expenditures (Schedule E) supporting or opposing candidates, itemized or totaled per candidate
openfec_search_coordinated_expendituresCoordinated party expenditures (Schedule F) made on behalf of a candidate
openfec_search_filingsFEC filings and reports by committee, candidate, form type, or date range
openfec_lookup_electionsCandidates in a federal race with their fundraising totals, or an aggregate race summary
openfec_search_legalAdvisory opinions, enforcement cases, alternative dispute resolutions, administrative fines, and statutes
openfec_get_legal_documentOne legal document in full, including the arrays search trims away, paged by entry when too large for one response
openfec_lookup_calendarFEC calendar events, filing deadlines, and election dates
Resources
ResourceDescription
openfec://candidate/{candidate_id}Candidate profile with financial totals and principal committees
openfec://committee/{committee_id}Committee profile with type, designation, and financial summary
openfec://election/{cycle}/{office}Presidential race with candidate financial totals
openfec://election/{cycle}/{office}/{state}Senate or at-large House race with candidate financial totals
openfec://election/{cycle}/{office}/{state}/{district}House district race with candidate financial totals

The same data is reachable through openfec_search_candidates, openfec_search_committees, and openfec_lookup_elections for tool-only clients.

The openfec-guide skill covers campaign-finance investigations, historical committee attribution, and coverage checks. MCP clients can read it at skill://openfec-guide/SKILL.md.

Prompts
PromptDescription
openfec_money_trailTrace the money around a candidate: direct fundraising, PAC support, independent expenditures, and party spending
openfec_campaign_analysisStructured analysis of a candidate's financial position

Capability reference

openfec_search_candidates tool
  • query name search filtered by state, district, office, party, cycle, election_year, incumbent_challenge, candidate_status, and has_raised_funds, up to 100 per page; or a candidate_id lookup (H/S/P + eight letters or digits) returning one full record
  • include_totals (default on for an ID lookup) adds per-cycle totals rows and caps a search page at 35 candidates when cycle or election_year scopes the totals, 5 when they span every cycle; candidates the totals fetch didn't reach are listed in missing_totals
  • Typed errors: candidate_not_found, inputs_not_applicable_to_id_lookup

openfec_search_committees tool
  • query name search filtered by candidate_id, state, party, committee_type, designation, cycle, and treasurer_name, up to 100 per page; or a committee_id lookup (C + eight digits)
  • Typed errors: committee_not_found, inputs_not_applicable_to_id_lookup

openfec_get_committee_totals tool
  • mode: "single" (default) takes a committee_id and returns one row per two-year cycle; mode: "by_entity_type" ranks every committee of one entity_type (presidential, pac, party, pac-party, house-senate, ie-only), filterable by state, type, designation, organization type, and receipts/disbursements bounds; up to 100 per page
  • Rows carry receipts, disbursements, cash on hand, debts, and the itemized/unitemized split; the output mode says whether rows are cycles or committees
  • Typed errors: committee_id_required_for_single_mode, entity_type_required_for_group_mode, committee_totals_not_found

openfec_search_contributions tool
  • itemized (default) needs a committee_id and filters by contributor name, employer, occupation, city, state, ZIP, date and amount ranges, and is_individual, 30 rows per page; by_size / by_state take a committee_id or candidate_id, by_employer / by_occupation a committee_id
  • The output mode becomes by_size_candidate or by_state_candidate when scoped by candidate, a different row shape; itemized responses carry next_cursor, count, and count_is_approximate
  • Typed errors: itemized_requires_committee_id, aggregate_requires_committee_id

openfec_search_disbursements tool
  • committee_id required in every mode: itemized (default; recipient name, state, city, and committee ID, description, purpose category, date and amount ranges, 30 rows per page), by_purpose, by_recipient, by_recipient_id
  • Itemized responses carry next_cursor, count, and count_is_approximate; aggregate modes page by number

openfec_search_expenditures tool
  • itemized (default) filters by committee, candidate, support_oppose, payee, targeted office/state/district, party, is_notice (24/48-hour notices), dates, and amounts; most_recent defaults to true; 60 rows per page when scoped by committee_id, 30 otherwise
  • by_candidate totals need a candidate_id or a full race scope (candidate_office=P alone, S plus candidate_office_state, H plus state and candidate_office_district), or fail as by_candidate_requires_scope

openfec_search_coordinated_expenditures tool
  • Scope by spending party committee_id, benefiting candidate_id, cycle, payee, dates, and amounts; unscoped queries span all years
  • Page-based, 80 rows per page when scoped by committee_id and 25 otherwise; rows carry subordinate_committee_id, the committee the spending is attributed to

openfec_search_filings tool
  • Filters: committee_id, candidate_id, filer_name, form_type (F3, F3P, F3X, F24, F1, F2, F5), report_type, report_year, cycle, is_amended, and receipt date range; 65 rows per page
  • most_recent defaults to true, hiding superseded amendments; rows carry form and report type, financial totals, and pdf_url

openfec_lookup_elections tool
  • office and an even cycle are required; Senate also needs state and House state plus district, unless a zip scopes a search
  • mode: "search" (default) returns the race's candidates with totals and candidate_pcc_id / candidate_pcc_name, that cycle's principal campaign committee; mode: "summary" returns one aggregate race row
  • Typed errors: cycle_must_be_even, missing_state_for_office, missing_district_for_house, summary_does_not_support_zip

openfec_search_legal tool
  • type (advisory_opinions, murs, adrs, admin_fines, statutes), query, ao_number, case_number, respondent, citations, penalty bounds, or dates; at least one is required (missing_filter), and a date bound needs type plus a date_kind that type records
  • Citations, penalty bounds, respondent, ao_number, and case_number each filter only some types; one sent with a type it doesn't filter fails as filter_not_valid_for_type, and with type omitted the search returns only the types they all apply to, with a total over those types. On MURs and ADRs a citation can't be combined with case_number, respondent, a penalty bound, or an open/close date bound, which upstream would ignore; the two citation fields together match either one
  • Citations take the form upstream parses — 52 U.S.C. 30104 or 11 CFR 110.1 (USC, C.F.R., §, and suffixes like 30104(g) are fine); a bare 30106 or 110.1 fails as invalid_citation instead of silently returning unfiltered results. One citation per field: upstream applies only the first citation in a value, so 52 U.S.C. 30104, 52 U.S.C. 30118 fails the same way
  • Offset paging via from_hit / hits_returned, up to 200 per type within a 10,000-result window
  • Results are trimmed: documents becomes document_count and document_categories, dispositions becomes disposition_count and disposition_categories, highlights stop at 3 with their match markup removed and render one per line, and commission_votes shrink to a date and a 200-character action; openfec_get_legal_document returns the full record
  • Each response stays under 100,000 bytes: whole results are admitted one type at a time until the next would not fit, and a page that held some back reports truncated, shown, and nextFromHit — the from_hit that continues each type, passed

Only the beginning is shown; read the rest in the repo

Ask PopNx