loading…
Search for a command to run...
loading…
Production-grade MCP server for FreshBooks. 25 tools for invoices, clients, expenses, payments, time tracking, projects, estimates, and financial reports. OAuth
Production-grade MCP server for FreshBooks. 25 tools for invoices, clients, expenses, payments, time tracking, projects, estimates, and financial reports. OAuth2 with automatic token refresh.
Production-grade MCP server for FreshBooks — 53 tools for invoices, clients, expenses, payments, time tracking, projects, estimates, financial reports, and smart workflows.
| 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 |
pip install mcp-freshbooks
Or from source:
git clone https://github.com/AlexlaGuardia/mcp-freshbooks.git
cd mcp-freshbooks
pip install .
https://localhost:8555/callbackexport FRESHBOOKS_CLIENT_ID=your_client_id
export FRESHBOOKS_CLIENT_SECRET=your_client_secret
export FRESHBOOKS_REDIRECT_URI=https://localhost:8555/callback
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"
}
}
}
}
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.
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"
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.
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"mcp-freshbooks": {
"command": "npx",
"args": []
}
}
}