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
.env
file in the root directory and add your OpenFEC API key:
OPENFEC_API_KEY=your_api_key_here
- Build the server:
npm run build
Configuration
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-openfec
with the actual path where you cloned the repository - Use absolute paths, not relative paths
- Set
disabled
tofalse
to enable the server - Keep
autoApprove
as an empty array for security - Add your OpenFEC API key in the
env
section
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
src
directory - Rebuild the server:
npm run build
License
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.