CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Openfec Mcp Server

cyanheads/openfec-mcp-server
19 toolsSTDIO, HTTPregistry active
Summary

Wraps the FEC's OpenFEC API with nine tools covering candidates, committees, contributions, disbursements, independent expenditures, filings, elections, legal documents, and the FEC calendar. You can search itemized Schedule A contributions with filters for employer, occupation, state, and amount range, or pull aggregated breakdowns by size bracket. The disbursements tool works the same way for Schedule B spending. Independent expenditures show support or oppose positions per candidate. Five resources expose candidate profiles, committee details, and election races at the presidential, senate, and house district level. Two prompts frame campaign finance analysis and money trail investigations. Requires an FEC API key. Available via stdio, streamable HTTP, or a hosted instance at openfec.caseyjhand.com/mcp.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

9 tools
openfec_search_candidatesFind 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 digits.14 params

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

Parameters* required
pagenumber
Page number (1-indexed). Default 1.
cyclenumber
Two-year election cycle (even year, e.g., 2024).
partystring
Three-letter party code (e.g., DEM, REP, LIB).
querystring
Full-text candidate name search.
statestring
Two-letter US state code (e.g., AZ, CA).
officestring
Filter by office: H=House, S=Senate, P=President.one of H · S · P
districtstring
Two-digit district number for House candidates.
per_pagenumber
Results per page. Default 20, max 100.
candidate_idstring
FEC candidate ID (e.g., P00003392, H2CO07170). When provided, returns a single candidate with full detail.
election_yearnumber
Specific election year the candidate ran in.
include_totalsboolean
Include financial totals (receipts, disbursements, cash on hand). Defaults to true when fetching by candidate_id.
candidate_statusstring
Candidate status: C=present, F=future, N=not yet, P=prior.one of C · F · N · P
has_raised_fundsboolean
Only candidates whose committee has received receipts.
incumbent_challengestring
Incumbent status: I=incumbent, C=challenger, O=open seat.one of I · C · O
openfec_search_committeesFind 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 digits (e.g., C00358796).11 params

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 digits (e.g., C00358796).

Parameters* required
pagenumber
Page number (1-indexed). Default 1.
cyclenumber
Two-year election cycle (even year).
partystring
Three-letter party code (e.g., DEM, REP).
querystring
Full-text committee name search.
statestring
Two-letter state code.
per_pagenumber
Results per page. Default 20, max 100.
designationstring
Committee designation. A (authorized), B (lobbyist PAC), D (leadership PAC), J (joint fundraiser), P (principal campaign), U (unauthorized).
candidate_idstring
Find committees linked to this candidate (authorized, leadership, joint fundraising).
committee_idstring
FEC committee ID (e.g., C00358796). Starts with 'C' followed by digits. Returns a single committee with full detail.
committee_typestring
Committee type code. Common: H (House), S (Senate), P (Presidential), O (Super PAC), N (PAC nonqualified), Q (PAC qualified), X (Party nonqualified), Y (Party qualified).
treasurer_namestring
Full-text treasurer name search.
openfec_search_contributionsSearch 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.18 params

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.

Parameters* required
modestring
Query mode. "itemized" returns individual contribution records (keyset pagination). "by_size" aggregates by contribution size bucket. "by_state" aggregates by contributor state. "by_employer" aggregates by employer. "by_occupation" aggregates by occupation.one of itemized · by_size · by_state · by_employer · by_occupationdefault: itemized
sortstring
Sort field. Itemized only.one of contribution_receipt_date · contribution_receipt_amount
cyclenumber
Two-year election cycle (e.g., 2024). Even years only. Defaults to current cycle for itemized mode.
cursorstring
Opaque pagination cursor from a previous response. Itemized mode only (keyset pagination).
max_datestring
Latest contribution date (YYYY-MM-DD). Itemized only.
min_datestring
Earliest contribution date (YYYY-MM-DD). Itemized only.
per_pagenumber
Results per page (max 100).default: 20
max_amountnumber
Maximum contribution amount in dollars. Itemized only.
min_amountnumber
Minimum contribution amount in dollars. Itemized only.
candidate_idstring
Candidate ID. Enables by_size and by_state aggregates without a committee_id.
committee_idstring
Receiving committee ID (e.g., C00703975).
is_individualboolean
Only individual contributions (excludes committee-to-committee transfers). Itemized only.
contributor_zipstring
ZIP code prefix (starts-with match). Itemized only.
contributor_citystring
Contributor city. Itemized only.
contributor_namestring
Full-text donor name search. Itemized only.
contributor_statestring
Two-letter state code (e.g., CA). Itemized only.
contributor_employerstring
Full-text employer search. Itemized only.
contributor_occupationstring
Full-text occupation search. Itemized only.
openfec_search_disbursementsSearch 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?"16 params

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

