by xeroapi
Xero enables seamless financial data integration and accounting operations via xero software and OAuth2 for automated wo
Connects to Xero's accounting API to manage financial data like contacts, invoices, and chart of accounts. Uses OAuth2 authentication to access Xero organizations.
Xero is an official MCP server published by xeroapi that provides AI assistants with tools and capabilities via the Model Context Protocol. Xero enables seamless financial data integration and accounting operations via xero software and OAuth2 for automated wo It is categorized under finance.
You can install Xero in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
MIT
Xero is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
Add new capabilities to Claude beyond text generation
Example
Access external data sources, execute code, interact with tools and services
Transform Claude from chatbot to action-taking agent
Provide Claude with access to relevant context and data
Example
Load project documentation, access knowledge bases, query databases
Get more accurate, context-aware responses
Automate multi-step workflows combining AI and external tools
Example
Research → Summarize → Create document → Send notification
Complete complex tasks end-to-end without manual steps
Share your MCP server with the developer community
We evaluated Xero against two servers with overlapping tools; this profile had the clearer scope statement.
Xero is among the better-indexed MCP projects we tried; the explainx.ai summary tracks the official description.
Xero is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.
Xero has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.
Strong directory entry: Xero surfaces stars and publisher context so we could sanity-check maintenance before adopting.
According to our notes, Xero benefits from clear Model Context Protocol framing — fewer ambiguous “AI plugin” claims.
Xero is among the better-indexed MCP projects we tried; the explainx.ai summary tracks the official description.
We evaluated Xero against two servers with overlapping tools; this profile had the clearer scope statement.
I recommend Xero for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.
Xero reduced integration guesswork — categories and install configs on the listing matched the upstream repo.
showing 1-10 of 45
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.
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.
There are 2 modes of authentication supported in the Xero MCP server:
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.
Set up a Custom Connection following these instructions: https://developer.xero.com/documentation/guides/oauth2/custom-connections/
Currently the following scopes are required for all sessions: scopes
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", "@xeroapi/xero-mcp-server@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\ ode\v22.14.0\bin\ px" on Windows
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", "@xeroapi/xero-mcp-server@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.
When obtaining a bearer token, you must request the appropriate scopes. The scopes you request should be:
Note: Some scopes are being deprecated in favour of more granular scopes. See the Xero OAuth 2.0 Scopes documentation for details on deprecation timelines.
accounting.transactions (Deprecated)
accounting.transactions.read (Deprecated)
accounting.invoices
accounting.invoices.read
accounting.payments
accounting.payments.read
accounting.banktransactions
accounting.banktransactions.read
accounting.manualjournals
accounting.manualjournals.read
accounting.reports.read (Deprecated)
accounting.reports.aged.read
accounting.reports.balancesheet.read
accounting.reports.profitandloss.read
accounting.reports.trialbalance.read
accounting.contacts
accounting.settings
payroll.settings
payroll.employees
payroll.timesheets
list-accounts: Retrieve a list of accountslist-contacts: Retrieve a list of contacts from Xerolist-credit-notes: Retrieve a list of credit noteslist-invoices: Retrieve a list of invoiceslist-items: Retrieve a list of itemslist-manual-journals: Retrieve a list of manual journalslist-organisation-details: Retrieve details about an organisationlist-profit-and-loss: Retrieve a profit and loss reportlist-quotes: Retrieve a list of quoteslist-tax-rates: Retrieve a list of tax rateslist-payments: Retrieve a list of paymentslist-trial-balance: Retrieve a trial balance reportlist-bank-transactions: Retrieve a list of bank account transactionslist-payroll-employees: Retrieve a list of Payroll Employeeslist-report-balance-sheet: Retrieve a balance sheet reportlist-payroll-employee-leave: Retrieve a Payroll Employee's leave recordslist-payroll-employee-leave-balances: Retrieve a Payroll Employee's leave balanceslist-payroll-employee-leave-types: Retrieve a list of Payroll leave typeslist-payroll-leave-periods: Retrieve a list of a Payroll Employee's leave periodslist-payroll-leave-types: Retrieve a list of all available leave types in Xero Payrolllist-timesheets: Retrieve a list of Payroll Timesheetslist-aged-receivables-by-contact: Retrieves aged receivables for a contactlist-aged-payables-by-contact: Retrieves aged payables for a contactlist-contact-groups: Retrieve a list of contact groupslist-tracking-categories: Retrieve a list of tracking categoriescreate-bank-transaction: Create a new bank transactioncreate-contact: Create a new contactcreate-credit-note: Create a new credit notecreate-invoice: Create a new invoicecreate-item: Create a new itemcreate-manual-journal: Create a new manual journalcreate-payment: Create a new paymentcreate-quote: Create a new quotecreate-payroll-timesheet: Create a new Payroll Timesheetcreate-tracking-category: Create a new tracking categorycreate-tracking-option: Create a new tracking optionupdate-bank-transaction: Update an existing bank transactionupdate-contact: Update an existing contactupdate-invoice: Update an existing draft invoiceupdate-item: Update an existing itemupdate-manual-journal: Update an existing manual journalupdate-quote: Update an existing draft quoteupdate-credit-note: Update an existing draft credit noteupdate-tracking-category: Update an existing tracking categoryupdate-tracking-options: Update tracking optionsupdate-payroll-timesheet-line: Update a line on an existing Payroll Timesheetapprove-payroll-timesheet: Approve a Payroll Timesheetrevert-payroll-timesheet: Revert an approved Payroll Timesheetadd-payroll-timesheet-line: Add new line on an existing Payroll Timesheetdelete-payroll-timesheet: Delete an existing Payroll Timesheetget-payroll-timesheet: Retrieve an existing Payroll TimesheetFor detailed API documentation, please refer to the MCP Protocol Specification.
# Using npm
npm install
# Using pnpm
pnpm install
# Using npm
npm run build
# Using pnpm
pnpm build
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"
}
}
}
}
MIT
Please do not commit your .env file or any sensitive credentials to version control (it is included in .gitignore as a safe default.)
Prerequisites
Time Estimate
15-60 minutes depending on server complexity
Steps
Troubleshooting
✓ Do
✗ Don't
💡 Pro Tips
Architecture
Model Context Protocol standardizes how AI hosts (Claude, Cursor) communicate with external tools and data sources through server implementations.
Protocols
Compatibility
✓ Use when
Use when you need Claude to access external data, execute actions, or integrate with tools. Best for extending AI capabilities beyond conversation.
✗ Avoid when
Avoid when native integrations exist (use official APIs directly), for real-time critical systems, or when security/compliance requires zero external dependencies.