mcpField
X
Xero

Xero

Local
github.com/mindstoneFinance13Updated today

About Xero

Xero is an MCP server that connects MCP hosts to Xero accounting data and actions. It supports OAuth2 and bearer-token authentication, with tools for managing records and retrieving financial reports.

Key features

  1. 01OAuth2 and bearer-token authentication
  2. 02Manage contacts and chart of accounts
  3. 03Create and update invoices
  4. 04Manage payments, quotes, and credit notes
  5. 05Retrieve financial and payroll reports

Use cases

  1. 01Review invoices, payments, and account balances
  2. 02Create contacts, invoices, or quotes in Xero
  3. 03Retrieve profit-and-loss and balance-sheet reports

MCP support

Exposes Xero accounting and business operations as tools to MCP clients, including record management and financial report retrieval.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"mindstone-mcp-server-xero": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-xero"
],
"env": {
"XERO_CLIENT_ID": "<XERO_CLIENT_ID>",
"XERO_CLIENT_SECRET": "<XERO_CLIENT_SECRET>",
"XERO_CLIENT_BEARER_TOKEN": "<XERO_CLIENT_BEARER_TOKEN>"
}
}
}
}
Run commandnpx -y @mindstone/mcp-server-xero
Environment variables to set
XERO_CLIENT_IDSecretXero Custom Connection client ID.
XERO_CLIENT_SECRETSecretXero Custom Connection client secret.
XERO_CLIENT_BEARER_TOKENSecretOptional externally-managed Xero bearer token. When set, this takes precedence over the Custom Connection client credentials.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@mindstone/mcp-server-xero0.1.1

Tools

70

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
timesheetIDstringYesThe ID of the timesheet to delete.

Details

From the project README

Xero MCP Server

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.

Provenance

This package is Mindstone's maintained build of Xero's community Xero MCP server, announced on the Xero Developer Blog and developed upstream at XeroAPI/xero-mcp-server. It adds improvements and hardening by Mindstone on top of the upstream project.

One-click install

Add to Cursor Add to VS Code Add to VS Code Insiders

After clicking the button, your host will prompt you to fill: XERO_CLIENT_ID, XERO_CLIENT_SECRET, XERO_CLIENT_BEARER_TOKEN.

Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (Xero)
{
  "mcpServers": {
    "Xero": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-xero"
      ],
      "env": {
        "XERO_CLIENT_ID": "",
        "XERO_CLIENT_SECRET": "",
        "XERO_CLIENT_BEARER_TOKEN": ""
      }
    }
  }
}

Features

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

Prerequisites

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

Docs and Links

Setup

Create a Xero Account

If you don't already have a Xero account and organisation already, can create one by signing up here using 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 to My Xero.

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

Authentication

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

1. Custom Connections

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.

Configuring your Xero Developer account

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

Currently the following scopes are required for Custom Connection sessions: scopes

Integrating the MCP server with Claude Desktop

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", "@mindstone/mcp-server-xero@latest"],
      "env": {
        "XERO_CLIENT_ID": "your_client_id_here",
        "XERO_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

NOTE: If you are using Node 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/npx on Mac / Linux or "your_home_directory\\.nvm\\versions\\node\\v22.14.0\\bin\\npx" on Windows

2. Bearer Token

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", "@mindstone/mcp-server-xero@latest"],
      "env": {
        "XERO_CLIENT_BEARER_TOKEN": "your_bearer_token"
      }
    }
  }
}

NOTE: The XERO_CLIENT_BEARER_TOKEN will take precedence over the XERO_CLIENT_ID if defined.

Available MCP Commands

Tool naming: this connector's tools use unprefixed dash-case names (e.g. list-invoices, create-contact), inherited from its fork lineage. Sibling connectors use prefixed snake_case names (e.g. list_quickbooks_invoices). In multi-server hosts, unprefixed generic names can collide with other servers' tools. Renaming would be a breaking change for existing configurations, so the names are kept as-is; if your host supports namespacing/aliasing, prefer enabling it for this server.

  • 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-organisation-details: Retrieve details about an organisation
  • list-profit-and-loss: Retrieve a profit and loss report
  • list-bank-summary: Retrieve the bank summary report (per-account balances and movements)
  • list-budget-summary: Retrieve the budget summary report (budget vs actuals)
  • list-executive-summary: Retrieve the executive summary report (key financial metrics snapshot)
  • 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-profit-and-loss: Retrieve a profit and loss 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 avaliable leave types in Xero Payroll
  • 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-currencies: Retrieve currencies enabled in the connected Xero organisation
  • list-invoice-attachments: Retrieve files attached to a Xero invoice
  • list-purchase-orders: Retrieve a list of purchase orders
  • create-contact: Create a new contact
  • create-credit-note: Create a new credit note
  • create-invoice: Create a new invoice. Supports optional currencyCode, such as USD, when that currency is enabled in the connected Xero organisation.
  • create-payment: Create a new payment
  • create-quote: Create a new quote
  • create-purchase-order: Create a new purchase order
  • create-credit-note: Create a new credit note
  • create-payroll-timesheet: Create a new Payroll Timesheet
  • update-contact: Update an existing contact
  • update-invoice: Update an existing draft invoice. Supports optional currencyCode, such as USD, when that currency is enabled in the connected Xero organisation.
  • update-quote: Update an existing draft quote
  • update-credit-note: Update an existing draft credit note
  • get-invoice-history: Retrieve the history records for an invoice
  • add-invoice-note: Add an immutable note to an invoice history
  • get-contact-history: Retrieve the history records for a contact
  • add-contact-note: Add an immutable note to a contact history
  • get-credit-note-history: Retrieve the history records for a credit note
  • add-credit-note-note: Add an immutable note to a credit note history
  • get-bank-transaction-history: Retrieve the history records for a bank transaction
  • add-bank-transaction-note: Add an immutable note to a bank transaction history
  • get-quote-history: Retrieve the history records for a quote
  • add-quote-note: Add an immutable note to a quote history
  • 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
  • email-invoice: Email a copy of an AUTHORISED invoice to its related contact

For detailed API documentation, please refer to the MCP Protocol Specification.

For Developers

Installation
# Using npm
npm install

# Using pnpm
pnpm install
Run a build
# Using npm
npm run build

# Using pnpm
pnpm build
Integrating with Claude Desktop

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

NOTE: For Windows ensure the args path 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"
      }
    }
  }
}

License

MIT

Security

Please do not commit your .env file or any sensitive credentials to version control (it is included in .gitignore as a safe default.)

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.