Parameters* required
modestring
Query mode. "itemized" returns individual disbursement records (keyset pagination). "by_purpose" aggregates by purpose category. "by_recipient" aggregates by recipient name. "by_recipient_id" aggregates by recipient committee ID (committee-to-committee transfers).one of itemized · by_purpose · by_recipient · by_recipient_iddefault: itemized
sortstring
Sort field. Itemized only.one of disbursement_date · disbursement_amount
cyclenumber
Two-year election cycle (e.g., 2024). Even years only.
cursorstring
Opaque pagination cursor from a previous response. Itemized mode only (keyset pagination).
max_datestring
Latest disbursement date (YYYY-MM-DD). Itemized only.
min_datestring
Earliest disbursement date (YYYY-MM-DD). Itemized only.
per_pagenumber
Results per page (max 100).default: 20
max_amountnumber
Maximum amount in dollars. Itemized only.
min_amountnumber
Minimum amount in dollars. Itemized only.
committee_idstring
Spending committee ID (e.g., C00703975). Required for all modes.
recipient_citystring
Recipient city. Itemized only.
recipient_namestring
Full-text payee name search. Itemized only.
recipient_statestring
Recipient state. Itemized only.
recipient_committee_idstring
Recipient committee ID (for committee-to-committee transfers). Itemized only.
disbursement_descriptionstring
Full-text description search (e.g., "media buy", "consulting"). Itemized only.
disbursement_purpose_categorystring
Purpose category code. Itemized only.
openfec_search_expendituresSearch 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.18 params

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.

Parameters* required
modestring
Query mode. "itemized" returns individual expenditure records (keyset pagination). "by_candidate" returns aggregated totals per candidate by committee (page-based).one of itemized · by_candidatedefault: itemized
sortstring
Sort field. Itemized only.one of expenditure_date · expenditure_amount · office_total_ytd
cyclenumber
Two-year election cycle (e.g., 2024). Even years only.
cursorstring
Opaque pagination cursor from a previous response. Itemized mode only (keyset pagination).
max_datestring
Latest expenditure date (YYYY-MM-DD). Itemized only.
min_datestring
Earliest expenditure date (YYYY-MM-DD). Itemized only.
per_pagenumber
Results per page (max 100).default: 20
is_noticeboolean
Only 24/48-hour notice filings (near-election spending). Itemized only.
max_amountnumber
Maximum expenditure amount in dollars. Itemized only.
min_amountnumber
Minimum expenditure amount in dollars. Itemized only.
payee_namestring
Full-text payee name search. Itemized only.
most_recentboolean
Only the most recent version of amended filings. Itemized only.default: true
candidate_idstring
Targeted candidate ID (e.g., P00003392).
committee_idstring
Spending committee ID (e.g., C00703975).
support_opposestring
S = support, O = oppose. Filter by whether the expenditure supports or opposes the candidate.one of S · O
candidate_partystring
Three-letter party code of the targeted candidate (e.g., DEM, REP).
candidate_officestring
Office of the targeted candidate: H=House, S=Senate, P=President.one of H · S · P
candidate_office_statestring
Two-letter state code of the targeted race.
openfec_search_filingsSearch 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.13 params

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.

Parameters* required
pagenumber
Page number (1-indexed). Default 1.
cyclenumber
Two-year election cycle (even year).
per_pagenumber
Results per page. Default 20, max 100.
form_typestring
FEC form type. Common: F3 (House/Senate quarterly), F3P (Presidential), F3X (PAC/party), F24 (24-hour IE notice), F1 (statement of organization), F2 (statement of candidacy), F5 (IE by persons).
filer_namestring
Full-text filer name search.
is_amendedboolean
Filter to original or amended filings only.
most_recentboolean
Only the most recent version (filters out superseded amendments). Default true.
report_typestring
Report type code. Common: Q1/Q2/Q3 (quarterly), YE (year-end), M3-M12 (monthly), 12G/12P/30G (pre/post election).
report_yearnumber
Filing year.
candidate_idstring
Associated candidate ID.
committee_idstring
Filing committee ID.
max_receipt_datestring
Latest FEC receipt date (YYYY-MM-DD).
min_receipt_datestring
Earliest date FEC received the filing (YYYY-MM-DD).
openfec_lookup_electionsLook up federal election races and candidate financial summaries. Find who's running in a race with fundraising totals, or get an aggregate race summary.7 params

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.

