MCP server for AbraFlexi ERP — invoices, contacts, products, bank transactions.
AbraFlexi MCP Server (io.github.Vitexus/abraflexi)
MCP server for AbraFlexi ERP. It provides access to core business data including invoices, contacts, products, and bank transactions. The repository name is io.github.Vitexus/abraflexi, and it is described as an MCP server targeted at ERP integration through these domains.
🛠️ Key Features
Invoices
Contacts
Products
Bank transactions
🚀 Use Cases
Reading or syncing AbraFlexi ERP invoices
Managing customer or contact records
Working with product catalog entries
Accessing bank transaction data tied to ERP processes
⚡ Developer Benefits
Focused ERP coverage across invoices, contacts, products, and bank transactions
Labeled as an MCP server for AbraFlexi ERP integration
⚠️ Limitations
No tool list or tool count information is provided in the available source data
A comprehensive Model Context Protocol (MCP) server for AbraFlexi integration using FastMCP and python-abraflexi. This server provides complete access to AbraFlexi REST API functionality through MCP-compatible tools.
Features
69 tools in total, covering the full REST surface exposed by
python-abraflexi:
dedicated tools for the most common evidences (invoices, contacts,
products, bank transactions), plus generic evidence_* tools that work
against any AbraFlexi evidence by name.
One server process = one AbraFlexi company. A running server is bound
for its whole lifetime to a single company, set via
ABRAFLEXI_URL/ABRAFLEXI_COMPANY (see Configuration).
Every record any tool returns already belongs to that company - it is not
possible to ask this server for another company's data. Call server_info
to check which company/URL a running server is bound to; the main
record-fetching tools (invoice_issued_get, invoice_received_get,
contact_get, product_get, bank_transaction_get, evidence_get,
changes_get) also echo it back in a _context block on every response,
together with a note clarifying any counterparty fields on the records
(e.g. an invoice's nazFirmy is the customer/supplier, not the company
that issued/received it).
ℹ️ Server Identity
server_info - Report which AbraFlexi company/URL this server session is bound to
This cloud-hosted instance allows you to test and use the AbraFlexi MCP server without local installation. Configure your MCP client to connect to this endpoint with HTTP transport.
Note: This is a testing deployment. For production use, we recommend self-hosting using one of the installation methods above.
Configuration
Create a .env file or set environment variables:
bash
cp .env.example .env# Edit .env with your AbraFlexi server details
Configuration
Required Environment Variables
ABRAFLEXI_URL - Your AbraFlexi server URL (e.g., https://demo.flexibee.eu:5434)
ABRAFLEXI_COMPANY - Company identifier (e.g., demo_de)
Authentication (choose one method)
Method 1: Username/Password (Recommended)
ABRAFLEXI_LOGIN - Your AbraFlexi username
ABRAFLEXI_PASSWORD - Your AbraFlexi password
Method 2: Session ID
ABRAFLEXI_AUTHSESSID - Your AbraFlexi session ID
Optional Configuration
READ_ONLY - Set to true, 1, or yes to enable read-only mode (default: true)
ABRAFLEXI_TIMEOUT - Request timeout in seconds (default: 300)
Transport Configuration
ABRAFLEXI_MCP_TRANSPORT - Transport type: stdio (default) or streamable-http
HTTP Transport Configuration (only used when ABRAFLEXI_MCP_TRANSPORT=streamable-http):
ABRAFLEXI_MCP_HOST - Server host (default: 127.0.0.1)
AUTH_TYPE - Must be set to no-auth for streamable-http transport
Usage
Running the Server
With startup script (recommended):
bash
uv run python scripts/start_server.py
Direct execution:
bash
uv run python -m abraflexi_mcp_server.server
CLI help:
bash
abraflexi-mcp --help
Transport Options
The server supports two transport methods:
STDIO Transport (Default)
Standard input/output transport for MCP clients like Claude Desktop:
bash
# Set in .env or environment
ABRAFLEXI_MCP_TRANSPORT=stdio
HTTP Transport
HTTP-based transport for web integrations:
bash
# Set in .env or environment
ABRAFLEXI_MCP_TRANSPORT=streamable-http
ABRAFLEXI_MCP_HOST=127.0.0.1
ABRAFLEXI_MCP_PORT=8000
ABRAFLEXI_MCP_STATELESS_HTTP=false
AUTH_TYPE=no-auth
Testing
Run test suite:
bash
uv run python scripts/test_server.py
Read-Only Mode
When READ_ONLY=true (default), the server will only expose GET operations (retrieve data) and block all create, update, and delete operations. This is useful for:
📊 Monitoring dashboards
🔍 Read-only integrations
🔒 Security-conscious environments
🛡️ Preventing accidental modifications
To enable write operations, set READ_ONLY=false in your .env file.
Example Tool Calls
Get all issued invoices:
python
invoice_issued_get(limit=10)
Get specific invoice by code:
python
invoice_issued_get(kod="INV-2024-001")
Count invoices issued in August 2026 (without downloading full records):