Finance#Data analysis

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 project

https://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-accounts reads the chart of accounts; list-contacts, list-invoices, list-payments, list-bank-transactions, list-items, list-quotes and list-tax-rates pull contacts, documents and transactions; list-profit-and-loss, list-report-balance-sheet and list-trial-balance produce the core reports, and list-organisation-details reads company basics.
  • Receivables and payables: list-aged-receivables-by-contact and list-aged-payables-by-contact show aging per contact.
  • Data entry: create-contact, create-invoice, create-quote, create-credit-note, create-payment, create-bank-transaction, create-item, create-manual-journal and create-tracking-category, with matching update-* 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.