Xerovf.sr

listing.by · home.legend.verified

Read and create Xero accounting data: contacts, invoices, payments, payroll records and financial reports.

state.local.long (state.local.title)listing.badge.runs_withstate.key.long

listing.install

listing.local.explain

npx -y @xeroapi/xero-mcp-server@latest

listing.local.needs listing.local.note

  • XERO_CLIENT_ID Client ID of a Xero custom connection.
  • XERO_CLIENT_SECRET listing.env.secret Client secret of the custom connection (or set XERO_CLIENT_BEARER_TOKEN instead).

listing.share.h

listing.share.p_local

mcp.tc/i/xero

listing.about

Connects an assistant to the Xero accounting API. It can list accounts, contacts, invoices, credit notes, quotes, payments, bank transactions, manual journals and tax rates, and pull reports such as profit and loss, balance sheet, trial balance and aged receivables or payables. It can also create contacts, invoices, credit notes, quotes, payments, items, bank transactions and manual journals, and read payroll employees, leave and timesheets.

Runs locally over stdio with npx and Node.js 18 or higher. Authentication uses a Xero custom connection (XERO_CLIENT_ID and XERO_CLIENT_SECRET) or an existing OAuth bearer token (XERO_CLIENT_BEARER_TOKEN). Payroll queries need an NZ or UK organisation.

listing.can

  • List contacts, accounts, items, tax rates and tracking categories
  • List and create invoices, credit notes and quotes
  • List and create payments and bank transactions
  • Create manual journals
  • Run profit and loss, balance sheet and trial balance reports
  • Get aged receivables and payables by contact
  • Read payroll employees, leave balances and timesheets

listing.tools

listing.notools.key

listing.prompts

  • List all unpaid invoices in Xero from the last 30 days

  • Create an invoice for Acme Ltd for 10 hours of consulting

  • Show the profit and loss report for last quarter

  • Get aged receivables for the contact Bright Studio

listing.setup.h

listing.setup.local

Claude Code

  1. Run this in a terminal, in your project folder:
claude mcp add --transport stdio xero --env "XERO_CLIENT_ID=<YOUR_XERO_CLIENT_ID>" --env "XERO_CLIENT_SECRET=<YOUR_XERO_CLIENT_SECRET>" -- npx -y @xeroapi/xero-mcp-server@latest
  1. Start Claude Code and type /mcp. xero should show as connected.

Add --scope user to make it available in every project. Replace the placeholders with your own values.

Claude Desktop

  1. Open Settings → Developer → Edit Config. It opens claude_desktop_config.json. Add:
claude_desktop_config.json
{
  "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>"
      }
    }
  }
}
  1. Save the file and restart Claude Desktop. Replace the placeholders with your own values.

Needs Node.js on your computer. The file lives in ~/Library/Application Support/Claude/ on macOS and %APPDATA%\Claude\ on Windows.

Cursor

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):

mcp.json
{
  "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>"
      }
    }
  }
}

Needs Node.js on your computer. Replace the placeholders with your own values.

VS Code

Add it to .vscode/mcp.json. VS Code asks for the secret the first time and stores it securely:

.vscode/mcp.json
{
  "servers": {
    "xero": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@xeroapi/xero-mcp-server@latest"
      ],
      "env": {
        "XERO_CLIENT_ID": "<YOUR_XERO_CLIENT_ID>",
        "XERO_CLIENT_SECRET": "${input:xero-client-secret}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "xero-client-secret",
      "description": "XERO_CLIENT_SECRET",
      "password": true
    }
  ]
}

Needs Node.js on your computer.

Devin Desktop

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "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>"
      }
    }
  }
}
  1. Refresh the MCP server list in Cascade. Replace the placeholders with your own values.

Devin Desktop is the new name for Windsurf.

Codex

codex mcp add xero --env "XERO_CLIENT_ID=<YOUR_XERO_CLIENT_ID>" --env "XERO_CLIENT_SECRET=<YOUR_XERO_CLIENT_SECRET>" -- npx -y @xeroapi/xero-mcp-server@latest

Or edit ~/.codex/config.toml directly:

config.toml
[mcp_servers.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>" }

Needs Node.js on your computer. Replace the placeholders with your own values.

Gemini CLI

gemini mcp add -e "XERO_CLIENT_ID=<YOUR_XERO_CLIENT_ID>" -e "XERO_CLIENT_SECRET=<YOUR_XERO_CLIENT_SECRET>" xero npx -- -y @xeroapi/xero-mcp-server@latest

This adds it to the current project. Add -s user to use it everywhere.

Any client

Most clients that start local servers accept this shape:

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

Zed puts servers under context_servers in its settings, with the same command, args and env fields.

Needs Node.js on your computer. Replace the placeholders with your own values.

listing.faq

Can I paste mcp.tc/i/xero into my MCP client?

No. Xero runs on your own computer, started by your client, so it has no web address to connect to. The quick link is the page to share; the install command is npx -y @xeroapi/xero-mcp-server@latest.

Does Xero need an API key?

Yes. It reads XERO_CLIENT_ID and XERO_CLIENT_SECRET from its environment, and XERO_CLIENT_SECRET is a secret. Put the value in your client's config on your own machine, never in a shared file.

Is Xero a remote or a local server?

Local. Your client starts it as a process on your computer with npx -y @xeroapi/xero-mcp-server@latest, which needs Node.js.

What can Xero do?

You can list contacts, accounts, items, tax rates and tracking categories, list and create invoices, credit notes and quotes and list and create payments and bank transactions.

Which clients can use it?

Any client that starts local servers: Claude Code, Claude Desktop, Cursor, VS Code, Devin Desktop, Codex, Gemini CLI, Zed and others. claude.ai and ChatGPT only connect to remote servers.

Who wrote this page?

mcp.tc's robot read Xero's public metadata (its package and repository pages), and an AI model drafted the text from it. A person reviews anything the checks can't confirm. The text can still be wrong, so if you spot a mistake, use Report this listing on this page.

listing.em.h

listing.em.lead_local listing.em.how

listing.em.badge

em.prev_lightem.prev_dark
Markdown
[![Xero on mcp.tc](https://mcp.tc/i/xero/badge.svg)](https://mcp.tc/i/xero)
HTML
<a href="https://mcp.tc/i/xero"><img src="https://mcp.tc/i/xero/badge.svg" alt="Xero on mcp.tc" height="20"></a>

listing.em.badge_note

listing.em.widget

HTML
<script src="https://mcp.tc/w/xero.js" async></script>

listing.em.widget_note

iframe

HTML
<iframe src="https://mcp.tc/embed/xero" title="Xero on mcp.tc" width="420" height="200" loading="lazy" allow="clipboard-write" style="border:0;border-radius:8px;max-width:100%"></iframe>

listing.em.iframe_note

JSON

listing.em.json_local

https://mcp.tc/i/xero.json

listing.em.fields

listing.disclaimer_checked