MCP OpenFEC Server
A Model Context Protocol (MCP) server that provides access to Federal Election Commission (FEC) campaign finance data through the OpenFEC API.
Features
- Search for candidates by name, state, or office
- Get detailed candidate information and financial data
- Access committee information
- View individual contributions
- Track independent expenditures
- Access FEC filings and audit cases
- Download bulk data
Requirements
- Node.js (v16 or higher)
- An OpenFEC API Key (Get one hereβ)
Installation
- Clone the repository:
git clone https://github.com/psalzman/mcp-openfec
cd mcp-openfec- Install dependencies:
npm install- Create a
.envfile in the root directory and add your OpenFEC API key:
OPENFEC_API_KEY=your_api_key_here- Build the server:
npm run buildConfiguration
To use this MCP server with Claude Desktop:
-
Locate your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
Add the following configuration to the file:
{
"mcpServers": {
"openfec": {
"command": "node",
"args": ["/absolute/path/to/mcp-openfec/build/server.js"],
"env": {
"OPENFEC_API_KEY": "your_api_key_here"
},
"disabled": false,
"autoApprove": []
}
}
}Important configuration notes:
- Replace
/absolute/path/to/mcp-openfecwith the actual path where you cloned the repository - Use absolute paths, not relative paths
- Set
disabledtofalseto enable the server - Keep
autoApproveas an empty array for security - Add your OpenFEC API key in the
envsection
Available Tools
get_candidate: Get detailed information about a candidateget_candidate_financials: Get financial data for a candidatesearch_candidates: Search for candidates by name or other criteriaget_committee: Get detailed information about a committeeget_candidate_contributions: Get individual contributions for a candidateget_filings: Retrieve official FEC filingsget_independent_expenditures: Get independent expendituresget_electioneering: Get electioneering communicationsget_party_coordinated_expenditures: Get party coordinated expendituresget_communication_costs: Get corporate/union communication costsget_audit_cases: Get FEC audit cases and findingsget_bulk_downloads: Get links to bulk data downloads
Rate Limiting
The server implements rate limiting to comply with OpenFEC API guidelines:
- 1000 requests per hour
- Requests exceeding this limit will receive an error response
Development
To modify the server:
- Make changes to the TypeScript files in the
srcdirectory - Rebuild the server:
npm run buildLicense
This project is licensed under the BSD 3-Clause License - a permissive open source license that ensures maximum freedom for users while maintaining attribution requirements. The license allows you to:
- Use the code commercially
- Modify the code
- Distribute the code
- Use the code privately
With three main conditions:
- You must include the original copyright notice
- You must include the license text in distributions
- You cannot use the names of contributors to endorse derived products without permission
The BSD 3-Clause License is widely used in academic and commercial settings, offering a good balance between permissiveness and protecting contributors.
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin feature/my-new-feature) - Create a new Pull Request
Copyright
Copyright (c) 2025, Phillip Salzman & Foundry Peak, LLC. All rights reserved. Web: http://foundrypeak.com/β
For licensing details, see the LICENSE file.