Skip to main content
Glama
README.md3.3 kB
# 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 ```bash npx xero-expenses-mcp ``` Or install globally: ```bash npm install -g xero-expenses-mcp ``` ## Xero App Setup 1. Go to [Xero Developer Portal](https://developer.xero.com/app/manage) 2. 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` 3. Note your **Client ID** ## Claude Code Configuration Add to your Claude Code MCP settings: ```json { "mcpServers": { "xero-expenses": { "command": "npx", "args": ["xero-expenses-mcp"], "env": { "XERO_CLIENT_ID": "YOUR_CLIENT_ID" } } } } ``` Or use the CLI: ```bash 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/categories - `xero_list_bank_accounts` - List bank accounts - `xero_list_contacts` - Search vendors/contacts - `xero_list_users` - List organization users (for expense claims) ### Invoices (Accounts Receivable) - `xero_create_invoice` - Create a sales invoice to send to customers - `xero_attach_file_to_invoice` - Attach file to an invoice ### Bills (Accounts Payable) - `xero_create_bill` - Create a bill for future payment - `xero_attach_file` - Attach file to a bill ### Expenses (Bank Transactions) - `xero_create_expense` - Create a "Spend Money" transaction - `xero_attach_file_to_expense` - Attach file to an expense ### Expense Claims (deprecated Feb 2026) - `xero_create_expense_claim` - Create receipt + expense claim - `xero_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: ```json { "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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/muness/xero-expenses-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server