← Back to directory
X

Xero MCP Server

Official
An MCP server that bridges Xero's accounting and business data to the MCP protocol.
Category
Other
Stars
★ 376 Popular
Transport
stdio (local process)
Runtime
Node.js 18+
Credentials
API key / credential required
License
MIT
Last commit
Tools
51
49FMRS · D

Xero MCP Server provides comprehensive access to accounting data via the MCP protocol. It is officially maintained, feature-rich, but requires careful configuration of permissions and security measures.

Strongest · Maintenance 14/20 Weakest · Security and permissions 6/20

Reliability
7/20
Security and permissions
6/20
Maintenance
14/20
Documentation
12/20
Setup experience
10/20
Why each score
Reliability 7/20
The source code shows the server defines a wide variety of tools covering accounting, contacts, invoices, etc., and follows the MCP protocol. However, there are no tests or CI workflows in the repository to verify the actual execution and error handling. Thus, the happy path seems plausible, but lack of test coverage and controlled error diagnostics lowers the score.
Security and permissions 6/20
The README suggests passing OAuth2 credentials via environment variables, and no hardcoded secrets were found. However, there is no explicit least-privilege guidance for the data access scopes, and the tool list includes many update and delete operations without any confirmation prompts mentioned. Furthermore, there is no disclosure of data flow or security best practices. Overall, main risks are visible but permission minimization and confirmation mechanisms are incomplete.
Maintenance 14/20
The repository is active with recent commits and releases, not archived, and has a clear MIT license. However, there are 159 open issues, which may indicate slower response times. Dependency update status is not evident from the source. Overall, maintenance is active but with minor gaps in governance and versioning.
Documentation 12/20
The README provides setup, authentication, and a list of tools, but lacks detailed parameter descriptions for each tool, troubleshooting guidance, and API limits. For instance, the input parameters for each tool are not individually described, and there are no example outputs or FAQs. Thus, documentation is usable but has hidden assumptions and troubleshooting gaps.
Setup experience 10/20
The README provides clear steps and configuration examples for running via npx and integrating with Claude Desktop. It specifies Node.js version requirements and environment variables. However, the Windows path escaping instructions may be slightly cumbersome, and there is no automated setup script. Overall, the setup is clear and few-step, but not fully automated. The score is capped due to lack of execution evidence.

Static review · not runListed 2026-08-07

Read the FMRS scoring method →

Fit and risk

What it can accessUses the networkChanges third-party account data

Best for

  • AI assistants that need to interact with Xero accounting data
  • Automation workflows for accounting and finance teams

Not for

  • Not suitable for high-frequency trading systems requiring real-time data sync
  • Not for non-Xero users

Required permissions

  • Requires authorization to access Xero accounting data, including invoices, contacts, bank transactions, payroll, etc.
  • Exact permissions depend on OAuth scopes, such as accounting.invoices, accounting.contacts, etc.

Risks and side effects

  • Sensitive financial data may be exposed or misused
  • Potential accidental modification or deletion of accounting records if misconfigured
  • Need to manage secure storage of OAuth tokens

Setup

Before you start

Runtime:Node.js 18+

XERO_CLIENT_SECRET optionalsecret Client secret of a Xero Custom Connection, obtained from the Xero developer portal; treat as a secret.
XERO_CLIENT_BEARER_TOKEN optionalsecret Bearer access token for multi-account runtime use; takes precedence over client id/secret if defined.
Other optional settings (2)
XERO_CLIENT_ID optional Client ID of a Xero Custom Connection, obtained from the Xero developer portal.
XERO_SCOPES optional Optional space-separated list of scopes overriding the defaults, e.g. accounting.invoices accounting.contacts.
  1. Create a Xero developer account and set up a Custom Connection to get client ID and secret.
  2. Ensure Node.js v18 or higher, and npm or pnpm installed.
  3. Configure the mcpServers in Claude Desktop using npx command with environment variables.
  4. Alternatively, use the Bearer Token method by setting XERO_CLIENT_BEARER_TOKEN.
