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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。