Parameters* required
zipstring
ZIP code — finds races covering this ZIP. Search mode only.
modestring
search = candidates in a race with financial totals. summary = aggregate race financial summary.one of search · summarydefault: search
cycleinteger
Election cycle year (even years only, e.g. 2024).
statestring
Two-letter US state code (e.g., AZ, CA). Required for senate/house unless zip is provided.
officestring
Office sought: president, senate, or house.one of president · senate · house
districtstring
Two-digit district number (e.g. "07"). Required for house unless zip is provided.
election_fullboolean
Expand to full election period (4yr president, 6yr senate, 2yr house). Default true. Ignored for ZIP-based searches.default: true
openfec_search_legalSearch FEC legal documents: advisory opinions, enforcement cases (MURs), alternative dispute resolutions, and administrative fines.13 params

Search FEC legal documents: advisory opinions, enforcement cases (MURs), alternative dispute resolutions, and administrative fines.

Parameters* required
typestring
Document type filter. Omit to search all types. admin_fines is slow without a query or respondent filter.one of advisory_opinions · murs · adrs · admin_fines · statutes
querystring
Full-text search across legal documents.
from_hitinteger
Offset for pagination (0-indexed). Default 0.default: 0
max_datestring
Latest document date (YYYY-MM-DD).
min_datestring
Earliest document date (YYYY-MM-DD).
ao_numberstring
Specific advisory opinion number (e.g. "2024-01").
respondentstring
Respondent name (enforcement cases).
case_numberstring
Specific MUR or ADR case number.
hits_returnedinteger
Results per page. Default 20, max 200.default: 20
max_penalty_amountnumber
Maximum penalty amount.
min_penalty_amountnumber
Minimum penalty amount (enforcement cases).
statutory_citationstring
U.S.C. citation (e.g. "52 U.S.C. 30106").
regulatory_citationstring
CFR citation (e.g. "11 CFR 112.4").
openfec_lookup_calendarLook up FEC calendar events, filing deadlines, and election dates.12 params

Look up FEC calendar events, filing deadlines, and election dates.

Parameters* required
modestring
events = FEC calendar events. filing_deadlines = report due dates. election_dates = upcoming/past elections.one of events · filing_deadlines · election_datesdefault: events
pageinteger
Page number (1-indexed). Default 1.default: 1
statestring
Two-letter state code (e.g., AZ, CA). Primarily for election_dates mode.
officestring
Office sought (H=House, S=Senate, P=President). Election dates mode.one of H · S · P
categorystring
Calendar category ID for events mode. Common values: "32" (reporting deadlines), "33" (election dates), "34" (quarterly filings). Events mode only.
max_datestring
Latest date (YYYY-MM-DD).
min_datestring
Earliest date (YYYY-MM-DD).
per_pageinteger
Results per page. Default 20, max 100.default: 20
descriptionstring
Full-text event description search. Events mode.
report_typestring
Report type code (e.g. "Q1", "Q2"). Filing deadlines mode only.
report_yearinteger
Report year. Filing deadlines mode.
election_yearinteger
Election year. Election dates mode.

@cyanheads/openfec-mcp-server

Access FEC campaign finance data through MCP. Query data about candidates, money trails, and election filings. STDIO & Streamable HTTP.

9 Tools • 5 Resources • 2 Prompts

npm Version Docker MCP SDK License TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

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


Tools

Nine tools for querying federal election campaign finance data:

Tool NameDescription
openfec_search_candidatesFind federal candidates by name, state, office, party, or cycle.
openfec_search_committeesFind political committees by name, type, candidate affiliation, or state.
openfec_search_contributionsSearch itemized individual contributions or aggregate breakdowns by size, state, employer, or occupation.
openfec_search_disbursementsSearch itemized committee spending or aggregate breakdowns by purpose or recipient.
openfec_search_expendituresSearch independent expenditures supporting or opposing federal candidates.
openfec_search_filingsSearch FEC filings and reports by committee, candidate, form type, or date range.
openfec_lookup_electionsLook up election races and candidate financial summaries.
openfec_search_legalSearch FEC legal documents: advisory opinions, enforcement cases, and administrative fines.
openfec_lookup_calendarLook up FEC calendar events, filing deadlines, and election dates.

openfec_search_candidates

