Xero

Official

by XeroAPI

325 22.9k downloads Not rated yet MIT license

About

Interact with the accounting data in your business using our official MCP server

Details

License
MIT license

Explore

- Xero OAuth2 authentication with custom connections
- Contact management (list, create, update)
- Chart of Accounts management (list, create, update)
- Invoice creation, management and updating
- Payroll employee and timesheet support
- MCP protocol compliance for standardized access

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Xero
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install via npx (npx -y @xeroapi/xero-mcp-server@latest) and configure authentication. Two modes are supported: Custom Connections (set XERO_CLIENT_ID and XERO_CLIENT_SECRET environment variables) or Bearer Token (set XERO_CLIENT_BEARER_TOKEN). The server can be added to Claude Desktop by editing claude_desktop_config.json with the appropriate command and environment variables. Once running, invoke MCP commands such as list-accounts, create-invoice, list-payroll-employees, etc.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "xero": {
            "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",
                    "XERO_SCOPES": "accounting.invoices accounting.contacts accounting.settings"
                }
            }
        }
    }
}

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",
            "XERO_SCOPES": "accounting.invoices accounting.contacts accounting.settings"
        }
    }
}

- List and search contacts— Retrieve contacts from Xero withlist-contactsor view contact groups vialist-contact-groups.
- Manage invoices and credit notes— Create, update, or list invoices and credit notes usingcreate-invoice,update-invoice,list-invoices, and the equivalent credit note tools.
- View financial reports— Pull a profit and loss report, balance sheet, trial balance, or aged receivables/payables by contact withlist-profit-and-loss,list-report-balance-sheet,list-trial-balance,list-aged-receivables-by-contact, andlist-aged-payables-by-contact.
- Handle bank transactions and payments— List, create, or update bank transactions and payments vialist-bank-transactions,create-bank-transaction,update-bank-transaction,list-payments, andcreate-payment.
- Work with payroll data— List employees, timesheets, and leave records; create, update, approve, or delete timesheets using thelist-payroll-*,create-payroll-timesheet, and related tools.
- Manage chart of accounts and items— List accounts withlist-accountsand create or update items viacreate-itemandupdate-item.

This is a Model Context Protocol (MCP) server implementation for Xero. It provides a bridge between the MCP protocol and Xero's API, allowing for standardized access to Xero's accounting and business features.

- Xero OAuth2 authentication with custom connections
- Contact management
- Chart of Accounts management
- Invoice creation and management
- MCP protocol compliance

- Node.js (v18 or higher)
- npm or pnpm
- A Xero developer account with API credentials

- Xero Public API Documentation
-
Xero API Explorer
-
Xero OpenAPI Specs
-
Xero-Node Public API SDK Docs
-
Developer Documentation

If you don't already have a Xero account and organisation already, can create one by signing uphereusing the free trial.

We recommend using a Demo Company to start with because it comes with some pre-loaded sample data. Once you are logged in, switch to it by using the top left-hand dropdown and selecting "Demo Company". You can reset the data on a Demo Company, or change the country, at any time by using the top left-hand dropdown and navigating toMy Xero.

NOTE: To use Payroll-specific queries, the region should be either NZ or UK.

There are 2 modes of authentication supported in the Xero MCP server:

This is a better choice for testing and development which allows you to specify client id and secrets for a specific organisation. It is also the recommended approach if you are integrating this into 3rd party MCP clients such as Claude Desktop.

Set up a Custom Connection following these instructions:https://developer.xero.com/documentation/guides/oauth2/custom-connections/

Custom connections require different scopes depending on when they were created.All scopes in the relevant list must be added to your custom connection:

Note:The MCP server automatically tries V1 scopes first and falls back to V2 if needed.

You can override these by setting theXERO_SCOPESenvironment variable to a space-separated list of scopes.

To add the MCP server to Claude go to Settings > Developer > Edit config and add the following to your claude_desktop_config.json file:

{ "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", "XERO_SCOPES": "accounting.invoices accounting.contacts accounting.settings" } } } }

TheXERO_SCOPESvariable is optional. If omitted, the default scopes listed above will be used.

NOTE: If you are usingNode Version Manager"command": "npx"section change it to be the full path to the executable, ie:your_home_directory/.nvm/versions/node/v22.14.0/bin/npxon Mac / Linux or"your_home_directory\\.nvm\\versions\\node\\v22.14.0\\bin\\npx"on Windows

This is a better choice if you are to support multiple Xero accounts at runtime and allow the MCP client to execute an auth flow (such as PKCE) as required. In this case, use the following configuration:

{ "mcpServers": { "xero": { "command": "npx", "args": ["-y", "@xeroapi/xero-mcp-server@latest"], "env": { "XERO_CLIENT_BEARER_TOKEN": "your_bearer_token" } } } }

NOTE: TheXERO_CLIENT_BEARER_TOKENwill take precedence over theXERO_CLIENT_IDif defined.

When obtaining a bearer token, you must request the appropriate scopes. The scopes you request should be:

Note:Some scopes are being deprecated in favour of more granular scopes. See theXero OAuth 2.0 Scopes documentationfor details on deprecation timelines.

accounting.transactions (Deprecated) accounting.transactions.read (Deprecated) accounting.invoices accounting.invoices.read accounting.payments accounting.payments.read accounting.banktransactions accounting.banktransactions.read accounting.manualjournals accounting.manualjournals.read accounting.reports.read (Deprecated) accounting.reports.aged.read accounting.reports.balancesheet.read accounting.reports.profitandloss.read accounting.reports.trialbalance.read accounting.contacts accounting.settings payroll.settings payroll.employees payroll.timesheets

- 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

For detailed API documentation, please refer to theMCP Protocol Specification.

# Using npm npm install # Using pnpm pnpm install
# Using npm npm run build # Using pnpm pnpm build

To link your Xero MCP server in development to Claude Desktop go to Settings > Developer > Edit config and add the following to yourclaude_desktop_config.jsonfile:

NOTE: For Windows ensure theargspath escapes the\between folders ie."C:\\projects\xero-mcp-server\\dist\\index.js"

{ "mcpServers": { "xero": { "command": "node", "args": ["insert-your-file-path-here/xero-mcp-server/dist/index.js"], "env": { "XERO_CLIENT_ID": "your_client_id_here", "XERO_CLIENT_SECRET": "your_client_secret_here" } } } }

Please do not commit your.envfile or any sensitive credentials to version control (it is included in.gitignoreas a safe default.)

Xero runs an official remote MCP server — connect over a hosted URL instead of installing this one locally.

A modern, API-first accounting platform built for the next generation of AI builders.

Interact with the freee accounting API to manage financial data and business operations.

AI-driven integration with the freee accounting service via the Model Context Protocol.

Interact with the Qonto Business API to manage finances, transactions, and account information using API credentials.

QuickBooks integration using OAuth2. Write operations disabled by default per integration. 550+ tools covering invoices, bills, reports, and inventory. Requires a DataGrout account.

Live MCP server connecting AI agents to 36+ business data sources. OAuth 2.1 PKCE.

An MCP (Model Context Protocol) server for the Papierkram.de accounting API. Enables AI assistants to manage invoices, expenses, contacts, projects, time tracking and more directly in your Papierkram account.

CLI and MCP server for the Qonto business banking API — manage transactions, invoices, clients, transfers, and more

Easily query & find Belgian company finances

US/HK markets — 110 tools: real-time quotes, options, orders, fundamentals, alerts, DCA & portfolio

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.

Videos about Xero

Relevant YouTube tutorials, setups, and demos