About MCP FreshBooks
MCP FreshBooks connects accounting workflows in FreshBooks to MCP clients. It covers billing, expenses, time tracking, reports, and higher-level workflows, with OAuth2 token refresh.
Key features
- 01Manage invoices, clients, estimates, and expenses
- 02Record payments, time entries, and projects
- 03Generate five financial reports
- 04Convert estimates and invoice unbilled time
- 05Authenticate with OAuth2 and refresh tokens
Use cases
- 01Review overdue invoices and outstanding amounts
- 02Turn an estimate into an invoice
- 03Find unbilled time and create an invoice
- 04Check profit and loss or tax summaries
MCP support
An MCP server that exposes FreshBooks accounting operations and workflow tools to MCP clients.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEmcp-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
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.