FreeAgent accounting MCP: bank reconciliation, expenses, mileage claims and receipts.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"freeagent": {
"env": {
"FREEAGENT_CLIENT_ID": "...",
"FREEAGENT_CLIENT_SECRET": "...",
"FREEAGENT_REFRESH_TOKEN": "..."
},
"args": [
"/path/to/freeagent-mcp-server/dist/index.js"
],
"command": "node"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A Model Context Protocol server for FreeAgent accounting. Gives Claude (or any MCP client) the ability to list bank transactions, explain/approve them with receipts, create expenses, and log mileage.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y '@oxygenbubbles/freeagent-mcp-server' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked @oxygenbubbles/freeagent-mcp-server against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in finance
MCP server for retrieving Japanese stock market data via J-Quants API v2
Real-time financial market data: stocks, forex, crypto, commodities, and economic indicators
Swiss accounting integration for Bexio. 310 tools for invoices, contacts, projects.
Brazilian public procurement (PNCP) and Federal Revenue CNPJ data — 16 tools, 4 prompts.
MCP Security Weekly
Get CVE alerts and security updates for io.github.OxygenBubbles/freeagent-mcp-server and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A Model Context Protocol server for FreeAgent accounting. Gives Claude (or any MCP client) the ability to list bank transactions, explain/approve them with receipts, create expenses, and log mileage.
The FreeAgent OAuth credentials grant full access to the connected FreeAgent account. This server uses that access to:
| Action | Tools that use it |
|---|---|
| Read bank accounts | freeagent_list_bank_accounts |
| Read bank transactions and explanations | freeagent_list_transactions |
| Update transaction explanations (category, description, approval, attachments) | freeagent_explain_transaction |
| Create expense claims | freeagent_create_expense, freeagent_create_mileage_expense |
| Read expense categories | freeagent_list_categories |
FreeAgent does not offer granular OAuth scopes — authorising an app grants access to all of the above. The server does not delete transactions, invoices, contacts, or any other data.
This server has no email tools. For receipt/invoice search to work automatically, connect one or more of the following MCP servers alongside this one:
mcp__claude_ai_Gmail) — personal emailmcp__claude_ai_microsoft-365) — business emailWhen both are connected, Claude will search all of them automatically for matching receipts before asking you to provide a file manually.
| Tool | Description |
|---|---|
freeagent_list_bank_accounts | List all bank accounts and their IDs |
freeagent_list_transactions | List transactions (unexplained / explained / all / marked_for_review) with date filters |
freeagent_explain_transaction | Update, approve or attach a receipt to a transaction explanation |
freeagent_list_categories | List the FreeAgent chart of accounts (expense categories) |
freeagent_create_expense | Create an expense claim with optional receipt attachment and bank-transaction auto-matching |
freeagent_create_mileage_expense | Create a mileage expense using HMRC rates, with optional distance auto-calculation |
http://localhost:8080/callback..mcp.json automatically:npx @oxygenbubbles/freeagent-mcp-server auth
The command prompts for your Client ID and Client Secret, opens the FreeAgent authorization page in your browser, listens for the callback, exchanges the code for a long-lived refresh token, and writes everything to .mcp.json in the current directory. If .mcp.json already exists, it updates just the freeagent entry.
git clone https://github.com/OxygenBubbles/freeagent-mcp-server.git
cd freeagent-mcp-server
npm install
npm run build
All settings are read from environment variables.
| Variable | Description |
|---|---|
FREEAGENT_CLIENT_ID | OAuth client ID |
FREEAGENT_CLIENT_SECRET | OAuth client secret |
FREEAGENT_REFRESH_TOKEN | Long-lived refresh token |
| Variable | Description |
|---|---|
VENDOR_CATEGORIES | JSON object extending the built-in vendor → category mapping (see below) |
MILEAGE_CATEGORY_URL | FreeAgent category URL for mileage expenses (default /v2/categories/311) |
MILEAGE_RATE_PENCE | Fixed pence-per-mile rate; overrides HMRC logic when set |
HMRC_RATE_HIGH_PENCE | HMRC high-band rate in pence (default 45) |
HMRC_RATE_LOW_PENCE | HMRC low-band rate in penc |