claude_desktop_config.json
{
  "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"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "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"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add xero -e XERO_CLIENT_ID=your_client_id_here -e XERO_CLIENT_SECRET=your_client_secret_here -e 'XERO_SCOPES=accounting.invoices accounting.contacts accounting.settings' -- npx -y @xeroapi/xero-mcp-server@latest

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After adding the config in Claude Desktop, check that tools like list-contacts appear in the client's tool list, or ask the client to call list-organisation-details and confirm it returns organisation details.

Troubleshooting

  1. Ensure XERO_CLIENT_ID and XERO_CLIENT_SECRET are correctly set
  2. Check network connectivity to Xero API
  3. Verify OAuth scopes include required permissions
  4. Check server logs for error messages

Things to try

Once connected, you can ask your AI assistant things like:

  • List all contacts in my Xero organisation
  • Create a draft invoice for an existing contact
  • Show me the profit and loss report for this month
  • Create a new payroll timesheet and add a line of hours

Tools 51

list-accounts read-only
Retrieve a list of accounts
list-contacts read-only
Retrieve a list of contacts
list-credit-notes read-only
Retrieve a list of credit notes
list-invoices read-only
Retrieve a list of invoices
list-items read-only
Retrieve a list of items
list-manual-journals read-only
Retrieve a list of manual journals
list-organisation-details read-only
Retrieve details about an organisation
list-profit-and-loss read-only
Retrieve a profit and loss report
Show 43 more tools
list-quotes read-only
Retrieve a list of quotes
list-tax-rates read-only
Retrieve a list of tax rates
list-payments read-only
Retrieve a list of payments
list-trial-balance read-only
Retrieve a trial balance report
list-bank-transactions read-only
Retrieve a list of bank transactions
list-payroll-employees read-only
Retrieve a list of payroll employees
list-report-balance-sheet read-only
Retrieve a balance sheet report
list-payroll-employee-leave read-only
Retrieve a payroll employee's leave records
list-payroll-employee-leave-balances read-only
Retrieve a payroll employee's leave balances
list-payroll-employee-leave-types read-only
Retrieve a list of payroll leave types
list-payroll-leave-periods read-only
Retrieve a list of a payroll employee's leave periods
list-payroll-leave-types read-only
Retrieve a list of all available leave types in payroll
list-timesheets read-only
Retrieve a list of payroll timesheets
list-aged-receivables-by-contact read-only
Retrieves aged receivables for a contact
list-aged-payables-by-contact read-only
Retrieves aged payables for a contact
list-contact-groups read-only
Retrieve a list of contact groups
list-tracking-categories read-only
Retrieve a list of tracking categories
create-bank-transaction writes
Create a new bank transaction
create-contact writes
Create a new contact
create-credit-note writes
Create a new credit note
create-invoice writes
Create a new invoice
create-item writes
Create a new item
create-manual-journal writes
Create a new manual journal
create-payment writes
Create a new payment
create-quote writes
Create a new quote
create-payroll-timesheet writes
Create a new payroll timesheet
create-tracking-category writes
Create a new tracking category
create-tracking-option writes
Create a new tracking option
update-bank-transaction writes
Update an existing bank transaction
update-contact writes
Update an existing contact
update-invoice writes
Update an existing draft invoice
update-item writes
Update an existing item
update-manual-journal writes
Update an existing manual journal
update-quote writes
Update an existing draft quote
update-credit-note writes
Update an existing draft credit note
update-tracking-category writes
Update an existing tracking category
update-tracking-options writes
Update tracking options
update-payroll-timesheet-line writes
Update a line on an existing payroll timesheet
approve-payroll-timesheet writes
Approve a payroll timesheet
revert-payroll-timesheet writes
Revert an approved payroll timesheet
add-payroll-timesheet-line writes
Add a new line on an existing payroll timesheet
delete-payroll-timesheet destructive
Delete an existing payroll timesheet
get-payroll-timesheet read-only
Retrieve an existing payroll timesheet

Use cases

Query Xero data like customers, invoices, and accounts using natural language
Automate creation of invoices, contacts, bank transactions, etc.
Generate financial reports such as profit & loss, balance sheet, trial balance
Manage payroll and timesheets

Supported clients

Claude Desktop

Listed from the project's documentation, not tested by this site.

Overview

The Xero MCP Server is an implementation of the Model Context Protocol (MCP) for Xero. It provides a standardized way for MCP clients to access Xero's accounting and business features, including contact management, chart of accounts, invoices, and more. It supports OAuth2 authentication via custom connections or bearer tokens and offers a wide range of commands to query and create accounting data such as invoices, contacts, bank transactions, payroll, and financial reports.

Similar servers

Telegram MCP server powered by Telethon to let MCP clients read chats, manage groups, and send/modify messages, media, contacts, and settings.

★ 1.8k · Tools 76 Compare with this →

Source revision f24583c867df Data synced 2026-10-12 Read the FMRS scoring method