Bexio MCP Server
Enables AI assistants to manage contacts, invoices, quotes, projects, and items in Bexio ERP through natural language.
README
Bexio MCP Server Demo

MCP server for Bexio ERP integration - enables AI assistants to interact with Bexio business management software.
Available in FlowHunt.io - Test this MCP server directly in FlowHunt's no-code AI automation platform with visual drag-and-drop workflow builder.
Features
- š Contact Management: Search, create, update, and manage contacts
- š Invoice Operations: Create, search, and manage invoices
- š° Quote Management: Handle quotes and proposals
- šļø Project Management: Create and track projects
- š¦ Item/Article Management: Manage products and services
- š Secure Authentication: Uses Bexio Personal Access Tokens (PAT)
- ā Smart Field Validation: Automatic field completion and 422 error prevention
- š”ļø Enhanced Error Handling: Clear guidance for missing or invalid fields
Installation
Prerequisites
- Python 3.10+
- Bexio account with API access
Install
- For users:
pip install .
- For development (with tests and linters):
pip install -e ".[dev]"
Configuration
Getting Your Bexio Access Token
The easiest way to get an access token is using Personal Access Tokens (PAT):
- Visit https://developer.bexio.com/pat
- Create a new Personal Access Token
- Copy the token (it will look like:
eyJraWQiOiI2ZGM2YmJlOC1iMjZjLTExZTgtOGUwZC0w...)
PAT Benefits:
- ā Full access to your company's data
- ā Valid for 6 months
- ā No OAuth setup required
- ā Perfect for personal/development use
Alternative Authentication
If you need custom scopes or multi-user access beyond Personal Access Tokens (PAT), implement an OAuth flow in your own application using Bexio's OAuth documentation.
Environment Setup
Create a .env file in your project directory:
BEXIO_ACCESS_TOKEN=your_personal_access_token_here
BEXIO_API_URL=https://api.bexio.com/2.0
BEXIO_TIMEOUT=120
Usage with Claude Desktop
Add the following to your Claude Desktop configuration file:
macOS
~/Library/Application Support/Claude/claude_desktop_config.json
Windows
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"bexio": {
"command": "python",
"args": ["-m", "mcp_server_bexio.server"],
"cwd": "/path/to/your/bexio-mcp-server",
"env": {
"BEXIO_ACCESS_TOKEN": "YOUR_NEW_PAT_TOKEN_HERE"
}
}
}
}
Important: Replace YOUR_NEW_PAT_TOKEN_HERE with your actual Personal Access Token from https://developer.bexio.com/pat
Available Tools
Contact Management
search_contacts
Search for contacts using criteria. Parameters:
criteria(required): Array of search criteria objects with field/value/criterialimit: Maximum number of results (auto-filled: 50)offset: Number of records to skip (auto-filled: 0)
Example prompts:
- "Find all contacts with email containing 'gmail.com'"
- "Search for companies in Zurich"
- "Show me contacts created this month"
get_contact
Get detailed information about a specific contact. Parameters:
contact_id(required): Contact ID
create_contact
Create a new contact. Required fields:
name_1: First name or company name Auto-filled fields (can be overridden):contact_type_id: Contact type (default: 2 for person)user_id: User ID (default: 1)owner_id: Owner ID (default: 1)
update_contact
Update an existing contact. Required fields:
contact_id: Contact ID Auto-retrieved fields:name_1,contact_type_id,user_id,owner_id,nr: Retrieved from existing contact
list_contacts
List all contacts with optional filtering. Parameters:
limit: Maximum number of results (auto-filled: 50)offset: Number of records to skip (auto-filled: 0)order_by: Field to order by (optional)
Invoice Management
search_invoices
Search for invoices using criteria. Parameters:
criteria(required): Array of search criteria objects with field/value/criterialimit: Maximum number of results (auto-filled: 50)offset: Number of records to skip (auto-filled: 0)
get_invoice
Get detailed information about a specific invoice. Parameters:
invoice_id(required): Invoice ID
create_invoice
Create a new invoice. Required fields:
contact_id: Contact ID for the invoicepositions: Array with line items (each needstextdescription) Auto-filled fields (can be overridden):user_id: User ID (default: 1)nr: Invoice number (API auto-generates)- Position fields:
type,amount,unit_price,tax_id(default: Tax ID 3 - 0% rate)
Note: Uses flat schema structure for consistent UI experience.
list_invoices
List all invoices with optional filtering. Parameters:
limit: Maximum number of results (auto-filled: 50)offset: Number of records to skip (auto-filled: 0)order_by: Field to order by (optional)
Quote Management
search_quotes
Search for quotes using criteria. Parameters:
criteria(required): Array of search criteria objects with field/value/criterialimit: Maximum number of results (auto-filled: 50)offset: Number of records to skip (auto-filled: 0)
get_quote
Get detailed information about a specific quote. Parameters:
quote_id(required): Quote ID
create_quote
Create a new quote. Required fields:
contact_id: Contact ID for the quote Auto-filled fields (can be overridden):user_id: User ID (default: 1)nr: Quote number (API auto-generates)- Positions: Optional but recommended, same auto-fill as invoices
Note: Uses flat schema structure for consistent UI experience.
Project Management
list_projects
List all projects with optional filtering. Parameters:
limit: Maximum number of results (auto-filled: 50)offset: Number of records to skip (auto-filled: 0)order_by: Field to order by (optional)
get_project
Get detailed information about a specific project. Parameters:
project_id(required): Project ID
create_project
Create a new project. Required fields:
name: Project namecontact_id: Contact ID for the project Auto-filled fields (can be overridden):user_id: User ID (default: 1)nr: Project number (API auto-generates)pr_state_id: Project state ID (default: 1)pr_project_type_id: Project type ID (default: 1)
Item/Article Management
list_items
List all items/articles with optional filtering. Parameters:
limit: Maximum number of results (auto-filled: 50)offset: Number of records to skip (auto-filled: 0)order_by: Field to order by (optional)
get_item
Get detailed information about a specific item. Parameters:
item_id(required): Item ID
create_item
Create a new item/article. Required fields:
intern_name: Internal item name Auto-filled fields (can be overridden):user_id: User ID (default: 1)nr: Item number (API auto-generates)article_type_id: Article type ID (default: 1)currency_id: Currency ID (default: 1)is_stock: Stock item flag (default: false)delivery_price: Delivery price (default: 0)
Common Use Cases
Customer Management
- Search and filter customer contacts
- Create new customer records
- Update customer information
- Track customer communication history
Sales Operations
- Create and manage quotes
- Convert quotes to orders and invoices
- Track sales pipeline
- Generate sales reports
Project Management
- Create and track projects
- Assign projects to customers
- Monitor project progress
- Manage project timesheets
Inventory Management
- Manage product catalog
- Track stock levels
- Update pricing information
- Handle product variations
Security Considerations
- Store your Bexio access token securely
- Use environment variables for sensitive configuration
- Regularly rotate access tokens
- Monitor API usage and access logs
- Implement proper error handling for API failures
Smart Field Validation
This MCP server includes intelligent field validation to prevent common 422 errors and improve user experience:
Automatic Field Completion
- Required fields: Prompts users for critical missing information
- Safe defaults: Auto-fills non-critical fields (user_id, project states, etc.)
- Dynamic lookups: Retrieves existing data for updates (contact numbers, tax IDs)
- API-aware: Skips fields where Bexio API provides intelligent defaults
Enhanced Error Handling
- Pre-validation: Catches missing fields before API calls
- Clear guidance: Specific error messages explaining what's needed
- Smart tax handling: Automatically looks up valid tax IDs from your Bexio system
- Field-specific help: Distinguishes between missing vs invalid field values
Field Types
REQUIRED_USER_INPUT: Critical fields requiring user input (contact names, IDs)AUTO_FILL_DEFAULT: Safe defaults (user_id=1, project_state_id=1) - can be overridden by userAUTO_FILL_LOOKUP: Retrieved from existing data (for updates)API_HANDLED: Fields where API provides fallback handling
User Override Capability
Important: All auto-filled fields can be overridden by providing explicit values. The system only fills missing fields - if you specify a value, it will be used instead of the default.
Detailed Field Requirements
Contact Functions
create_contact:
- REQUIRED:
name_1(first name or company name) - AUTO-FILLED:
contact_type_id=2,user_id=1,owner_id=1 - OPTIONAL: email, phone, address, city, country_id, language_id
update_contact:
- REQUIRED:
contact_id - AUTO-RETRIEVED:
name_1,contact_type_id,user_id,owner_idfrom existing contact - OPTIONAL: All other contact fields
Invoice Functions
create_invoice:
- REQUIRED:
contact_id,positionsarray - AUTO-FILLED:
user_id=1 - POSITION REQUIREMENTS: Each position needs
text(description) - AUTO-FILLED PER POSITION:
type='KbPositionCustom',amount=1,unit_price=0.0,tax_id(looked up)
Quote Functions
create_quote:
- REQUIRED:
contact_id - AUTO-FILLED:
user_id=1 - POSITIONS: Optional but recommended, same auto-fill rules as invoices
Project Functions
create_project:
- REQUIRED:
name,contact_id - AUTO-FILLED:
user_id=1,pr_state_id=1,pr_project_type_id=1
Item Functions
create_item:
- REQUIRED:
intern_name(internal item name) - AUTO-FILLED:
user_id=1,article_type_id=1,currency_id=1,is_stock=false,delivery_price=0
Validation Flow
- Pre-validation: Check for truly required user input fields
- Auto-completion: Fill missing fields with safe defaults or lookups
- API call: Submit completed data to Bexio API
- Error enhancement: Provide helpful guidance if validation still fails
- Retry logic: Automatic retry for recoverable validation errors
Troubleshooting
422 Field Validation Errors
- Enhanced handling: The server now provides specific guidance for missing fields
- Auto-completion: Many required fields are filled automatically with safe defaults
- Tax ID issues: System automatically looks up valid tax IDs from your Bexio account
- Contact updates: Required fields like
nrare retrieved from existing contact data
401 Authentication Failed
- Most common issue: Your Personal Access Token has expired (PAT tokens are valid for 6 months)
- Solution: Visit https://developer.bexio.com/pat and create a new token
- Update your
.envfile and Claude Desktop configuration with the new token - Restart Claude Desktop after updating the configuration
Connection Issues
- Check your internet connection
- Verify the Bexio API is accessible
- Ensure no firewall restrictions
Rate Limiting
- Bexio API has rate limits - the server implements automatic retry logic
- Large result sets use pagination automatically
- Monitor API usage in your Bexio developer dashboard
Project Structure
bexio-mcp-server/
āāā mcp_server_bexio/
ā āāā __init__.py
ā āāā server.py
ā āāā bexio_client.py
ā āāā field_validator.py
āāā pyproject.toml
āāā README.md
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
License
MIT License - see LICENSE file for details.
Support
For issues and questions:
- GitHub Issues: https://github.com/tomasbottlik/bexio-mcp-server/issues
- Bexio API Documentation: https://docs.bexio.com/
About
This MCP server enables seamless integration between AI assistants and Bexio business management software, allowing for natural language interaction with your business data.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.