
AbraFlexi
io.github.Vitexus由 GitHub 帳號 Vitexus 發布v1.0.1更新於 Oct 24, 2026
MCP server for AbraFlexi ERP — invoices, contacts, products, bank transactions.
概覽
面向 AbraFlexi ERP 的 MCP 伺服器,讓助理讀取並在開啟寫入後新增、修改、刪除發票、聯絡人、產品、銀行交易及其他帳套記錄。
- 可以做什麼
- 讀取發票、聯絡人、產品和銀行交易,並提供聯絡人電子郵件、電話、銀行帳戶查詢及發票逾期天數計算等便利功能。在上述帳套中建立、更新和刪除記錄,另有依名稱操作任意 AbraFlexi 帳套的通用工具。執行發票業務邏輯,例如付款配對、現金付款、預付款與 ZDD 抵扣及關聯。鎖定、解鎖、沖銷、批次更新和批次插入記錄,並呼叫記錄的業務動作。管理附件、匯出 PDF/XLSX 報表、取得付款 QR 碼、列出並呼叫已儲存的使用者查詢、讀取帳套中繼資料、彙總與變更歷史,以及管理標籤。啟用或停用變更追蹤,並依版本分頁取得全公司增量變更。
- 適用情境
- 當助理需要處理 AbraFlexi ERP 實例中的會計資料時使用:查詢發票、聯絡人、產品或銀行交易,準備或修改記錄,匯出文件,或同步變更。唯讀模式適合監控與報表,寫入模式適合記帳和資料輸入流程。
- 執行需求
- 本機 Python 3.10 以上程序,可從 PyPI 安裝(也支援 AppImage、容器或原始碼),或使用作者的雲端測試端點(HTTP)。需要能存取已啟用 API 的 AbraFlexi 伺服器,並設定 ABRAFLEXI_URL 和 ABRAFLEXI_COMPANY,以及 ABRAFLEXI_LOGIN 搭配 ABRAFLEXI_PASSWORD 或 ABRAFLEXI_AUTHSESSID。READ_ONLY 預設為 true,設為 false 才允許寫入。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 AbraFlexi,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
AbraFlexi MCP Server
[AbraFlexi MCP Server icon][License: MIT] [Python 3.10+] [PyPI version] [Packaging: deb] [M8ven Score]
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. Callserver_infoto 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_contextblock on every response, together with a note clarifying any counterparty fields on the records (e.g. an invoice'snazFirmyis 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
📄 Invoice Management
invoice_issued_get- Retrieve issued invoices (faktura-vydana)invoice_issued_create- Create new issued invoicesinvoice_issued_update- Update existing issued invoicesinvoice_issued_delete- Remove issued invoicesinvoice_received_get- Retrieve received invoices (faktura-prijata)invoice_received_create- Create new received invoices
💳 Issued Invoice Business Logic
invoice_issued_match_payment- Match an invoice against a payment document (Párování plateb)invoice_issued_cash_payment- Pay an invoice in cash (Hotovostní úhrada)invoice_issued_deduct_advance- Deduct an advance invoice (Odpočet záloh a ZDD)invoice_issued_deduct_zdd- Deduct an advance tax document, ZDD (Odpočet záloh a ZDD)invoice_issued_link_zdd- Link a ZDD to an income payment (Vazby ZDD)invoice_issued_unlink_zdd- Remove a ZDD bonding (Vazby ZDD)invoice_issued_overdue_days- Compute days overdue from a due date (pure, no API call)invoice_issued_get_email- Resolve the best recipient email for an invoiceinvoice_issued_get_recipients- Resolve all recipient emails for an invoice
🏢 Company Management
company_create- Found a brand-new AbraFlexi company (accounting unit) - requires server-admin/license REST rights
👥 Contact Management
contact_get- Retrieve contacts and companies (adresar)contact_create- Create new contactscontact_update- Update existing contactscontact_delete- Remove contacts
☎️ Contact Convenience Lookups
contact_get_notification_email- Best email to notify (primary/purpose-matching contact)contact_get_cell_phone- Cell phone number to usecontact_get_any_phone- Any usable phone number (mobile preferred over landline)contact_get_bank_accounts- Registered bank account(s) for a contact
📦 Product Management
product_get- Retrieve products from price list (cenik)product_create- Create new productsproduct_update- Update existing productsproduct_delete- Remove products
🏦 Bank Transaction Management
bank_transaction_get- Retrieve bank transactions (banka)bank_transaction_create- Create new bank transactions
🔧 Generic Evidence Operations
evidence_get- Get records from any evidence (filter, pagination, sorting, relations)evidence_create- Create record in any evidenceevidence_update- Update record in any evidence (supportsremove_external_ids)evidence_delete- Delete record from any evidenceevidence_list- List all evidences available on the bound company (liveevidence-list.json)
🧠 Python-abraflexi Bridge
abraflexi_client_methods- List public methods of core python-abraflexi clients (ReadOnly,ReadWrite,Changes,Adresar,FakturaVydana)abraflexi_client_call- Invoke a selected public client method with arguments (write methods still respectREAD_ONLY)
🔒 Locking, Actions & Batch Operations
evidence_lock/evidence_unlock/evidence_lock_for_ucetni- Lock/unlock a recordevidence_storno- Cancel (storno) a document recordevidence_perform_action- Call a record's dedicated business action (e.g.pay)evidence_mass_update- Update, or act on, every record matching a filter (Dávkové operace)evidence_batch_insert/evidence_batch_update- Insert/update many records in one request
📎 Attachments
evidence_attach_file- Attach a local file to any recordevidence_list_attachments- List a record's attachmentsevidence_get_attachment- Get metadata for a single attachmentevidence_download_attachment- Download an attachment to a local fileevidence_get_attachment_thumbnail- Download an image attachment's thumbnailevidence_delete_attachment- Delete an attachment
🧾 Reports, QR Codes & User Queries
evidence_export_report- Export a PDF/XLSX report for a record or evidence listingevidence_get_qr_code- Get a document's payment QR code (file or base64 data URI)user_query_list- List saved user-defined queries (uzivatelsky-dotaz)call_user_query- Call a saved user-defined query (uživatelský dotaz)
ℹ️ Evidence Metadata & Summation
evidence_get_properties- List the fields supported by an evidenceevidence_get_reports- List the printable reports available for an evidenceevidence_get_relations_list- List the sub-evidences (relations) available for an evidenceevidence_get_sum- Get summation (totals) for an evidenceevidence_get_record_changes- Get a single record's change history
🏷️ Labels (štítky)
evidence_get_labels- Get labels assigned to a recordevidence_set_label- Add a labelevidence_unset_label- Remove specific label(s)evidence_unset_labels- Remove all labels
🔄 Changes API (company-wide incremental sync)
changes_enable/changes_disable- Toggle change trackingchanges_status- Check whether change tracking is enabledchanges_get- Page through recorded changes since a given version
Installation
Prerequisites
- Python 3.10 or higher
- Access to an AbraFlexi server with API enabled
Option 1: Install from PyPI (Recommended)
Then run the server:
Option 2: AppImage (Linux)
Download the self-contained AppImage from the latest release:
No Python or pip required. See AppImage section for details.
Option 3: Install from Source
-
Clone the repository:
-
Install with uv (recommended):
Or with pip:
Cloud Deployment
A testing deployment is available at:
🌐 https://abraflexi.fastmcp.app/mcp
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:
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 usernameABRAFLEXI_PASSWORD- Your AbraFlexi password
Method 2: Session ID
ABRAFLEXI_AUTHSESSID- Your AbraFlexi session ID
Optional Configuration
READ_ONLY- Set totrue,1, oryesto enable read-only mode (default:true)ABRAFLEXI_TIMEOUT- Request timeout in seconds (default:300)
Transport Configuration
ABRAFLEXI_MCP_TRANSPORT- Transport type:stdio(default) orstreamable-http
HTTP Transport Configuration (only used when ABRAFLEXI_MCP_TRANSPORT=streamable-http):
ABRAFLEXI_MCP_HOST- Server host (default:127.0.0.1)ABRAFLEXI_MCP_PORT- Server port (default:8000)ABRAFLEXI_MCP_STATELESS_HTTP- Stateless mode (default:false)AUTH_TYPE- Must be set tono-authfor streamable-http transport
Usage
Running the Server
With startup script (recommended):
Direct execution:
CLI help:
Transport Options
The server supports two transport methods:
STDIO Transport (Default)
Standard input/output transport for MCP clients like Claude Desktop:
HTTP Transport
HTTP-based transport for web integrations:
Testing
Run test suite:
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:
Get specific invoice by code:
Count invoices issued in August 2026 (without downloading full records):
Create a new contact:
Get products:
Generic evidence query (with pagination/sorting):
Attach a local file to any record:
Lock an invoice, then export its PDF:
Mass-update every price-list item from a supplier:
Incremental sync via the Changes API:
MCP Integration
This server is designed to work with MCP-compatible clients like Claude Desktop. See MCP_SETUP.md for detailed integration instructions.
OCI Container
The server can be run as an OCI container (Docker/Podman) — no Python installation needed on the host.
Building the image
Running the container
The image defaults to streamable-http transport on port 8000.
With individual environment variables:
With an env file:
Container environment defaults
All other configuration variables can be passed as environment variables.
AppImage
A self-contained, single-file Linux executable — no Python, pip, or any other dependency required on the host.
Building the AppImage
The script downloads a portable CPython and appimagetool automatically. The resulting file is placed in build/appimage/:
Running the AppImage
The AppImage automatically loads a .env file from the current working directory if one is present.
With a .env file (recommended):
With inline environment variables:
Development
Project Structure
Running Tests
Exit code is non-zero when any non-skipped check fails.
Error Handling
The server includes comprehensive error handling:
- ✅ Authentication errors are clearly reported
- 🔒 Read-only mode violations are blocked with descriptive messages
- ✔️ Invalid parameters are validated
- 🌐 Network and API errors are properly formatted
- 📝 Detailed logging for troubleshooting
Security Considerations
- 🔑 Store credentials securely in
.envfile (never commit to git) - 🔒 Enable read-only mode for monitoring-only use cases
- 🛡️ Use HTTPS for AbraFlexi server connections
- 🔄 Regularly rotate passwords
- 📁 Ensure
.envfile has proper permissions (600)
Troubleshooting
Common Issues
Connection Failed:
- Verify
ABRAFLEXI_URLis correct and accessible - Check authentication credentials
- Ensure AbraFlexi API is enabled
- Check firewall/network settings
Permission Denied:
- Verify user has sufficient AbraFlexi permissions
- Check if read-only mode is enabled when trying to modify data
Tool Not Found:
- Ensure all dependencies are installed:
uv sync - Verify Python version compatibility (3.10+)
Debug Mode
Set environment variable for detailed logging:
Dependencies
- FastMCP - MCP server framework
- python-abraflexi - AbraFlexi Python library
- python-dotenv - Environment variable management
License
This project is licensed under the MIT License.
Acknowledgments
- AbraFlexi for the accounting platform
- Model Context Protocol for the integration standard
- FastMCP for the server framework
Support
Author
Vítězslav Dvořák
- Email: [email protected]
- GitHub: @VitexSoftware
Made with ❤️ for the AbraFlexi and MCP communities
來源:README.md,提交 d5e4602
工具
0版本歷史
1- v1.0.1最新Sep 16, 2026
評分
已滿足適用檢查項的 40%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
請在儲存庫或註冊中心條目中宣告授權條款。