Xero

How to Connect Xero MCP to Claude Desktop

Add the official Xero MCP server to Claude Desktop with a Xero Custom Connection, Client ID, Client Secret, and Demo Company test.

Team Kipper · July 21, 2026 · 8 min read
On this page +

This guide covers one step: connecting the official Xero MCP server to Claude Desktop.

If you have not created and authorised a Xero Custom Connection yet, start with How to Set Up Xero MCP Server (Developer Guide). Come back once you have a Demo Company or eligible organisation connected, plus a Client ID, Client Secret, and the scopes you want Claude Desktop to use.

The first test here uses the Xero Demo Company and the read-only list-organisation-details tool.

What You Need

Finish the Xero-side setup before opening Claude Desktop:

  • Claude Desktop
  • Node.js and npm
  • A Xero Custom Connection
  • An authorised Xero Demo Company or eligible organisation
  • A Xero Client ID and Client Secret
  • The accounting.settings.read scope for the first test
Xero Developer modal for creating a new app, including the Custom connection option.
This is the Xero-side Custom Connection setup, not Claude Desktop. Claude uses the Client ID and Client Secret after this connection is authorised.
Xero Developer Custom Connection scope selector showing Accounting API scopes.
Select scopes in Xero Developer deliberately before opening Claude Desktop, then mirror the approved scope list in the Claude config.

Step 1: Open Claude Desktop Settings

Claude Desktop reads local MCP servers from claude_desktop_config.json. Let the app open the file for you: SettingsDeveloperEdit Config.

In the Developer settings screen, the local MCP server panel shows the Edit Config button.

Claude Desktop Developer settings showing the Local MCP servers panel and Edit Config button.
Settings → Developer → Edit Config opens the local MCP configuration file.

If you need to find the file directly:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Success check: claude_desktop_config.json opens in your editor.

Step 2: Add the Xero MCP Server

Add the xero server inside the top-level mcpServers object.

{
  "mcpServers": {
    "xero": {
      "command": "npx",
      "args": ["-y", "@xeroapi/xero-mcp-server@latest"],
      "env": {
        "XERO_CLIENT_ID": "YOUR_XERO_CLIENT_ID",
        "XERO_CLIENT_SECRET": "YOUR_XERO_CLIENT_SECRET",
        "XERO_SCOPES": "accounting.settings.read"
      }
    }
  }
}

YOUR_XERO_CLIENT_ID and YOUR_XERO_CLIENT_SECRET are placeholders. Replace them with the values from your authorised Xero Custom Connection.

Keep any existing MCP servers in the file. If the file already has an mcpServers object, merge xero into it instead of adding a second mcpServers key.

XERO_SCOPES must match the scopes authorised in Xero Developer. Start with accounting.settings.read for the read-only Demo Company test.

Success check: The JSON is valid and contains one xero entry under mcpServers.

Step 3: Restart Claude Desktop

Save the file, then fully quit Claude Desktop and reopen it. Closing the window is not enough; Claude needs a full restart to load the local MCP server.

Success check: Claude Desktop reopens without a configuration error.

Step 4: Confirm the Xero Tools Are Available

After restart, return to SettingsDeveloper. Claude should show the xero local MCP server as running.

Claude Desktop Developer settings showing the xero MCP server running with the Xero package arguments.
The running badge confirms Claude Desktop launched the Xero MCP server.

Then open a new chat and check the tools or connectors menu. Look for Xero tools such as:

list-organisation-details
list-accounts
list-contacts
list-invoices

Success check: Claude Desktop shows Xero tools from the xero MCP server.

Step 5: Test the Xero Connection

Ask Claude to call one read-only tool first:

Use the Xero MCP server and call only the read-only
list-organisation-details tool.

Return the organisation name, country, and base currency.
Do not create or update any Xero records.

A successful response should include the authorised organisation:

Organisation name: Demo Company (Global)
Country: <Demo Company country>
Base currency: <Demo Company currency>

Success check: Claude returns the expected Demo Company or authorised Xero organisation.

Example Xero MCP Prompts for Claude

The first organisation-details test above is the safest connection check. After it works, ask Claude for read-only data using prompts like these.

Count all invoices

This requires accounting.invoices.read to be authorised in Xero Developer and included in XERO_SCOPES.

Use only the Xero MCP server.

Call the read-only list-invoices tool.

Retrieve every available page of invoices and report:

- total invoice count
- counts by status
- sales invoices versus bills where available
- total amount invoiced
- total amount paid
- total amount outstanding

Do not create or modify any Xero records.

Find open and overdue invoices

Use this after invoice read access is working.

Use only the Xero MCP server.

Call the available read-only invoice tools.

Find all open and overdue invoices.

Report:

- invoice number
- contact
- invoice date
- due date
- status
- currency
- total
- amount paid
- amount due

Sort overdue invoices from oldest to newest.
Do not create or modify any records.

List accounts

Make sure the matching read scope is authorised in Xero Developer and included in XERO_SCOPES.

Use only the Xero MCP server.

Call the read-only list-accounts tool.

Group the accounts by account type and report:

- account name
- account code
- account type
- status
- tax type where available

Do not create or update any accounts.

List contacts

The contact details returned depend on the authorised scopes and the connected organisation’s data.

Use only the Xero MCP server.

Call the read-only list-contacts tool.

Report:

- total contact count
- customers and suppliers where identifiable
- contact name
- email address where available
- account number where available
- contact status

Show the 20 most recently updated contacts if update dates are available.
Do not create or update any contacts.

Retrieve a financial report

The official Xero MCP server exposes list-profit-and-loss for profit and loss reporting. Make sure the matching read scope is authorised in Xero Developer and included in XERO_SCOPES.

Use only the Xero MCP server.

Call the read-only list-profit-and-loss tool.

Return the profit and loss report for the current financial year.

Summarise:

- total income
- cost of sales
- gross profit
- operating expenses
- net profit

State the report date range and currency.
Do not create or modify any Xero records.

Retrieve as much read-only data as possible

The result depends on the scopes authorised for the Custom Connection.

Use only the Xero MCP server.

First call list-organisation-details and confirm the connected organisation.

Then inspect the available Xero MCP tools and run every authorised read-only listing or reporting tool.

Retrieve all available pages.

For each data type, report:

- total records retrieved
- counts by status or type
- useful financial totals
- date range covered
- the most recent records
- overdue or incomplete records
- the MCP tool used
- any scope, permission, pagination, or API limitation

Do not create, update, approve, pay, or delete any Xero records.

Diagnose a failed setup

Use this prompt to collect useful failure details without running write-capable tools.

Use only the Xero MCP server.

First check whether list-organisation-details is available.

If it fails, return:

- the MCP tool name
- the exact error message
- whether the failure appears related to authentication, scopes, tool discovery, or the connected organisation

Do not retry write-capable tools.
Do not create or update any records.

Common Xero MCP and Claude Desktop Errors

ProblemWhat to check
Claude does not show the Xero toolsFully quit and reopen Claude Desktop, then confirm xero is inside the existing mcpServers object.
Claude cannot find npxRun which npx on macOS or Linux, then use that absolute path as the command value.
The Claude configuration contains invalid JSONCheck commas, braces, quotes, and duplicate mcpServers keys.
invalid_clientCopy the current Client ID and Client Secret from the correct Xero Custom Connection. Rotate the secret first if it was exposed.
invalid_scopeConfirm XERO_SCOPES matches the scopes authorised in Xero Developer. Separate multiple scopes with spaces.
The wrong Xero organisation is returnedConfirm the Custom Connection was authorised for the intended Demo Company or organisation.

Xero MCP With Claude Desktop FAQ

Does Xero MCP work with Claude Desktop?

Yes. Claude Desktop can start the official Xero MCP server locally with npx and use the tools exposed by that server.

Can I test Xero MCP with the Demo Company?

Yes. Use the Demo Company for the first test because it contains fictional accounting data.

Where do I enter the Xero Client ID and Client Secret?

Put them in the env block for the xero MCP server in claude_desktop_config.json.

Can I connect a real Xero organisation?

Yes. Test with the Demo Company first. A real organisation may require suitable permissions, careful scope review, and Custom Connection entitlement.

A Managed Xero MCP Option for Teams

The local Claude Desktop setup works well for one technical user.

For a team, every computer needs its own config, credentials, updates, and troubleshooting. A hosted connection can be easier to manage when several people need access.

Kipper is one managed option for teams that want a centrally managed Xero MCP connection with controlled access and audit logging.

Learn more about a hosted Xero MCP connector for finance teams.

Ask your finance data anything.

Kipper connects NetSuite, QuickBooks, and Xero to the tools your team already uses. Free for 14 days.