muness/xero-expenses-mcp
If you are the rightful owner of xero-expenses-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
MCP server for managing Xero expenses, supporting bills, expenses, and claims with PKCE authentication.
xero-expenses-mcp
MCP (Model Context Protocol) server for Xero accounting. Supports Invoices, Bills, Expenses (Bank Transactions), and Expense Claims with PKCE authentication.
Features
- Invoices (ACCREC) - Create sales invoices to send to customers
- Bills (ACCPAY) - Create bills you'll pay later
- Expenses - Create "Spend Money" bank transactions for already-paid expenses
- Expense Claims - Create receipts and submit expense claims for reimbursement
- Attachments - Attach PDFs and images to invoices, bills, expenses, and receipts
- PKCE Auth - Desktop app OAuth flow (no client secret required)
Installation
npx xero-expenses-mcp
Or install globally:
npm install -g xero-expenses-mcp
Xero App Setup
- Go to Xero Developer Portal
- Create a new app:
- App name: Your choice (e.g., "Expense Manager")
- Integration type: "Mobile or desktop app" (uses PKCE, no secret needed)
- Redirect URI:
http://localhost:3000/callback
- Note your Client ID
Claude Code Configuration
Add to your Claude Code MCP settings:
{
"mcpServers": {
"xero-expenses": {
"command": "npx",
"args": ["xero-expenses-mcp"],
"env": {
"XERO_CLIENT_ID": "YOUR_CLIENT_ID"
}
}
}
}
Or use the CLI:
claude mcp add xero-expenses -- npx xero-expenses-mcp
Then set environment variables in your shell or .env file.
Environment Variables
| Variable | Required | Description |
|---|---|---|
XERO_CLIENT_ID | Yes | Your Xero app's client ID |
XERO_CLIENT_SECRET | No | Only for Web apps (not PKCE) |
XERO_REDIRECT_URI | No | Default: http://localhost:3000/callback |
Authentication
On first use, the server will open a browser for Xero OAuth. After authenticating, tokens are stored in ~/.xero-mcp/token.json.
Available Tools
Accounts & Contacts
xero_list_accounts- List expense accounts/categoriesxero_list_bank_accounts- List bank accountsxero_list_contacts- Search vendors/contactsxero_list_users- List organization users (for expense claims)
Invoices (Accounts Receivable)
xero_create_invoice- Create a sales invoice to send to customersxero_attach_file_to_invoice- Attach file to an invoice
Bills (Accounts Payable)
xero_create_bill- Create a bill for future paymentxero_attach_file- Attach file to a bill
Expenses (Bank Transactions)
xero_create_expense- Create a "Spend Money" transactionxero_attach_file_to_expense- Attach file to an expense
Expense Claims (deprecated Feb 2026)
xero_create_expense_claim- Create receipt + expense claimxero_attach_file_to_receipt- Attach file to a receipt
Example Usage
In Claude Code:
"Create an expense for $45.50 lunch at Cafe Example on 2024-01-15, categorize as Business Meals (account 620)"
Claude will use the xero_create_expense_claim tool with:
{
"vendorName": "Cafe Example",
"amount": 45.50,
"description": "Lunch",
"accountCode": "620",
"date": "2024-01-15"
}
Token Storage
Tokens are stored in ~/.xero-mcp/token.json. To re-authenticate, delete this file.
License
MIT