Skip to main content

Xero MCP Server

Project description

Xero MCP

A Model Context Protocol server that provides access to Xero's accounting API. This server enables LLMs to interact with Xero's financial data, reports, and accounting resources.

Installation and Setup

  1. Install Claude Desktop from the official website

  2. Install UV and uvx:

    # Install UV following the official guide
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # Install uvx using UV
    uv pip install uvx
    
  3. Find your uvx path by running:

    which uvx
    

    This will output something like:

    • Unix/macOS: /Users/<username>/.local/bin/uvx
    • Windows: Run where uvx instead
  4. Get Xero API Credentials:

    • Go to Xero Developer Portal
    • Create a new app
    • Set redirect URI to: http://localhost:8000/callback
    • Copy Client ID and Client Secret
  5. Configure Claude Desktop:

    • Open your claude_desktop_config.json
    • Add the following to the "mcpServers" section, replacing the command value with your uvx path from step 3:
{
  "mcpServers": {
    "Xero App": {
      "command": "YOUR_UVX_PATH_HERE",
      "args": [
        "xero-mcp"
      ],
      "env": {
        "XERO_CLIENT_ID": "your_client_id",
        "XERO_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

For example, if which uvx returned /Users/username/.local/bin/uvx, your config would look like:

{
  "mcpServers": {
    "Xero App": {
      "command": "/Users/username/.local/bin/uvx",
      "args": [
        "--from",
        "git+https://github.com/semicolonio/xero-mcp.git",
        "xero-mcp"
      ],
      "env": {
        "XERO_CLIENT_ID": "your_client_id",
        "XERO_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Note: Replace your_client_id and your_client_secret with your Xero API credentials

Authentication

The server handles OAuth2 authentication automatically:

  1. On first use, it opens your browser
  2. Log in to your Xero account
  3. Grant requested permissions
  4. Tokens are securely stored and auto-refreshed

Components

Tools

Financial Reports

  • xero_get_balance_sheet

    • Retrieve balance sheet report with assets, liabilities, and equity
    • Input: date (string): Report date in YYYY-MM-DD format
    • Optional: periods, timeframe, tracking_options
  • xero_get_profit_and_loss

    • Retrieve profit and loss statement
    • Input: from_date, to_date (string): Date range in YYYY-MM-DD format
    • Optional: periods, timeframe, tracking_categories
  • xero_get_bank_summary

    • Get bank account balances and movements
    • Optional: from_date, to_date for specific period

Data Access

  • xero_get_accounts

    • List all accounts in the chart of accounts
    • Optional: where filter condition
  • xero_get_contacts

    • Retrieve customer and supplier contacts
    • Optional: where, page, search_term, include_archived
  • xero_get_bank_transactions

    • View bank transactions
    • Optional: where, order, page, modified_after
  • xero_get_invoices

    • Access invoice data
    • Optional: Multiple filter options including where, order, page, statuses

Aging Reports

  • xero_get_aged_payables_by_contact

    • View aged payables for a specific contact
    • Input: contact_id (string)
    • Optional: date, from_date, to_date
  • xero_get_aged_receivables_by_contact

    • View aged receivables for a specific contact
    • Input: contact_id (string)
    • Optional: date, from_date, to_date

Usage with Claude Desktop

To use this server with Claude Desktop, add the following configuration to the "mcpServers" section of your claude_desktop_config.json:

Using uvx (Recommended)

{
  "mcpServers": {
    "Xero App": {
      "command": "/Users/nasir/.cargo/bin/uvx",
      "args": [
        "--from",
        "git+https://github.com/semicolonio/xero-mcp.git",
        "xero-mcp"
      ],
      "env": {
        "XERO_CLIENT_ID": "your_client_id",
        "XERO_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Notes:

  • Replace your_client_id and your_client_secret with your Xero API credentials
  • The server requires OAuth2 authentication on first use

Prerequisites

  1. Install uvx:
cargo install uvx
  1. Get Xero API Credentials:
  • Go to Xero Developer Portal
  • Create a new app
  • Set redirect URI to: http://localhost:8000/callback
  • Copy Client ID and Client Secret

Example Usage

# Get all bank accounts
accounts = await xero_get_accounts(where='Type=="BANK"')

# Get balance sheet for specific date
balance_sheet = await xero_get_balance_sheet(date="2024-01-31")

# Get recent bank transactions
transactions = await xero_get_bank_transactions(
    where='Type=="SPEND"',
    order="Date DESC",
    page=1
)

Data Storage

The server maintains a local SQLite database (config/xero_analytics.db) for:

  • Token management
  • Sync statistics
  • Cache optimization

Error Handling

Built-in handling for common issues:

  • API rate limits
  • Network connectivity
  • Authentication failures
  • Invalid parameters

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xero_mcp-0.1.4.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xero_mcp-0.1.4-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file xero_mcp-0.1.4.tar.gz.

File metadata

  • Download URL: xero_mcp-0.1.4.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.30

File hashes

Hashes for xero_mcp-0.1.4.tar.gz
Algorithm Hash digest
SHA256 da2fd99fda1eb0d0a26211a6f4208e7a7ff2742ca1067263e5e3796589775b42
MD5 16e553e54fd47aa0012879748f2ecafb
BLAKE2b-256 e06856fee1e22a4e5bd6238d4f73fa0897a49c2db152bfd31a4ad0af1fad4174

See more details on using hashes here.

File details

Details for the file xero_mcp-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: xero_mcp-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.30

File hashes

Hashes for xero_mcp-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e31f4f95c4ef01e8d0b73785866472683d042ff4eb58a5204b5c6fb77978408c
MD5 5bb3cc197b92b741add82c6cd91c94f4
BLAKE2b-256 2a948dd9c1dfae7e76095a267ebb109f48ee9e0ead054c4b99c4b573217dae05

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page