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/.cargo/bin/uvx, your config would look like:

{
  "mcpServers": {
    "Xero App": {
      "command": "/Users/username/.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"
      }
    }
  }
}

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.1.tar.gz (14.2 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.1-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for xero_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 703fd2c922234e38da895cb15f25b99105b43bae636fa5be1c3a8da337532137
MD5 2acc979be2f26003c636678214168029
BLAKE2b-256 7444bf63af52b5afe5615fbb25177bca0bc0ca33f783a2ca94a7d86175a53d16

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for xero_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 35e3897f507ce0c7d1213cf26438d0979105511b2bda0db9926b042948bbf7a3
MD5 da9751595797b77bc8b436c5ab3ee753
BLAKE2b-256 8865854059292a941a358171061fe283c698d7f369cda3df31957894619c7280

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