Connects Claude to the Xero Accounting API for managing customers, suppliers, invoices, payments, and pulling financial reports. You get domain-organized tools for contacts, invoices, payments, accounts, and reports including P&L, balance sheet, and aged receivables. Supports both stdio for local Claude Desktop use and HTTP mode for multi-tenant deployments. Ships with gateway mode that accepts per-request credentials via headers, useful if you're building a proxy that handles OAuth tokens for multiple Xero organizations. Requires a Xero developer account and OAuth2 credentials. Reach for this when you need Claude to read or write accounting data directly instead of exporting CSV files.
Public tool metadata for what this MCP can expose to an agent.
XERO_CREATE_BANK_TRANSACTIONCreate a bank transaction in Xero. Use SPEND for payments out or RECEIVE for money received.9 paramsCreate a bank transaction in Xero. Use SPEND for payments out or RECEIVE for money received.
DatestringTypestringStatusstringContactIDstringLineItemsarrayReferencestringtenant_idstringCurrencyCodestringBankAccountCodestringXERO_CREATE_CONTACTCreate a new contact in Xero. Contacts can be customers, suppliers, or both.14 paramsCreate a new contact in Xero. Contacts can be customers, suppliers, or both.
NamestringWebsitestringLastNamestringFirstNamestringTaxNumberstringtenant_idstringIsCustomerbooleanIsSupplierbooleanEmailAddressstringphone_numberstringAccountNumberstringmobile_numberstringDefaultCurrencystringBankAccountDetailsstringXERO_CREATE_INVOICECreate a new invoice in Xero. Supports both sales invoices (ACCREC) and bills (ACCPAY).10 paramsCreate a new invoice in Xero. Supports both sales invoices (ACCREC) and bills (ACCPAY).
DatestringTypestringStatusstringDueDatestringContactIDstringLineItemsarrayReferencestringtenant_idstringCurrencyCodestringInvoiceNumberstringXERO_CREATE_ITEMCreate an inventory item in Xero. Items can be tracked for sales and/or purchases.9 paramsCreate an inventory item in Xero. Items can be tracked for sales and/or purchases.
CodestringNamestringIsSoldbooleantenant_idstringIsPurchasedbooleanSalesDetails.UnitPricenumberSalesDetails.AccountCodestringPurchaseDetails.UnitPricenumberPurchaseDetails.AccountCodestringXERO_CREATE_PAYMENTCreate a payment in Xero to link an invoice with a bank account transaction.7 paramsCreate a payment in Xero to link an invoice with a bank account transaction.
DatestringAmountnumberAccountIDstringInvoiceIDstringReferencestringtenant_idstringCurrencyRatenumberXERO_CREATE_PURCHASE_ORDERCreate a purchase order in Xero to order goods/services from suppliers.7 paramsCreate a purchase order in Xero to order goods/services from suppliers.
DatestringStatusstringContactIDstringLineItemsarrayReferencestringtenant_idstringDeliveryDatestringXERO_GET_ACCOUNTRetrieve a specific account from the chart of accounts by ID. Returns account code, name, type, and settings.2 paramsRetrieve a specific account from the chart of accounts by ID. Returns account code, name, type, and settings.
tenant_idstringaccount_idstringXERO_GET_ASSETRetrieve a specific asset by ID from Xero. Returns depreciation details and book value.2 paramsRetrieve a specific asset by ID from Xero. Returns depreciation details and book value.
asset_idstringtenant_idstringXERO_GET_BALANCE_SHEET_REPORTRetrieve Balance Sheet report from Xero. Shows assets, liabilities, and equity at a specific date.7 paramsRetrieve Balance Sheet report from Xero. Shows assets, liabilities, and equity at a specific date.
datestringperiodsintegertenant_idstringtimeframestringpaymentsOnlybooleanstandardLayoutbooleantrackingOptionIDstringXERO_GET_BUDGETRetrieve a budget from Xero. Budgets track planned vs actual spending by account.4 paramsRetrieve a budget from Xero. Budgets track planned vs actual spending by account.
DateTostringDateFromstringbudget_idstringtenant_idstringXERO_GET_CONNECTIONSTool to list active Xero connections. Use when you need to retrieve all current tenant connections for the authenticated user.Tool to list active Xero connections. Use when you need to retrieve all current tenant connections for the authenticated user.
No parameter schema in public metadata yet.
XERO_GET_CONTACTRetrieve a specific contact by ID from Xero. Returns full contact details including addresses and phone numbers.2 paramsRetrieve a specific contact by ID from Xero. Returns full contact details including addresses and phone numbers.
tenant_idstringcontact_idstringXERO_GET_CONTACTSTool to retrieve a list of contacts. Use when you need up-to-date contact information with filtering, paging, or incremental updates.10 paramsTool to retrieve a list of contacts. Use when you need up-to-date contact information with filtering, paging, or incremental updates.
IDsarraypageintegerorderstringwherestringpageSizeintegerContactIDstringsearchTermstringsummaryOnlybooleanincludeArchivedbooleanIf-Modified-SincestringXERO_GET_INVOICERetrieve a specific invoice by ID from Xero. Returns full invoice details including line items and status.3 paramsRetrieve a specific invoice by ID from Xero. Returns full invoice details including line items and status.
unitdpintegertenant_idstringinvoice_idstringXERO_GET_ITEMRetrieve a specific item by ID from Xero. Returns item code, name, pricing, and tax details.2 paramsRetrieve a specific item by ID from Xero. Returns item code, name, pricing, and tax details.
item_idstringtenant_idstringXERO_GET_MANUAL_JOURNALRetrieve a specific manual journal by ID from Xero. Returns full details including journal lines.2 paramsRetrieve a specific manual journal by ID from Xero. Returns full details including journal lines.
tenant_idstringmanual_journal_idstringXERO_GET_ORGANISATIONRetrieve organisation details from Xero. Returns company info, base currency, timezone, financial year settings, etc.1 paramsRetrieve organisation details from Xero. Returns company info, base currency, timezone, financial year settings, etc.
tenant_idstringXERO_GET_PROFIT_LOSS_REPORTRetrieve Profit & Loss report from Xero. Shows income, expenses, and net profit for a specified period.11 paramsRetrieve Profit & Loss report from Xero. Shows income, expenses, and net profit for a specified period.
toDatestringperiodsintegerfromDatestringtenant_idstringtimeframestringpaymentsOnlybooleanstandardLayoutbooleantrackingOptionIDstringtrackingOptionID2stringtrackingCategoryIDstringtrackingCategoryID2stringXERO_GET_PROJECTRetrieve a specific project by ID from Xero. Returns project details, deadlines, and status.2 paramsRetrieve a specific project by ID from Xero. Returns project details, deadlines, and status.
tenant_idstringproject_idstringXERO_GET_PURCHASE_ORDERRetrieve a specific purchase order by ID from Xero. Returns full details including line items and status.2 paramsRetrieve a specific purchase order by ID from Xero. Returns full details including line items and status.
tenant_idstringpurchase_order_idstringXERO_GET_QUOTESTool to retrieve a list of quotes. Use when you need to list, filter, or page through sales quotes. Use after obtaining the tenant ID via connections.11 paramsTool to retrieve a list of quotes. Use when you need to list, filter, or page through sales quotes. Use after obtaining the tenant ID via connections.
pageintegerorderstringDateTostringStatusstringDateFromstringContactIDstringtenant_idstringQuoteNumberstringExpiryDateTostringExpiryDateFromstringIf-Modified-SincestringXERO_LIST_ACCOUNTSRetrieve chart of accounts from Xero. Returns all accounting codes used for categorizing transactions.3 paramsRetrieve chart of accounts from Xero. Returns all accounting codes used for categorizing transactions.
orderstringwherestringtenant_idstringXERO_LIST_ASSETSRetrieve fixed assets from Xero. Assets track depreciation and book value of capital equipment.6 paramsRetrieve fixed assets from Xero. Assets track depreciation and book value of capital equipment.
pageintegerstatusstringorderBystringpageSizeintegertenant_idstringsortDirectionstringXERO_LIST_ATTACHMENTSList all attachments for a specific entity in Xero (invoice, contact, etc.).3 paramsList all attachments for a specific entity in Xero (invoice, contact, etc.).
entity_idstringtenant_idstringentity_typestringXERO_LIST_BANK_TRANSACTIONSRetrieve bank transactions from Xero. Includes spend (payments) and receive (receipts) transactions.6 paramsRetrieve bank transactions from Xero. Includes spend (payments) and receive (receipts) transactions.
pageintegerorderstringwherestringunitdpintegertenant_idstringIf-Modified-SincestringXERO_LIST_CREDIT_NOTESRetrieve list of credit notes from Xero. Credit notes are issued to reduce amounts owed by customers.5 paramsRetrieve list of credit notes from Xero. Credit notes are issued to reduce amounts owed by customers.
pageintegerorderstringwherestringtenant_idstringIf-Modified-SincestringXERO_LIST_FILESRetrieve files from Xero Files. Lists documents stored in Xero's file management system.5 paramsRetrieve files from Xero Files. Lists documents stored in Xero's file management system.
pageintegersortstringfolderIdstringpagesizeintegertenant_idstringXERO_LIST_FOLDERSRetrieve folders from Xero Files. Lists document folders in Xero's file management system.2 paramsRetrieve folders from Xero Files. Lists document folders in Xero's file management system.
sortstringtenant_idstringXERO_LIST_INVOICESRetrieve a list of invoices from Xero. Supports filtering by status, contact, date range, and pagination.10 paramsRetrieve a list of invoices from Xero. Supports filtering by status, contact, date range, and pagination.
pageintegerorderstringwherestringStatusesstringtenant_idstringContactIDsstringInvoiceIDsstringcreatedByMyAppbooleanincludeArchivedbooleanIf-Modified-SincestringXERO_LIST_ITEMSRetrieve items (inventory/products) from Xero. Items can be tracked for sales and/or purchases.4 paramsRetrieve items (inventory/products) from Xero. Items can be tracked for sales and/or purchases.
orderstringwherestringunitdpintegertenant_idstringXERO_LIST_JOURNALSRetrieve journals from Xero. Journals show the accounting entries for all transactions.4 paramsRetrieve journals from Xero. Journals show the accounting entries for all transactions.
offsetintegertenant_idstringpaymentsOnlybooleanIf-Modified-SincestringXERO_LIST_MANUAL_JOURNALSRetrieve manual journals from Xero. Manual journals are used for period-end adjustments and corrections.5 paramsRetrieve manual journals from Xero. Manual journals are used for period-end adjustments and corrections.
pageintegerorderstringwherestringtenant_idstringIf-Modified-SincestringXERO_LIST_PAYMENTSRetrieve list of payments from Xero. Payments link invoices to bank transactions.5 paramsRetrieve list of payments from Xero. Payments link invoices to bank transactions.
pageintegerorderstringwherestringtenant_idstringIf-Modified-SincestringXERO_LIST_PROJECTSRetrieve projects from Xero. Projects track time and costs for client work.6 paramsRetrieve projects from Xero. Projects track time and costs for client work.
pageintegerstatesstringpageSizeintegercontactIDstringtenant_idstringprojectIdsstringXERO_LIST_PURCHASE_ORDERSRetrieve list of purchase orders from Xero. Purchase orders track goods/services ordered from suppliers.7 paramsRetrieve list of purchase orders from Xero. Purchase orders track goods/services ordered from suppliers.
pageintegerorderstringDateTostringStatusstringDateFromstringtenant_idstringIf-Modified-SincestringXERO_LIST_TAX_RATESRetrieve tax rates from Xero. Shows available tax codes and rates for the organization.4 paramsRetrieve tax rates from Xero. Shows available tax codes and rates for the organization.
orderstringwherestringTaxTypestringtenant_idstringXERO_LIST_TRACKING_CATEGORIESRetrieve tracking categories from Xero. Tracking categories are used to segment data for reporting (e.g., departments, regions).4 paramsRetrieve tracking categories from Xero. Tracking categories are used to segment data for reporting (e.g., departments, regions).
orderstringwherestringtenant_idstringincludeArchivedbooleanXERO_POST_INVOICE_UPDATETool to update an existing invoice. Use when you need to modify the details of an invoice after it's been created.4 paramsTool to update an existing invoice. Use when you need to modify the details of an invoice after it's been created.
unitdpintegerInvoicesarrayInvoiceIDstringInvoiceNumberstringXERO_UPDATE_CONTACTUpdate an existing contact in Xero. Only provided fields will be updated.12 paramsUpdate an existing contact in Xero. Only provided fields will be updated.
NamestringLastNamestringFirstNamestringTaxNumberstringtenant_idstringcontact_idstringEmailAddressstringphone_numberstringAccountNumberstringmobile_numberstringDefaultCurrencystringBankAccountDetailsstringXERO_UPLOAD_ATTACHMENTUpload a file attachment to a Xero entity (invoice, contact, etc.). Supports PDF, images, and documents.6 paramsUpload a file attachment to a Xero entity (invoice, contact, etc.). Supports PDF, images, and documents.
filenamestringentity_idstringtenant_idstringentity_typestringfile_to_uploadstringinclude_onlinebooleanModel Context Protocol (MCP) server for the Xero Accounting API. Enables Claude and other MCP-compatible clients to manage Xero contacts, invoices, payments, accounts, and reports.
Note on registry auth: This server depends only on public npm packages, so the Cloudflare and DigitalOcean cloud builders install its dependencies anonymously — no token is required for one-click deploy. (If a future release adds a private
@wyre-technology/*dependency, you would supply a GitHub PAT withread:packagesas a build variable —NODE_AUTH_TOKENfor Cloudflare Workers, a build-timeGITHUB_TOKENsecret for DigitalOcean.)Installing the published package: The released package is published to the GitHub Packages npm registry, which requires authentication on every install (even for public packages). To install it, authenticate npm to
npm.pkg.github.comwith a GitHub PAT that hasread:packages:export NODE_AUTH_TOKEN=$(gh auth token) npm install @wyre-technology/xero-mcp
npm install
npm run build
XERO_ACCESS_TOKEN=your-access-token XERO_TENANT_ID=your-tenant-id npm start
MCP_TRANSPORT=http XERO_ACCESS_TOKEN=your-access-token XERO_TENANT_ID=your-tenant-id npm start
The server listens on http://0.0.0.0:8080/mcp by default.
docker build -t xero-mcp .
docker run -p 8080:8080 \
-e MCP_TRANSPORT=http \
-e XERO_ACCESS_TOKEN=your-access-token \
-e XERO_TENANT_ID=your-tenant-id \
xero-mcp
| Variable | Required | Default | Description |
|---|---|---|---|
XERO_ACCESS_TOKEN | Yes (env mode) | — | Xero OAuth2 access token |
XERO_TENANT_ID | Yes (env mode) | — | Xero tenant ID (organisation) |
MCP_TRANSPORT | No | stdio | Transport type: stdio or http |
MCP_HTTP_PORT | No | 8080 | HTTP server port |
MCP_HTTP_HOST | No | 0.0.0.0 | HTTP server bind address |
AUTH_MODE | No | env | Auth mode: env or gateway |
When AUTH_MODE=gateway, credentials are passed per-request via HTTP headers instead of environment variables:
X-Xero-Access-Token — OAuth2 access tokenX-Xero-Tenant-Id — Xero tenant IDThis allows a gateway/proxy to manage multi-tenant credentials.
Tools are organized into domains. Use xero_navigate to select a domain, then use the domain-specific tools.
xero_navigate — Select a domain (contacts, invoices, payments, accounts, reports)xero_back — Return to domain selectionxero_contacts_list — List contacts with pagination and optional filteringxero_contacts_get — Get detailed contact information by IDxero_contacts_create — Create a new contact (customer or supplier)xero_contacts_search — Search contacts by namexero_invoices_list — List invoices with optional status and type filtersxero_invoices_get — Get detailed invoice information by IDxero_invoices_create — Create a new invoice (sales or bill)xero_invoices_update_status — Update invoice status (submit, authorise, void)xero_payments_list — List payments with optional status filterxero_payments_get — Get detailed payment information by IDxero_payments_create — Record a payment against an invoicexero_accounts_list — List chart of accounts with optional type/class filterxero_accounts_get — Get detailed account information by IDxero_reports_profit_and_loss — Profit and Loss (income statement) for a date rangexero_reports_balance_sheet — Balance Sheet as of a specific datexero_reports_aged_receivables — Aged Receivables by contactxero_reports_aged_payables — Aged Payables by contactApache-2.0
XERO_TENANT_ID*Xero tenant ID (organisation). Required when AUTH_MODE is 'env'.
XERO_ACCESS_TOKEN*secretXero OAuth2 access token. Required when AUTH_MODE is 'env'.
MCP_TRANSPORTdefault: stdioTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODEdefault: envCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELdefault: infoLog verbosity: debug, info, warn, error
io.github.shelvick/shopify-subscription-reconciliation
zleventer/google-ads-mcp
csoai-org/meok-stripe-acp-checkout-mcp
io.github.mharnett/google-ads
csoai-org/stripe-billing-mcp
co.pipeboard/google-ads-mcp