Xero MCP Server: books, invoices and reports for agents
Xero's official MCP server lets agents read accounts, invoices, bank transactions and financial reports, and create contacts, invoices and manual journals.
Project and installation docs
View projecthttps://github.com/XeroAPI/xero-mcp-server
A small-business owner who wants last quarter’s profit or a list of customers 60 days overdue either clicks through Xero’s reports or waits for the accountant. Xero MCP Server, maintained by Xero’s own XeroAPI organization, lets an agent call the accounting API to answer those questions and enter documents for you. The repo had about 370 stars as of 2026-10-06.
What it does
- Books and reports:
list-accountsreads the chart of accounts;list-contacts,list-invoices,list-payments,list-bank-transactions,list-items,list-quotesandlist-tax-ratespull contacts, documents and transactions;list-profit-and-loss,list-report-balance-sheetandlist-trial-balanceproduce the core reports, andlist-organisation-detailsreads company basics. - Receivables and payables:
list-aged-receivables-by-contactandlist-aged-payables-by-contactshow aging per contact. - Data entry:
create-contact,create-invoice,create-quote,create-credit-note,create-payment,create-bank-transaction,create-item,create-manual-journalandcreate-tracking-category, with matchingupdate-*tools (invoices and quotes only while in draft). - Payroll: in NZ and UK regions, list employees and leave balances, and create, approve, revert or delete timesheets, line by line.
Who it’s for
- Small-business owners on Xero who want to ask an agent for numbers instead of emailing their accountant.
- Bookkeepers who want aging reports and overdue lists pulled for each client in one pass, without manually exporting reports first.
- Developers building on Xero who want an agent to exercise the full API against the free Demo Company before touching a real set of books.
Setup
You need Node.js 18+ and a Xero developer account with a Custom Connection for the Client ID and Secret; payroll-specific tools only work when the organization’s region is set to NZ or UK. For Claude Desktop:
{
"mcpServers": {
"xero": {
"command": "npx",
"args": ["-y", "@xeroapi/xero-mcp-server@latest"],
"env": {
"XERO_CLIENT_ID": "your_client_id_here",
"XERO_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}
To switch between several organizations at runtime, or let the MCP client run its own PKCE auth flow, use XERO_CLIENT_BEARER_TOKEN instead; it takes priority over XERO_CLIENT_ID when both are set.
Our take
Few accounting servers come from the software vendor itself, and this one covers real work, from reports to journal entries to timesheets. If what a business actually needs is collecting payments, subscriptions and dispute handling rather than bookkeeping itself, Stripe MCP or PayPal Agent Toolkit fit better. Its write access is real too: create-payment and create-manual-journal change the books directly. Practice on Xero’s Demo Company, and grant production books only the scopes you need (XERO_SCOPES narrows them). Connections created after April 29, 2026 need the newer granular scopes; the README lists both sets, and a batch of older scopes such as accounting.transactions and accounting.reports.read are already marked deprecated. It returns accounting data, not accounting or tax advice. MIT-licensed.