MCP Directory

Xero MCP Server

Official Xero MCP server for accounting, invoicing, contacts, and payroll via the Xero API.

Unverified
stdio (local)
OAuth
TypeScript

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
npx -y @xeroapi/xero-mcp-server@latest

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "xero-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@xeroapi/xero-mcp-server@latest"
      ],
      "env": {
        "XERO_CLIENT_ID": "your_client_id_here",
        "XERO_CLIENT_SECRET": "your_client_secret_here",
        "XERO_SCOPES": "accounting.invoices accounting.contacts accounting.settings"
      }
    }
  }
}

Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf

Before you start

  • Node.js (v18 or higher)
  • npm or pnpm
  • A Xero developer account with API credentials
  • A Xero account/organisation (a Demo Company is recommended for getting started)
  • A configured Xero Custom Connection (client ID/secret) or a Bearer token with the appropriate OAuth scopes

About Xero MCP Server

An official MCP server from Xero (XeroAPI) that provides a bridge between the MCP protocol and Xero's API, allowing standardized access to Xero's accounting and business features including contacts, chart of accounts, invoices, financial reports, and payroll. It supports two authentication modes: Custom Connections (client ID/secret, recommended for 3rd-party MCP clients like Claude Desktop) and Bearer Token (for supporting multiple Xero accounts at runtime with client-driven auth flows such as PKCE).

Tools & capabilities (51)

list-accounts

Retrieve a list of accounts

list-contacts

Retrieve a list of contacts from Xero

list-credit-notes

Retrieve a list of credit notes

list-invoices

Retrieve a list of invoices

list-items

Retrieve a list of items

list-manual-journals

Retrieve a list of manual journals

list-organisation-details

Retrieve details about an organisation

list-profit-and-loss

Retrieve a profit and loss report

list-quotes

Retrieve a list of quotes

list-tax-rates

Retrieve a list of tax rates

list-payments

Retrieve a list of payments

list-trial-balance

Retrieve a trial balance report

list-bank-transactions

Retrieve a list of bank account transactions

list-payroll-employees

Retrieve a list of Payroll Employees

list-report-balance-sheet

Retrieve a balance sheet report

list-payroll-employee-leave

Retrieve a Payroll Employee's leave records

list-payroll-employee-leave-balances

Retrieve a Payroll Employee's leave balances

list-payroll-employee-leave-types

Retrieve a list of Payroll leave types

list-payroll-leave-periods

Retrieve a list of a Payroll Employee's leave periods

list-payroll-leave-types

Retrieve a list of all available leave types in Xero Payroll

list-timesheets

Retrieve a list of Payroll Timesheets

list-aged-receivables-by-contact

Retrieves aged receivables for a contact

list-aged-payables-by-contact

Retrieves aged payables for a contact

list-contact-groups

Retrieve a list of contact groups

list-tracking-categories

Retrieve a list of tracking categories

create-bank-transaction

Create a new bank transaction

create-contact

Create a new contact

create-credit-note

Create a new credit note

create-invoice

Create a new invoice

create-item

Create a new item

create-manual-journal

Create a new manual journal

create-payment

Create a new payment

create-quote

Create a new quote

create-payroll-timesheet

Create a new Payroll Timesheet

create-tracking-category

Create a new tracking category

create-tracking-option

Create a new tracking option

update-bank-transaction

Update an existing bank transaction

update-contact

Update an existing contact

update-invoice

Update an existing draft invoice

update-item

Update an existing item

update-manual-journal

Update an existing manual journal

update-quote

Update an existing draft quote

update-credit-note

Update an existing draft credit note

update-tracking-category

Update an existing tracking category

update-tracking-options

Update tracking options

update-payroll-timesheet-line

Update a line on an existing Payroll Timesheet

approve-payroll-timesheet

Approve a Payroll Timesheet

revert-payroll-timesheet

Revert an approved Payroll Timesheet

add-payroll-timesheet-line

Add new line on an existing Payroll Timesheet

delete-payroll-timesheet

Delete an existing Payroll Timesheet

get-payroll-timesheet

Retrieve an existing Payroll Timesheet

What this server can do

Xero MCP Server provides tools for these capabilities — tap one to see every MCP server that does the same:

When to use it

  • Ask an AI assistant to create, update, and list invoices, quotes, and credit notes in Xero
  • Manage contacts and the chart of accounts conversationally
  • Generate financial reports such as profit and loss, balance sheet, trial balance, and aged receivables/payables
  • Record and reconcile bank transactions, payments, and manual journals
  • Run Xero Payroll workflows: manage employees, leave, and timesheets (NZ/UK regions)

Security notes

Do not commit your .env file or any sensitive credentials to version control (it is included in .gitignore as a safe default). Authentication requires Xero Custom Connection client ID/secret or a Bearer token; configure the minimum required OAuth scopes for your use case. To use Payroll-specific queries, the organisation region must be NZ or UK.

Xero MCP Server FAQ

What authentication modes are supported?

Two modes: Custom Connections (client ID/secret, recommended for testing/development and 3rd-party MCP clients like Claude Desktop) and Bearer Token (for supporting multiple Xero accounts at runtime, where the MCP client executes an auth flow such as PKCE). The XERO_CLIENT_BEARER_TOKEN takes precedence over XERO_CLIENT_ID if defined.

Do I need to configure OAuth scopes?

Yes. Custom connections require different scopes depending on when they were created (SCOPES_V1 before Apr 29, 2026; SCOPES_V2 from that date). The server tries V1 first and falls back to V2. You can override scopes via the optional XERO_SCOPES environment variable as a space-separated list.

Are there region restrictions for Payroll?

Yes. To use Payroll-specific queries, the organisation region must be either NZ or UK.

How do I get started quickly?

Sign up for a free Xero trial and use a Demo Company, which comes pre-loaded with sample data. You can reset the data or change the country at any time from the My Xero dropdown.

Alternatives to Xero MCP Server

Compare all alternatives →

Official Stripe server for payments, customers, subscriptions, invoices, and billing via natural language.

Featured
Verified
stdio (local)
API key
TypeScript
12 tools
Updated 1 month agoRepo

Coinbase's AgentKit MCP extension for onchain actions: transfers, swaps, and contract calls.

Verified
stdio (local)
API key
TypeScript
9 tools
Updated 1 month agoRepo

Alpaca's official trading server for stocks, ETFs, options, and crypto in plain English.

Verified
stdio (local)
API key
Python
12 tools
Updated 1 month agoRepo