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
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`
- 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
to false
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 candidate
get_candidate_financials
: Get financial data for a candidate
search_candidates
: Search for candidates by name or other criteria
get_committee
: Get detailed information about a committee
get_candidate_contributions
: Get individual contributions for a candidate
get_filings
: Retrieve official FEC filings
get_independent_expenditures
: Get independent expenditures
get_electioneering
: Get electioneering communications
get_party_coordinated_expenditures
: Get party coordinated expenditures
get_communication_costs
: Get corporate/union communication costs
get_audit_cases
: Get FEC audit cases and findings
get_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.