Find federal candidates with optional financial totals.

  • Full-text name search plus filters for state, district, office, party, cycle, incumbent status
  • Fetch a specific candidate by FEC ID (H/S/P prefix) with full detail
  • Optional financial totals: receipts, disbursements, cash on hand
  • Pagination up to 100 results per page

openfec_search_committees

Find political committees (campaign, PAC, Super PAC, party).

  • Full-text name search plus filters for type, designation, party, state, candidate affiliation
  • Fetch a specific committee by FEC ID (C prefix)
  • Committee types: House, Senate, Presidential, Super PAC, PAC, Party
  • Treasurer name search

openfec_search_contributions

Search Schedule A contribution data with five query modes.

  • itemized: Individual contribution records with keyset cursor pagination
  • by_size: Aggregate breakdowns by contribution size range
  • by_state: Geographic breakdown of contributions
  • by_employer: Top employer aggregates
  • by_occupation: Top occupation aggregates
  • Filters: donor name, employer, occupation, city, state, ZIP, date range, amount range

openfec_search_disbursements

Search Schedule B spending data with four query modes.

  • itemized: Individual disbursement records with keyset cursor pagination
  • by_purpose: Aggregate by spending purpose category
  • by_recipient: Aggregate by payee name
  • by_recipient_id: Aggregate by recipient committee ID
  • Filters: recipient name, description, date range, amount range

openfec_search_expenditures

Search Schedule E independent expenditure data.

  • itemized: Individual expenditure records with support/oppose indicator
  • by_candidate: Aggregated totals per targeted candidate
  • Filters: committee, candidate, office, party, 24/48-hour notices, date and amount range

openfec_search_filings

Search FEC filings and reports.

  • Form types: F3 (House/Senate quarterly), F3P (Presidential), F3X (PAC/party), F24 (24-hour IE notice), F1/F2 (organizational/candidacy), F5 (IE by persons)
  • Report type codes: Q1/Q2/Q3, YE, monthly, pre/post election
  • Amendment filtering with most-recent-only option
  • Date range filtering by FEC receipt date

openfec_search_legal

Search across FEC legal document types.

  • Advisory opinions, MURs (enforcement cases), ADRs, administrative fines, statutes
  • Look up specific cases by AO number or case number
  • Filter by respondent, regulatory/statutory citation, penalty amount range
  • Offset-based pagination (up to 200 results per page)

openfec_lookup_elections

Look up federal election races.

  • search: Candidates in a race with financial totals
  • summary: Aggregate race financial summary
  • Office types: H (House), S (Senate), P (President)
  • ZIP code lookup to find races covering a location
  • Full election period expansion (4yr president, 6yr senate, 2yr house)

openfec_lookup_calendar

Look up FEC dates and deadlines.

  • events: FEC calendar events
  • filing_deadlines: Report due dates by type and year
  • election_dates: Upcoming and past election dates by state and office
  • Date range filtering

Resources

URI PatternDescription
openfec://candidate/{candidate_id}Federal candidate profile with current financial totals.
openfec://committee/{committee_id}Political committee profile with type, designation, and financial summary.
openfec://election/{cycle}/{office}Presidential or at-large election race with candidate financial totals.
openfec://election/{cycle}/{office}/{state}Senate or state-level election race with candidate financial totals.
openfec://election/{cycle}/{office}/{state}/{district}House district election race with candidate financial totals.

Prompts

PromptDescription
openfec_campaign_analysisStructured analysis of a candidate's financial position — fundraising trajectory, burn rate, cash reserves, donor composition, and opponent comparison.
openfec_money_trailFramework for tracing the flow of money around a candidate or race — direct fundraising, PAC support, independent expenditures, and party spending.

Features

Built on @cyanheads/mcp-ts-core:

  • Declarative tool definitions — single file per tool, framework handles registration and validation
  • Unified error handling across all tools
  • Pluggable auth (none, jwt, oauth)
  • Swappable storage backends: in-memory, filesystem, Supabase, Cloudflare KV/R2/D1
  • Structured logging with optional OpenTelemetry tracing
  • Runs locally (stdio/HTTP) or via Docker from the same codebase

OpenFEC-specific:

  • Type-safe client wrapping the OpenFEC REST API
  • Multi-mode tools supporting both itemized records and aggregate breakdowns
  • Keyset cursor pagination for high-volume Schedule A/B/E data
  • Automatic retry with configurable timeout and max retries
  • Error sanitization strips API keys from error messages; HTTP status errors enriched with actionable hints
  • Two guided investigation prompts for campaign finance analysis workflows

Getting Started

Public Hosted Instance

