← Back to directory
X

Xero MCP Server

Official
An MCP server that bridges Xero's accounting and business data to the MCP protocol.
GitHub source repository ↗
★ 355 Stars Category · Other Popular Source revision f24583c867df
49FMRS · D
Reliability
7/20
Security and permissions
6/20
Maintenance
14/20
Documentation
12/20
Setup experience
10/20

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.

Read the FMRS scoring method →

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.

Tools

list-accounts
Retrieve a list of accounts
list-contacts
Retrieve a list of contacts
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 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 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 a new line on an existing payroll timesheet
delete-payroll-timesheet
Delete an existing payroll timesheet
get-payroll-timesheet
Retrieve an existing payroll timesheet

Setup

  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"
      }
    }
  }
}

Fit and risk

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

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

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 DesktopFull support