Production-grade MCP server for FreshBooks — 53 tools for invoices, clients, expenses, payments, time tracking, projects, estimates, reports, and smart workflows.
Project description
mcp-freshbooks
Production-grade MCP server for FreshBooks — 53 tools for invoices, clients, expenses, payments, time tracking, projects, estimates, financial reports, and smart workflows.
Features
- 53 tools covering the full FreshBooks accounting workflow
- Smart workflow tools — convert estimates to invoices, invoice unbilled time, find overdue clients, get full client summaries
- 5 financial reports — P&L, tax summary, accounts aging, balance sheet, payments collected
- OAuth2 authentication with automatic token refresh
- Clean output — summarized lists, formatted details
- Production-grade error handling and rate limit awareness
- Zero cost — uses FreshBooks free developer program
Tools
| Category | Tools | Count |
|---|---|---|
| Auth | freshbooks_authenticate, freshbooks_authenticate_with_code, freshbooks_whoami |
3 |
| Invoices | list_invoices, get_invoice, create_invoice, update_invoice, send_invoice, delete_invoice |
6 |
| Recurring | list_recurring_invoices, create_recurring_invoice, update_recurring_invoice |
3 |
| Clients | list_clients, get_client, create_client, update_client, delete_client |
5 |
| Estimates | list_estimates, get_estimate, create_estimate, update_estimate, send_estimate |
5 |
| Expenses | list_expenses, get_expense, create_expense, update_expense, delete_expense |
5 |
| Payments | list_payments, get_payment, create_payment |
3 |
| Time Tracking | list_time_entries, get_time_entry, create_time_entry, update_time_entry, delete_time_entry |
5 |
| Projects | list_projects, get_project, create_project, update_project |
4 |
| Reports | get_profit_loss, get_tax_summary, get_accounts_aging, get_balance_sheet, get_payments_collected |
5 |
| Items | list_items, create_item |
2 |
| Categories | list_expense_categories |
1 |
| Taxes | list_taxes |
1 |
| Workflows | convert_estimate_to_invoice, get_overdue_invoices, get_unbilled_time, invoice_from_time, client_summary |
5 |
Quick Start
1. Install
pip install mcp-freshbooks
Or from source:
git clone https://github.com/AlexlaGuardia/mcp-freshbooks.git
cd mcp-freshbooks
pip install .
2. Get FreshBooks API Credentials
- Sign up at freshbooks.com/pages/developer-signup
- Create an OAuth app in the developer portal
- Set redirect URI to
https://localhost:8555/callback - Copy your Client ID and Client Secret
3. Configure
export FRESHBOOKS_CLIENT_ID=your_client_id
export FRESHBOOKS_CLIENT_SECRET=your_client_secret
export FRESHBOOKS_REDIRECT_URI=https://localhost:8555/callback
4. Add to Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"freshbooks": {
"command": "mcp-freshbooks",
"env": {
"FRESHBOOKS_CLIENT_ID": "your_client_id",
"FRESHBOOKS_CLIENT_SECRET": "your_client_secret",
"FRESHBOOKS_REDIRECT_URI": "https://localhost:8555/callback"
}
}
}
}
5. Authenticate
Use the freshbooks_authenticate tool on first use. It will give you a URL to open in your browser. After authorizing, tokens are saved to ~/.mcp-freshbooks/tokens.json and auto-refresh.
Usage Examples
Who owes me money?
Use get_overdue_invoices to see all past-due clients and total outstanding
Convert a proposal to an invoice:
Use convert_estimate_to_invoice to turn estimate 456 into a ready-to-send invoice
Find unbilled work:
Use get_unbilled_time to find time entries not yet on any invoice
Check profitability:
Get the profit and loss report for Q1 2026
Track time:
Create a 2-hour time entry for project 789 with note "API integration work"
Architecture
src/mcp_freshbooks/
├── server.py # MCP server with 47 tool definitions
├── client.py # FreshBooks API client (httpx async)
└── auth.py # OAuth2 flow + token persistence
The server uses the MCP Python SDK with FastMCP for clean tool registration. All API calls go through the async client with automatic token refresh.
Requirements
- Python 3.10+
- FreshBooks account (free trial works for development)
- FreshBooks OAuth app credentials
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_freshbooks-0.2.0.tar.gz.
File metadata
- Download URL: mcp_freshbooks-0.2.0.tar.gz
- Upload date:
- Size: 41.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c6fbefc9f4ea7bceb1feadbf0a635489800a7fad8ec69d713ca90c5b207720b
|
|
| MD5 |
ee72eb7079ecd4a814517060fce00faa
|
|
| BLAKE2b-256 |
9277f6759366ca6e6660aebabff31aefd9d2435be6012374f3cb404a9d2b1802
|
File details
Details for the file mcp_freshbooks-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mcp_freshbooks-0.2.0-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53666079021074e614f13257b90d88d151553fd85f16699f038c85978cf39feb
|
|
| MD5 |
47ff1dc36fdc816b53268bc049adbefe
|
|
| BLAKE2b-256 |
2bc5551b45eb88819332ecf24da841502fdaefcd582e3345e78c0d18c76a530f
|