A public instance is available at https://openfec.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:

{
  "mcpServers": {
    "openfec-mcp-server": {
      "type": "streamable-http",
      "url": "https://openfec.caseyjhand.com/mcp"
    }
  }
}

Self-Hosted / Local

Add the following to your MCP client configuration file.

{
  "mcpServers": {
    "openfec-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/openfec-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "FEC_API_KEY": "your-api-key"
      }
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "openfec-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "-e", "FEC_API_KEY=your-api-key", "ghcr.io/cyanheads/openfec-mcp-server:latest"]
    }
  }
}

For Streamable HTTP, set the transport and start the server:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 FEC_API_KEY=your-key bun run start:http
# Server listens at http://localhost:3010/mcp

Prerequisites

  • Bun v1.3.0 or higher (or Node ≥24)
  • (Optional) A free OpenFEC API key for higher rate limits (1,000 req/hr vs 30 req/hr with the default DEMO_KEY)

Installation

  1. Clone the repository:
git clone https://github.com/cyanheads/openfec-mcp-server.git
  1. Navigate into the directory:
cd openfec-mcp-server
  1. Install dependencies:
bun install

Configuration

VariableDescriptionDefault
FEC_API_KEYOpenFEC API key. Optional — defaults to DEMO_KEY (30 req/hr). Provide your own key (free at api.data.gov/signup) for 1,000 req/hr.DEMO_KEY
FEC_BASE_URLOpenFEC API base URL.https://api.open.fec.gov/v1
FEC_MAX_RETRIESMax retry attempts for failed API requests.3
FEC_REQUEST_TIMEOUTRequest timeout in milliseconds.30000
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_HTTP_PORTPort for HTTP server.3010
MCP_HTTP_HOSTHostname for HTTP server.localhost
MCP_AUTH_MODEAuth mode: none, jwt, or oauth.none
MCP_LOG_LEVELLog level (RFC 5424).info
LOGS_DIRDirectory for log files (Node.js only).<project-root>/logs
STORAGE_PROVIDER_TYPEStorage backend.in-memory
OTEL_ENABLEDEnable OpenTelemetry instrumentation (spans, metrics, completion logs).false

Running the Server

Local Development

  • Build and run:

    bun run rebuild
    bun run start:stdio   # or start:http
    
  • Run checks and tests:

    bun run devcheck      # Lint, format, typecheck, security audit
    bun run test          # Runs test suite
    

Project Structure

DirectoryPurpose
src/mcp-server/tools/definitions/Tool definitions (*.tool.ts).
src/mcp-server/resources/definitions/Resource definitions (*.resource.ts).
src/mcp-server/prompts/definitions/Prompt definitions (*.prompt.ts).
src/services/openfec/OpenFEC API client and domain types.
src/config/Environment variable parsing and validation with Zod.
tests/Unit and integration tests.
scripts/Build, clean, devcheck, tree, and lint scripts.
docs/Design docs and OpenAPI spec.

Development Guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for domain-specific logging, ctx.state for storage
  • Register new tools and resources in the index.ts barrel files

Contributing

Issues and pull requests are welcome. Run checks before submitting:

bun run devcheck
bun run test

License

Apache-2.0 — see LICENSE for details.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

FEC_API_KEY

OpenFEC API key — optional (falls back to DEMO_KEY: 30 req/hr). Own key: 1000 req/hr. Free signup at api.data.gov.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Categories
Data & Analytics
Registryactive
Package@cyanheads/openfec-mcp-server
TransportSTDIO, HTTP
UpdatedJun 8, 2026
View on GitHub

Related Data & Analytics MCP Servers

View all →
Google Sheets

com.mcparmory/google-sheets

Create, read, and modify spreadsheet data, formatting, and sheets
25
Google Sheets

domdomegg/google-sheets-mcp

Allow AI systems to read, write, and query spreadsheet data via Google Sheets.
2
Google Sheets Mcp

henilcalagiya/google-sheets-mcp

Powerful tools for automating Google Sheets using Model Context Protocol (MCP)
14
Futuristic Risk Intelligence

cct15/war-dashboard-data

Geopolitical conflict risk, political events, and maritime traffic data for AI agents
1
Mcp Google Sheets Full

moooonad/mcp-google-sheets-full

Full Google Sheets MCP: 26 tools + run_sheets_script escape hatch. User OAuth, no service account.
CSV to JSON API

io.github.br0ski777/csv-to-json

Parse CSV to JSON array. Auto-detect delimiter, headers. x402 micropayment.