@promptpartner/bexio-mcp-server
Complete Swiss accounting integration for Bexio via the Model Context Protocol (MCP). Works with Claude Desktop, n8n, and any MCP-compatible client.
Manage invoices, contacts, projects, time tracking, and 300+ more tools through AI conversation or workflow automation.
⚠️ Early Release Software
This project is under active development. While it's functional and tested, you may encounter bugs or unexpected behavior. Features will continue to be added and improved over time. Please report any issues you find!
Compatibility
| Client | Transport | Status |
|---|---|---|
| Claude Desktop | stdio | ✅ Fully supported |
| n8n | HTTP | ✅ Fully supported |
| Claude Code | stdio | ✅ Fully supported |
| Other MCP clients | stdio/HTTP | ✅ Should work |
Quick Start
For Claude Desktop
Option A: MCPB Bundle (Easiest)
- Download the latest
.mcpbfile from GitHub Releases - In Claude Desktop, go to Settings → Extensions
- Install the extension using one of these methods:
- Double-click the downloaded
.mcpbfile, or - Drag and drop the file onto the Extensions window, or
- Click Advanced Settings → Install Extension and select the file
- Double-click the downloaded
- Enter your Bexio API token when prompted
Option B: npm
Add to claude_desktop_config.json:
{
"mcpServers": {
"bexio": {
"command": "npx",
"args": ["@promptpartner/bexio-mcp-server"],
"env": {
"BEXIO_API_TOKEN": "your-token-here"
}
}
}
}
Config location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
For n8n and Other HTTP Clients
Start the server in HTTP mode:
BEXIO_API_TOKEN=your-token npx @promptpartner/bexio-mcp-server --mode http --port 8000
The server exposes MCP over HTTP at http://localhost:8000. Configure your MCP client to connect to this endpoint.
For Other stdio Clients
BEXIO_API_TOKEN=your-token npx @promptpartner/bexio-mcp-server
Or build from source:
git clone https://github.com/promptpartner/bexio-mcp-server
cd bexio-mcp-server/src
npm install && npm run build
BEXIO_API_TOKEN=your-token node dist/index.js
Getting Your Bexio API Token
- Go to developer.bexio.com
- Log in with your regular Bexio account
- Navigate to Personal Access Tokens
- Click Create New Token
- Copy the token and use it in your configuration
Features
This MCP server provides 310 tools across all Bexio domains:
Contacts & CRM
- Create, update, search contacts
- Contact groups, sectors, salutations, titles
- Contact relations management
Invoices & Sales
- Full invoice lifecycle (create, issue, send, cancel)
- Quotes with accept/decline workflows
- Orders with delivery management
- Incoming payments tracking
- Interactive invoice preview (Claude Desktop)
Banking & Payments
- Swiss QR-bill payment support (QR-IBAN)
- Standard IBAN payments (ISO 20022)
- Currency management (CHF, EUR)
- Bank account management
Projects & Time Tracking
- Project management with types and statuses
- Milestones and work packages
- Timesheet entries with duration tracking
- Business activities and communication types
Accounting
- Chart of accounts
- Manual journal entries
- Business years and VAT periods
- Account groups
Purchase & Expenses
- Bills (creditor invoices)
- Expenses and purchase orders
- Outgoing payments
Files & Documents
- Document upload/download
- File management
Payroll (requires Bexio Payroll module)
- Employee management
- Absence tracking
- Payroll documents
Examples
Here are some real-world examples of using the Bexio MCP server with Claude:
Example 1: Finding Overdue Invoices
Prompt:
"Show me all overdue invoices"
What happens:
Claude uses the get_overdue_invoices tool to query Bexio for all invoices past their due date.
Response:
Found 3 overdue invoices:
Invoice # Customer Amount Due Date Days Overdue INV-2024-001 Acme AG CHF 2,450.00 2024-01-15 18 days INV-2024-003 Tech GmbH CHF 890.50 2024-01-20 13 days INV-2024-007 Swiss Corp CHF 5,200.00 2024-01-25 8 days Total overdue: CHF 8,540.50
Example 2: Creating an Invoice
Prompt:
"Create an invoice for contact 'Sunrise AG' with two items: 10 hours of consulting at CHF 150/hour and a software license for CHF 500"
What happens:
Claude uses find_contact_by_name to locate the cust
Tools 2
get_overdue_invoicesRetrieves a list of all invoices that have passed their due date.find_contact_by_nameSearches for a contact record by their name.Environment Variables
BEXIO_API_TOKENrequiredPersonal Access Token generated from developer.bexio.com