Merge pull request 'chore: merge dev into main � MCP underscore convention + new features' (#1) from dev into main
Universal: Auto-Assign / Assign unassigned issues and PRs (push) Successful in 1s
Universal: Changelog Validation / Validate CHANGELOG.md (push) Has been cancelled
MCP: Standards Compliance / Secret Scanning (push) Has been cancelled
Universal: CodeQL Analysis / Analyze (actions) (push) Has been cancelled
MCP: Standards Compliance / Repository Structure Validation (push) Has been cancelled
Universal: CodeQL Analysis / Analyze (javascript) (push) Has been cancelled
MCP: Standards Compliance / License Header Validation (push) Has been cancelled
MCP: Standards Compliance / Coding Standards Check (push) Has been cancelled
MCP: Standards Compliance / Documentation Quality Check (push) Has been cancelled
MCP: Standards Compliance / README Completeness Check (push) Has been cancelled
MCP: Standards Compliance / Git Repository Hygiene (push) Has been cancelled
MCP: Standards Compliance / Script Integrity Validation (push) Has been cancelled
MCP: Standards Compliance / Line Length Check (push) Has been cancelled
MCP: Standards Compliance / File Naming Standards (push) Has been cancelled
MCP: Standards Compliance / Insecure Code Pattern Detection (push) Has been cancelled
MCP: Standards Compliance / Version Consistency Check (push) Has been cancelled
MCP: Standards Compliance / Workflow Configuration Check (push) Has been cancelled
MCP: Standards Compliance / Dead Code Detection (push) Has been cancelled
MCP: Standards Compliance / File Size Limits (push) Has been cancelled
MCP: Standards Compliance / Binary File Detection (push) Has been cancelled
MCP: Standards Compliance / TODO/FIXME Tracking (push) Has been cancelled
MCP: Standards Compliance / Code Complexity Analysis (push) Has been cancelled
MCP: Standards Compliance / Code Duplication Detection (push) Has been cancelled
MCP: Standards Compliance / Dependency Vulnerability Scanning (push) Has been cancelled
MCP: Standards Compliance / API Documentation Coverage (push) Has been cancelled
MCP: Standards Compliance / Accessibility Check (push) Has been cancelled
MCP: Standards Compliance / Performance Metrics (push) Has been cancelled
MCP: Standards Compliance / Unused Dependencies Check (push) Has been cancelled
MCP: Standards Compliance / Broken Link Detection (push) Has been cancelled
MCP: Standards Compliance / Enterprise Readiness Check (push) Has been cancelled
MCP: Standards Compliance / Repository Health Check (push) Has been cancelled
MCP: Standards Compliance / Terraform Configuration Validation (push) Has been cancelled
Universal: Sync Version on Merge / Propagate README version (push) Has been cancelled
Universal: CodeQL Analysis / Security Scan Summary (push) Has been cancelled
MCP: Standards Compliance / Compliance Summary (push) Has been cancelled
Universal: Auto-Assign / Assign unassigned issues and PRs (push) Successful in 1s
Universal: Changelog Validation / Validate CHANGELOG.md (push) Has been cancelled
MCP: Standards Compliance / Secret Scanning (push) Has been cancelled
Universal: CodeQL Analysis / Analyze (actions) (push) Has been cancelled
MCP: Standards Compliance / Repository Structure Validation (push) Has been cancelled
Universal: CodeQL Analysis / Analyze (javascript) (push) Has been cancelled
MCP: Standards Compliance / License Header Validation (push) Has been cancelled
MCP: Standards Compliance / Coding Standards Check (push) Has been cancelled
MCP: Standards Compliance / Documentation Quality Check (push) Has been cancelled
MCP: Standards Compliance / README Completeness Check (push) Has been cancelled
MCP: Standards Compliance / Git Repository Hygiene (push) Has been cancelled
MCP: Standards Compliance / Script Integrity Validation (push) Has been cancelled
MCP: Standards Compliance / Line Length Check (push) Has been cancelled
MCP: Standards Compliance / File Naming Standards (push) Has been cancelled
MCP: Standards Compliance / Insecure Code Pattern Detection (push) Has been cancelled
MCP: Standards Compliance / Version Consistency Check (push) Has been cancelled
MCP: Standards Compliance / Workflow Configuration Check (push) Has been cancelled
MCP: Standards Compliance / Dead Code Detection (push) Has been cancelled
MCP: Standards Compliance / File Size Limits (push) Has been cancelled
MCP: Standards Compliance / Binary File Detection (push) Has been cancelled
MCP: Standards Compliance / TODO/FIXME Tracking (push) Has been cancelled
MCP: Standards Compliance / Code Complexity Analysis (push) Has been cancelled
MCP: Standards Compliance / Code Duplication Detection (push) Has been cancelled
MCP: Standards Compliance / Dependency Vulnerability Scanning (push) Has been cancelled
MCP: Standards Compliance / API Documentation Coverage (push) Has been cancelled
MCP: Standards Compliance / Accessibility Check (push) Has been cancelled
MCP: Standards Compliance / Performance Metrics (push) Has been cancelled
MCP: Standards Compliance / Unused Dependencies Check (push) Has been cancelled
MCP: Standards Compliance / Broken Link Detection (push) Has been cancelled
MCP: Standards Compliance / Enterprise Readiness Check (push) Has been cancelled
MCP: Standards Compliance / Repository Health Check (push) Has been cancelled
MCP: Standards Compliance / Terraform Configuration Validation (push) Has been cancelled
Universal: Sync Version on Merge / Propagate README version (push) Has been cancelled
Universal: CodeQL Analysis / Security Scan Summary (push) Has been cancelled
MCP: Standards Compliance / Compliance Summary (push) Has been cancelled
This commit was merged in pull request #1.
This commit is contained in:
-753
@@ -1,753 +0,0 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
|
||||
This file is part of a Moko Consulting project.
|
||||
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# FILE INFORMATION
|
||||
DEFGROUP: dolibarr-api-mcp.Documentation
|
||||
INGROUP: dolibarr-api-mcp
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/dolibarr-api-mcp
|
||||
PATH: /docs/API.md
|
||||
VERSION: 01.00.00
|
||||
BRIEF: MCP tool reference documentation
|
||||
-->
|
||||
|
||||
# API Reference
|
||||
|
||||
All tools accept an optional `connection` parameter to target a specific named connection. If omitted, the default connection is used.
|
||||
|
||||
All list tools accept optional pagination parameters:
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `limit` | number | Max results (default 100) |
|
||||
| `page` | number | Page number (0-based) |
|
||||
| `sortfield` | string | Field to sort by |
|
||||
| `sortorder` | `"ASC"` / `"DESC"` | Sort direction |
|
||||
|
||||
## Third Parties
|
||||
|
||||
### `dolibarr_thirdparties_list`
|
||||
List third parties (customers, suppliers, prospects).
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `mode` | `"1"` / `"2"` / `"3"` / `"4"` | No | 1=customer, 2=prospect, 3=supplier, 4=customer+supplier |
|
||||
| `search` | string | No | Search in name |
|
||||
| `category` | number | No | Filter by category ID |
|
||||
|
||||
### `dolibarr_thirdparty_get`
|
||||
Get a single third party by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Third party ID |
|
||||
|
||||
### `dolibarr_thirdparty_create`
|
||||
Create a new third party.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `name` | string | Yes | Company or individual name |
|
||||
| `client` | `"0"` / `"1"` / `"2"` / `"3"` | No | 0=neither, 1=customer, 2=prospect, 3=customer+prospect |
|
||||
| `fournisseur` | `"0"` / `"1"` | No | 0=not supplier, 1=supplier |
|
||||
| `email` | string | No | Email address |
|
||||
| `phone` | string | No | Phone number |
|
||||
| `address` | string | No | Street address |
|
||||
| `zip` | string | No | Postal code |
|
||||
| `town` | string | No | City |
|
||||
| `country_id` | number | No | Country ID |
|
||||
|
||||
### `dolibarr_thirdparty_update`
|
||||
Update an existing third party. Only provided fields are changed.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Third party ID |
|
||||
| `name` | string | No | Company or individual name |
|
||||
| `email` | string | No | Email address |
|
||||
| `phone` | string | No | Phone number |
|
||||
| `address` | string | No | Street address |
|
||||
| `zip` | string | No | Postal code |
|
||||
| `town` | string | No | City |
|
||||
| `country_id` | number | No | Country ID |
|
||||
|
||||
### `dolibarr_thirdparty_delete`
|
||||
Delete a third party.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Third party ID |
|
||||
|
||||
## Invoices
|
||||
|
||||
### `dolibarr_invoices_list`
|
||||
List invoices.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"draft"` / `"unpaid"` / `"paid"` / `"cancelled"` | No | Filter by status |
|
||||
| `thirdparty_ids` | string | No | Comma-separated third party IDs |
|
||||
| `search` | string | No | Search in ref or ref_client |
|
||||
|
||||
### `dolibarr_invoice_get`
|
||||
Get a single invoice by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Invoice ID |
|
||||
|
||||
### `dolibarr_invoice_create`
|
||||
Create a new invoice.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `socid` | number | Yes | Third party (customer) ID |
|
||||
| `type` | `"0"` / `"1"` / `"2"` / `"3"` | No | 0=standard, 1=replacement, 2=credit note, 3=deposit |
|
||||
| `date` | string | No | Invoice date (YYYY-MM-DD or Unix timestamp) |
|
||||
| `note_public` | string | No | Public note |
|
||||
| `note_private` | string | No | Private note |
|
||||
|
||||
### `dolibarr_invoice_add_line`
|
||||
Add a line item to an invoice.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Invoice ID |
|
||||
| `desc` | string | Yes | Line description |
|
||||
| `subprice` | number | Yes | Unit price (HT) |
|
||||
| `qty` | number | Yes | Quantity |
|
||||
| `tva_tx` | number | No | VAT rate (e.g. 20.0) |
|
||||
| `product_id` | number | No | Product/service ID |
|
||||
|
||||
### `dolibarr_invoice_validate`
|
||||
Validate (finalize) a draft invoice. Changes status from draft to validated and assigns an invoice number.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Invoice ID |
|
||||
|
||||
### `dolibarr_invoice_set_paid`
|
||||
Mark an invoice as paid.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Invoice ID |
|
||||
| `close_code` | string | No | Close code (e.g. `"bankorder"`, `"cash"`) |
|
||||
| `close_note` | string | No | Close note |
|
||||
|
||||
## Proposals (Quotes)
|
||||
|
||||
### `dolibarr_proposals_list`
|
||||
List commercial proposals.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"0"` / `"1"` / `"2"` / `"3"` / `"4"` | No | 0=draft, 1=validated, 2=signed, 3=not-signed, 4=billed |
|
||||
| `thirdparty_ids` | string | No | Comma-separated third party IDs |
|
||||
|
||||
### `dolibarr_proposal_get`
|
||||
Get a single proposal by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Proposal ID |
|
||||
|
||||
### `dolibarr_proposal_create`
|
||||
Create a new commercial proposal.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `socid` | number | Yes | Third party (customer) ID |
|
||||
| `date` | string | No | Proposal date (YYYY-MM-DD or Unix timestamp) |
|
||||
| `duree_validite` | number | No | Validity duration in days |
|
||||
| `note_public` | string | No | Public note |
|
||||
| `note_private` | string | No | Private note |
|
||||
|
||||
### `dolibarr_proposal_add_line`
|
||||
Add a line item to a proposal.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Proposal ID |
|
||||
| `desc` | string | Yes | Line description |
|
||||
| `subprice` | number | Yes | Unit price (HT) |
|
||||
| `qty` | number | Yes | Quantity |
|
||||
| `tva_tx` | number | No | VAT rate (e.g. 20.0) |
|
||||
| `product_id` | number | No | Product/service ID |
|
||||
|
||||
### `dolibarr_proposal_validate`
|
||||
Validate a draft proposal.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Proposal ID |
|
||||
|
||||
### `dolibarr_proposal_close`
|
||||
Close a proposal (sign or refuse).
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Proposal ID |
|
||||
| `status` | `"2"` / `"3"` | Yes | 2=signed, 3=not signed (refused) |
|
||||
| `note` | string | No | Close note |
|
||||
|
||||
## Orders
|
||||
|
||||
### `dolibarr_orders_list`
|
||||
List customer orders.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"0"` / `"1"` / `"2"` / `"3"` / `"-1"` | No | 0=draft, 1=validated, 2=processing, 3=delivered, -1=cancelled |
|
||||
| `thirdparty_ids` | string | No | Comma-separated third party IDs |
|
||||
|
||||
### `dolibarr_order_get`
|
||||
Get a single order by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Order ID |
|
||||
|
||||
### `dolibarr_order_create`
|
||||
Create a new customer order.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `socid` | number | Yes | Third party (customer) ID |
|
||||
| `date` | string | No | Order date (YYYY-MM-DD or Unix timestamp) |
|
||||
| `note_public` | string | No | Public note |
|
||||
| `note_private` | string | No | Private note |
|
||||
|
||||
### `dolibarr_order_validate`
|
||||
Validate a draft order.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Order ID |
|
||||
|
||||
## Products / Services
|
||||
|
||||
### `dolibarr_products_list`
|
||||
List products and/or services.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `type` | `"0"` / `"1"` | No | 0=product, 1=service |
|
||||
| `search` | string | No | Search in label or ref |
|
||||
| `category` | number | No | Filter by category ID |
|
||||
| `to_sell` | `"0"` / `"1"` | No | 1=for sale only |
|
||||
| `to_buy` | `"0"` / `"1"` | No | 1=for purchase only |
|
||||
|
||||
### `dolibarr_product_get`
|
||||
Get a single product/service by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Product ID |
|
||||
|
||||
### `dolibarr_product_create`
|
||||
Create a new product or service.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `ref` | string | Yes | Product reference code |
|
||||
| `label` | string | Yes | Product label/name |
|
||||
| `type` | `"0"` / `"1"` | No | 0=product, 1=service (default 0) |
|
||||
| `price` | number | No | Selling price (HT) |
|
||||
| `price_ttc` | number | No | Selling price (TTC) |
|
||||
| `tva_tx` | number | No | Default VAT rate |
|
||||
| `description` | string | No | Description |
|
||||
| `status` | `"0"` / `"1"` | No | 1=on sale, 0=not on sale |
|
||||
| `status_buy` | `"0"` / `"1"` | No | 1=on purchase, 0=not on purchase |
|
||||
|
||||
### `dolibarr_product_update`
|
||||
Update a product or service. Only provided fields are changed.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Product ID |
|
||||
| `ref` | string | No | Product reference code |
|
||||
| `label` | string | No | Product label/name |
|
||||
| `price` | number | No | Selling price (HT) |
|
||||
| `description` | string | No | Description |
|
||||
| `status` | `"0"` / `"1"` | No | On sale flag |
|
||||
| `status_buy` | `"0"` / `"1"` | No | On purchase flag |
|
||||
|
||||
### `dolibarr_product_stock`
|
||||
Get stock levels for a product across all warehouses.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Product ID |
|
||||
|
||||
## Contacts / Addresses
|
||||
|
||||
### `dolibarr_contacts_list`
|
||||
List contacts/addresses.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `search` | string | No | Search in name |
|
||||
| `thirdparty_id` | number | No | Filter by third party ID |
|
||||
|
||||
### `dolibarr_contact_get`
|
||||
Get a single contact by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Contact ID |
|
||||
|
||||
## Projects
|
||||
|
||||
### `dolibarr_projects_list`
|
||||
List projects.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"0"` / `"1"` / `"2"` | No | 0=draft, 1=open, 2=closed |
|
||||
| `search` | string | No | Search in title or ref |
|
||||
|
||||
### `dolibarr_project_get`
|
||||
Get a single project by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Project ID |
|
||||
|
||||
### `dolibarr_project_create`
|
||||
Create a new project.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `ref` | string | Yes | Project reference |
|
||||
| `title` | string | Yes | Project title |
|
||||
| `socid` | number | No | Third party ID |
|
||||
| `description` | string | No | Project description |
|
||||
| `date_start` | string | No | Start date (YYYY-MM-DD or Unix timestamp) |
|
||||
| `date_end` | string | No | End date (YYYY-MM-DD or Unix timestamp) |
|
||||
|
||||
## Tasks
|
||||
|
||||
### `dolibarr_tasks_list`
|
||||
List project tasks.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `project_id` | number | No | Filter by project ID |
|
||||
|
||||
### `dolibarr_task_get`
|
||||
Get a single task by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Task ID |
|
||||
|
||||
## Users
|
||||
|
||||
### `dolibarr_users_list`
|
||||
List Dolibarr users.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `search` | string | No | Search in login name |
|
||||
|
||||
### `dolibarr_user_get`
|
||||
Get a single user by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | User ID |
|
||||
|
||||
## Categories
|
||||
|
||||
### `dolibarr_categories_list`
|
||||
List categories.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `type` | `"product"` / `"supplier"` / `"customer"` / `"member"` / `"contact"` / `"project"` | No | Category type |
|
||||
| `search` | string | No | Search in label |
|
||||
|
||||
## Bank Accounts
|
||||
|
||||
### `dolibarr_bankaccounts_list`
|
||||
List bank accounts. No additional parameters (supports pagination).
|
||||
|
||||
## Supplier Invoices
|
||||
|
||||
### `dolibarr_supplier_invoices_list`
|
||||
List supplier invoices.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"draft"` / `"unpaid"` / `"paid"` / `"cancelled"` | No | Filter by status |
|
||||
| `thirdparty_ids` | string | No | Comma-separated supplier IDs |
|
||||
|
||||
## Supplier Orders
|
||||
|
||||
### `dolibarr_supplier_orders_list`
|
||||
List supplier orders (purchase orders).
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"0"` - `"5"`, `"9"` | No | 0=draft, 1=validated, 2=approved, 3=ordered, 4=partially received, 5=received, 9=cancelled |
|
||||
| `thirdparty_ids` | string | No | Comma-separated supplier IDs |
|
||||
|
||||
## Shipments
|
||||
|
||||
### `dolibarr_shipments_list`
|
||||
List shipments (expeditions).
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"0"` / `"1"` / `"2"` | No | 0=draft, 1=validated, 2=closed |
|
||||
| `thirdparty_ids` | string | No | Comma-separated third party IDs |
|
||||
|
||||
### `dolibarr_shipment_get`
|
||||
Get a single shipment by ID.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Shipment ID |
|
||||
|
||||
### `dolibarr_shipment_create`
|
||||
Create a new shipment.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `socid` | number | Yes | Third party (customer) ID |
|
||||
| `origin_id` | number | No | Source order ID |
|
||||
| `origin_type` | string | No | Source type (e.g. `"commande"`) |
|
||||
| `date_delivery` | string | No | Delivery date |
|
||||
| `note_public` | string | No | Public note |
|
||||
| `note_private` | string | No | Private note |
|
||||
|
||||
### `dolibarr_shipment_validate`
|
||||
Validate a draft shipment.
|
||||
|
||||
### `dolibarr_shipment_close`
|
||||
Close a shipment (mark as delivered).
|
||||
|
||||
## Contracts / Subscriptions
|
||||
|
||||
### `dolibarr_contracts_list`
|
||||
List contracts/subscriptions.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"0"` / `"1"` / `"4"` / `"5"` | No | 0=draft, 1=validated, 4=closed, 5=running |
|
||||
| `thirdparty_ids` | string | No | Comma-separated third party IDs |
|
||||
|
||||
### `dolibarr_contract_get`
|
||||
Get a single contract by ID.
|
||||
|
||||
### `dolibarr_contract_create`
|
||||
Create a new contract.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `socid` | number | Yes | Third party ID |
|
||||
| `ref` | string | No | Contract reference |
|
||||
| `date_contrat` | string | No | Contract date |
|
||||
| `note_public` | string | No | Public note |
|
||||
| `note_private` | string | No | Private note |
|
||||
|
||||
### `dolibarr_contract_validate`
|
||||
Validate a draft contract.
|
||||
|
||||
## Interventions
|
||||
|
||||
### `dolibarr_interventions_list`
|
||||
List interventions (field service).
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"0"` / `"1"` / `"2"` | No | 0=draft, 1=validated, 2=billed |
|
||||
| `thirdparty_ids` | string | No | Comma-separated third party IDs |
|
||||
|
||||
### `dolibarr_intervention_get`
|
||||
Get a single intervention by ID.
|
||||
|
||||
## Expense Reports
|
||||
|
||||
### `dolibarr_expensereports_list`
|
||||
List expense reports.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | `"0"` / `"2"` / `"4"` / `"5"` / `"6"` / `"99"` | No | 0=draft, 2=validated, 4=cancelled, 5=approved, 6=paid, 99=refused |
|
||||
|
||||
### `dolibarr_expensereport_get`
|
||||
Get a single expense report by ID.
|
||||
|
||||
### `dolibarr_expensereport_create`
|
||||
Create a new expense report.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `fk_user_author` | number | Yes | User ID of the author |
|
||||
| `date_debut` | string | Yes | Start date |
|
||||
| `date_fin` | string | Yes | End date |
|
||||
| `note_public` | string | No | Public note |
|
||||
| `note_private` | string | No | Private note |
|
||||
|
||||
## Tickets (Helpdesk)
|
||||
|
||||
### `dolibarr_tickets_list`
|
||||
List helpdesk tickets.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `status` | string | No | Filter by status |
|
||||
| `search` | string | No | Search in subject |
|
||||
|
||||
### `dolibarr_ticket_get`
|
||||
Get a single ticket by ID.
|
||||
|
||||
### `dolibarr_ticket_create`
|
||||
Create a new helpdesk ticket.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `subject` | string | Yes | Ticket subject |
|
||||
| `message` | string | Yes | Ticket message/description |
|
||||
| `type_code` | string | No | Ticket type code |
|
||||
| `category_code` | string | No | Ticket category code |
|
||||
| `severity_code` | string | No | Ticket severity code |
|
||||
| `socid` | number | No | Third party ID |
|
||||
| `notify_tiers_at_create` | number | No | 1=notify third party on creation |
|
||||
|
||||
## Agenda / Events
|
||||
|
||||
### `dolibarr_agendaevents_list`
|
||||
List agenda events.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `type` | string | No | Event type code |
|
||||
| `status` | `"-1"` / `"0"` / `"50"` / `"100"` | No | -1=cancelled, 0=draft, 50=in progress, 100=done |
|
||||
| `userassigned` | number | No | Filter by assigned user ID |
|
||||
|
||||
### `dolibarr_agendaevent_get`
|
||||
Get a single agenda event by ID.
|
||||
|
||||
### `dolibarr_agendaevent_create`
|
||||
Create a new agenda event.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `label` | string | Yes | Event label/title |
|
||||
| `type_code` | string | Yes | Event type code (e.g. `"AC_RDV"`, `"AC_TEL"`, `"AC_OTH"`) |
|
||||
| `datep` | string | Yes | Start date (YYYY-MM-DD HH:MM:SS or Unix timestamp) |
|
||||
| `datef` | string | No | End date |
|
||||
| `socid` | number | No | Third party ID |
|
||||
| `contactid` | number | No | Contact ID |
|
||||
| `fk_project` | number | No | Project ID |
|
||||
| `userownerid` | number | No | Owner user ID |
|
||||
| `note` | string | No | Event note |
|
||||
| `percentage` | `"-1"` / `"0"` / `"50"` / `"100"` | No | Completion status |
|
||||
|
||||
### `dolibarr_agendaevent_update`
|
||||
Update an agenda event.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Event ID |
|
||||
| `label` | string | No | Event label |
|
||||
| `datep` | string | No | Start date |
|
||||
| `datef` | string | No | End date |
|
||||
| `percentage` | `"-1"` / `"0"` / `"50"` / `"100"` | No | Completion status |
|
||||
| `note` | string | No | Event note |
|
||||
|
||||
## Payments
|
||||
|
||||
### `dolibarr_invoice_payments`
|
||||
List payments for an invoice.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Invoice ID |
|
||||
|
||||
### `dolibarr_invoice_add_payment`
|
||||
Add a payment to an invoice.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Invoice ID |
|
||||
| `datepaye` | string | Yes | Payment date |
|
||||
| `paymentid` | number | Yes | Payment type ID (e.g. 4=bank transfer, 6=credit card) |
|
||||
| `closepaidinvoices` | string | No | `"yes"` to auto-close fully paid invoices |
|
||||
| `accountid` | number | No | Bank account ID |
|
||||
| `num_payment` | string | No | Payment number/reference |
|
||||
| `comment` | string | No | Payment comment |
|
||||
|
||||
## Documents
|
||||
|
||||
### `dolibarr_documents_list`
|
||||
List documents attached to an object.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `modulepart` | string | Yes | Module name (e.g. `"facture"`, `"propal"`, `"commande"`, `"societe"`) |
|
||||
| `id` | number | No | Object ID |
|
||||
| `ref` | string | No | Object ref (alternative to ID) |
|
||||
|
||||
### `dolibarr_document_download`
|
||||
Download/get content of a document.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `modulepart` | string | Yes | Module name |
|
||||
| `original_file` | string | Yes | Relative file path (e.g. `"FA2301-0001/FA2301-0001.pdf"`) |
|
||||
|
||||
### `dolibarr_document_builddoc`
|
||||
Generate/build a document (e.g. PDF invoice).
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `modulepart` | string | Yes | Module name |
|
||||
| `original_file` | string | Yes | Expected output filename |
|
||||
| `doctemplate` | string | No | Document template name (e.g. `"crabe"`, `"sponge"`) |
|
||||
| `langcode` | string | No | Language code (e.g. `"en_US"`, `"fr_FR"`) |
|
||||
|
||||
## Members
|
||||
|
||||
### `dolibarr_members_list`
|
||||
List association members.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `typeid` | number | No | Filter by member type ID |
|
||||
| `status` | `"0"` / `"1"` / `"-1"` / `"-2"` | No | 1=validated, 0=draft, -1=resigned, -2=excluded |
|
||||
| `search` | string | No | Search in name |
|
||||
|
||||
### `dolibarr_member_get`
|
||||
Get a single member by ID.
|
||||
|
||||
## Stock / Warehouses
|
||||
|
||||
### `dolibarr_warehouses_list`
|
||||
List warehouses. No additional parameters (supports pagination).
|
||||
|
||||
### `dolibarr_stockmovements_list`
|
||||
List stock movements.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `product_id` | number | No | Filter by product ID |
|
||||
| `warehouse_id` | number | No | Filter by warehouse ID |
|
||||
|
||||
### `dolibarr_stockmovement_create`
|
||||
Create a stock movement (add/remove stock).
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `product_id` | number | Yes | Product ID |
|
||||
| `warehouse_id` | number | Yes | Warehouse ID |
|
||||
| `qty` | number | Yes | Quantity (positive=add, negative=remove) |
|
||||
| `type` | `"0"` / `"1"` / `"2"` / `"3"` | No | 0=increase, 1=decrease, 2=transfer increase, 3=transfer decrease |
|
||||
| `label` | string | No | Movement label/reason |
|
||||
| `inventorycode` | string | No | Inventory code |
|
||||
|
||||
## Bank Accounts
|
||||
|
||||
### `dolibarr_bankaccounts_list`
|
||||
List bank accounts. No additional parameters (supports pagination).
|
||||
|
||||
### `dolibarr_bankaccount_lines`
|
||||
List transactions/lines for a bank account.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `id` | number | Yes | Bank account ID |
|
||||
|
||||
## Categories
|
||||
|
||||
### `dolibarr_categories_list`
|
||||
List categories.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `type` | `"product"` / `"supplier"` / `"customer"` / `"member"` / `"contact"` / `"project"` | No | Category type |
|
||||
| `search` | string | No | Search in label |
|
||||
|
||||
### `dolibarr_category_get`
|
||||
Get a single category by ID.
|
||||
|
||||
### `dolibarr_category_create`
|
||||
Create a new category.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `label` | string | Yes | Category label |
|
||||
| `type` | string | Yes | Category type |
|
||||
| `fk_parent` | number | No | Parent category ID (0 = root) |
|
||||
| `description` | string | No | Category description |
|
||||
| `color` | string | No | Category color (hex, e.g. `"ff0000"`) |
|
||||
|
||||
## Users
|
||||
|
||||
### `dolibarr_users_list`
|
||||
List Dolibarr users.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `search` | string | No | Search in login name |
|
||||
|
||||
### `dolibarr_user_get`
|
||||
Get a single user by ID.
|
||||
|
||||
### `dolibarr_user_create`
|
||||
Create a new Dolibarr user.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `login` | string | Yes | Login/username |
|
||||
| `lastname` | string | Yes | Last name |
|
||||
| `firstname` | string | No | First name |
|
||||
| `email` | string | No | Email address |
|
||||
| `admin` | `"0"` / `"1"` | No | 0=user, 1=admin |
|
||||
| `employee` | `"0"` / `"1"` | No | 1=is employee |
|
||||
|
||||
## Setup / System
|
||||
|
||||
### `dolibarr_setup_company`
|
||||
Get company/entity information. No parameters.
|
||||
|
||||
### `dolibarr_setup_dictionary`
|
||||
Get dictionary entries (lookup tables).
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `type` | string | Yes | Dictionary type: `countries`, `regions`, `states`, `currencies`, `civilities`, `payment_types`, `shipping_methods`, `availability`, `order_methods`, `event_types`, `expense_report_types`, `ticket_types`, `ticket_severities`, `ticket_categories`, `units`, `legal_form`, `staff_range`, `typent` |
|
||||
|
||||
### `dolibarr_setup_modules`
|
||||
List enabled Dolibarr modules. No parameters.
|
||||
|
||||
### `dolibarr_status`
|
||||
Get Dolibarr instance status and version. No parameters.
|
||||
|
||||
## Generic
|
||||
|
||||
### `dolibarr_api_request`
|
||||
Make a raw API request to any Dolibarr REST endpoint.
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| `method` | `"GET"` / `"POST"` / `"PUT"` / `"DELETE"` | Yes | HTTP method |
|
||||
| `endpoint` | string | Yes | API path (e.g. `"/thirdparties"`) |
|
||||
| `body` | object | No | Request body for POST/PUT |
|
||||
| `params` | object | No | Query parameters |
|
||||
|
||||
### `dolibarr_list_connections`
|
||||
List all configured connections. No parameters.
|
||||
|
||||
## Revision History
|
||||
|
||||
| Date | Version | Author | Notes |
|
||||
| --- | --- | --- | --- |
|
||||
| 2026-05-07 | 0.0.1 | jmiller | Initial API reference (44 tools) |
|
||||
| 2026-05-07 | 0.1.0 | jmiller | Expanded to 89 tools — shipments, contracts, interventions, expense reports, tickets, agenda events, payments, documents, members, stock movements, contact CRUD, task CRUD with timespent, dictionaries, bank transactions |
|
||||
@@ -1,118 +0,0 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
|
||||
This file is part of a Moko Consulting project.
|
||||
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# FILE INFORMATION
|
||||
DEFGROUP: dolibarr-api-mcp.Documentation
|
||||
INGROUP: dolibarr-api-mcp
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/dolibarr-api-mcp
|
||||
PATH: /docs/ARCHITECTURE.md
|
||||
VERSION: 01.00.00
|
||||
BRIEF: Architecture overview and design decisions
|
||||
-->
|
||||
|
||||
# Architecture
|
||||
|
||||
## Overview
|
||||
|
||||
dolibarr-api-mcp is a Model Context Protocol (MCP) server that bridges AI assistants (Claude Code, Cursor, etc.) with Dolibarr's built-in REST API.
|
||||
|
||||
```
|
||||
AI Assistant <--> MCP (stdio) <--> DolibarrClient <--> Dolibarr REST API
|
||||
/api/index.php
|
||||
```
|
||||
|
||||
## Components
|
||||
|
||||
### `src/index.ts` — Server Entry Point
|
||||
|
||||
Registers all MCP tools with the `McpServer` from `@modelcontextprotocol/sdk`. Each tool maps to one or more Dolibarr API endpoints. Uses Zod schemas for input validation.
|
||||
|
||||
Includes shared helpers:
|
||||
- `formatResponse()` — normalizes Dolibarr error responses and success payloads into MCP text content
|
||||
- `paginationQuery()` — builds `limit`, `page`, `sortfield`, `sortorder` query params
|
||||
- `buildSqlFilter()` — constructs Dolibarr's `sqlfilters` parameter from structured clauses (supports AND/OR joins, proper escaping)
|
||||
- `searchFilter()` — shortcut for `LIKE '%term%'` filters on a single field
|
||||
|
||||
### `src/client.ts` — HTTP Client
|
||||
|
||||
The `DolibarrClient` class handles all HTTP communication with Dolibarr instances:
|
||||
|
||||
- Uses `node:https` / `node:http` for requests (not `fetch`) to support self-signed TLS certificates on Node.js 24+
|
||||
- Authenticates via `DOLAPIKEY` header (Dolibarr's native API key mechanism)
|
||||
- Sends `Accept: application/json` and `Content-Type: application/json`
|
||||
- Supports GET, POST, PUT, and DELETE methods
|
||||
|
||||
### `src/config.ts` — Configuration Loader
|
||||
|
||||
Loads connection details from `~/.dolibarr-api-mcp.json`. Supports multiple named connections with a configurable default. Respects the `DOLIBARR_API_MCP_CONFIG` environment variable for custom config paths.
|
||||
|
||||
### `src/types.ts` — Type Definitions
|
||||
|
||||
TypeScript interfaces for `DolibarrConnection`, `DolibarrConfig`, and `ApiResponse`.
|
||||
|
||||
### `scripts/setup.mjs` — Interactive Setup
|
||||
|
||||
Node.js script using `readline/promises` that walks users through creating the config file. Supports adding multiple connections incrementally.
|
||||
|
||||
## Design Decisions
|
||||
|
||||
### Why `node:https` instead of `fetch`?
|
||||
|
||||
Node.js 24's built-in `fetch` (undici-based) does not honor `NODE_TLS_REJECT_UNAUTHORIZED=0` for self-signed certificate bypass. The classic `node:https` module with `rejectUnauthorized: false` works reliably across all Node.js versions.
|
||||
|
||||
### Why `DOLAPIKEY` instead of Bearer tokens?
|
||||
|
||||
Dolibarr's REST API authenticates via the `DOLAPIKEY` HTTP header, not OAuth or Bearer tokens. This is Dolibarr's native mechanism — each user has a per-user API key that inherits that user's permissions. There is no token expiration; keys persist until manually regenerated.
|
||||
|
||||
### Why `PUT` instead of `PATCH`?
|
||||
|
||||
Dolibarr's API uses `PUT` for updates (full or partial), not `PATCH`. The API accepts partial payloads via PUT — only the fields you send are updated.
|
||||
|
||||
### Why `sqlfilters` with a builder?
|
||||
|
||||
Dolibarr's API supports a custom `sqlfilters` query parameter that allows server-side filtering with SQL-like expressions (e.g. `(t.nom:like:'%acme%')`). The `buildSqlFilter()` helper:
|
||||
- Handles single-quote escaping to prevent injection
|
||||
- Supports combining multiple clauses with AND/OR
|
||||
- Provides `searchFilter()` as a concise shortcut for the common `LIKE` pattern
|
||||
|
||||
### Why per-connection API keys?
|
||||
|
||||
Each Dolibarr instance requires its own API key scoped to a specific user. Multi-instance support is a core use case — managing staging, production, and dev ERP environments from a single MCP server.
|
||||
|
||||
## Data Flow
|
||||
|
||||
1. AI assistant sends a tool call via MCP stdio transport
|
||||
2. `index.ts` validates parameters with Zod and resolves the connection
|
||||
3. `DolibarrClient` constructs the API URL, attaches the `DOLAPIKEY` header, and makes the HTTP request
|
||||
4. Response is parsed as JSON and returned as MCP tool output
|
||||
|
||||
## API Module Coverage
|
||||
|
||||
| Dolibarr Module | Tools | Endpoints |
|
||||
|----------------|-------|-----------|
|
||||
| Third Parties | 5 | `/thirdparties` |
|
||||
| Invoices | 6 | `/invoices`, `/invoices/{id}/lines`, `/invoices/{id}/validate`, `/invoices/{id}/settopaid` |
|
||||
| Proposals | 7 | `/proposals`, `/proposals/{id}/lines`, `/proposals/{id}/validate`, `/proposals/{id}/close` |
|
||||
| Orders | 4 | `/orders`, `/orders/{id}/validate` |
|
||||
| Products | 5 | `/products`, `/products/{id}/stock` |
|
||||
| Contacts | 2 | `/contacts` |
|
||||
| Projects | 3 | `/projects` |
|
||||
| Tasks | 2 | `/tasks` |
|
||||
| Users | 2 | `/users` |
|
||||
| Categories | 1 | `/categories` |
|
||||
| Bank Accounts | 1 | `/bankaccounts` |
|
||||
| Supplier Invoices | 1 | `/supplierinvoices` |
|
||||
| Supplier Orders | 1 | `/supplierorders` |
|
||||
| Warehouses | 1 | `/warehouses` |
|
||||
| Setup | 2 | `/setup/company`, `/status` |
|
||||
| Generic | 2 | Any endpoint, connection listing |
|
||||
|
||||
## Revision History
|
||||
|
||||
| Date | Version | Author | Notes |
|
||||
| --- | --- | --- | --- |
|
||||
| 2026-05-07 | 0.0.1 | jmiller | Initial architecture document |
|
||||
@@ -1,172 +0,0 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
|
||||
This file is part of a Moko Consulting project.
|
||||
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# FILE INFORMATION
|
||||
DEFGROUP: dolibarr-api-mcp.Documentation
|
||||
INGROUP: dolibarr-api-mcp
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/dolibarr-api-mcp
|
||||
PATH: /docs/INSTALLATION.md
|
||||
VERSION: 01.00.00
|
||||
BRIEF: Installation and setup instructions
|
||||
-->
|
||||
|
||||
# Installation
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- **Node.js** 20.0.0 or later
|
||||
- **npm** (included with Node.js)
|
||||
- A Dolibarr ERP/CRM instance (v14+) with the REST API module enabled
|
||||
- A Dolibarr API key (generated per-user or via Setup > Security)
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
git clone https://git.mokoconsulting.tech/MokoConsulting/dolibarr-api-mcp.git
|
||||
cd dolibarr-api-mcp
|
||||
npm install
|
||||
npm run build
|
||||
npm run setup
|
||||
```
|
||||
|
||||
The setup wizard will prompt for:
|
||||
|
||||
1. **Connection name** — a label for this instance (e.g. `production`, `staging`)
|
||||
2. **Dolibarr URL** — the base URL of the instance (e.g. `https://erp.example.com`)
|
||||
3. **API key** — the Dolibarr API key for authentication
|
||||
4. **TLS verification** — whether to skip certificate verification (for self-signed certs)
|
||||
|
||||
Run `npm run setup` again to add more connections.
|
||||
|
||||
## Enabling the Dolibarr REST API
|
||||
|
||||
1. Log in to Dolibarr as an admin
|
||||
2. Go to **Home > Setup > Modules/Applications**
|
||||
3. Find **API/Web services (REST server)** in the list
|
||||
4. Click the toggle to enable it
|
||||
5. The API will be available at `https://your-dolibarr.com/api/index.php`
|
||||
|
||||
## Generating an API Key
|
||||
|
||||
### Per-User API Key (Recommended)
|
||||
|
||||
1. Go to **Home > Users & Groups > Users**
|
||||
2. Select the user that will be used for API access
|
||||
3. On the user card, look for the **API key** field
|
||||
4. Click **Generate** to create a key, or set one manually
|
||||
5. Click **Save**
|
||||
|
||||
The user's permissions determine what the API key can access. Use a dedicated API user with appropriate permissions for production.
|
||||
|
||||
### System-Level API Key
|
||||
|
||||
1. Go to **Home > Setup > Security > Tokens & API**
|
||||
2. Generate or configure the system API key
|
||||
3. This key has broader access — use with caution
|
||||
|
||||
## Register with Claude Code
|
||||
|
||||
Add to your global Claude Code config (`~/.claude.json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"dolibarr-api": {
|
||||
"type": "stdio",
|
||||
"command": "node",
|
||||
"args": ["/path/to/dolibarr-api-mcp/dist/index.js"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Or add to a project-level `.mcp.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"dolibarr-api": {
|
||||
"command": "node",
|
||||
"args": ["/path/to/dolibarr-api-mcp/dist/index.js"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Restart Claude Code after adding the server.
|
||||
|
||||
## Configuration File
|
||||
|
||||
The config is stored at `~/.dolibarr-api-mcp.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"defaultConnection": "production",
|
||||
"connections": {
|
||||
"production": {
|
||||
"baseUrl": "https://erp.example.com",
|
||||
"apiKey": "your-api-key"
|
||||
},
|
||||
"staging": {
|
||||
"baseUrl": "https://erp-staging.example.com",
|
||||
"apiKey": "your-staging-key",
|
||||
"insecure": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Required | Description |
|
||||
|-------|----------|-------------|
|
||||
| `defaultConnection` | Yes | Name of the default connection |
|
||||
| `connections` | Yes | Map of named connections |
|
||||
| `baseUrl` | Yes | Dolibarr instance URL (no trailing slash) |
|
||||
| `apiKey` | Yes | Dolibarr API key (`DOLAPIKEY` header auth) |
|
||||
| `insecure` | No | Set `true` to skip TLS verification |
|
||||
|
||||
You can also set the `DOLIBARR_API_MCP_CONFIG` environment variable to use a config file at a custom path.
|
||||
|
||||
## Verification
|
||||
|
||||
After setup, verify the server starts correctly:
|
||||
|
||||
```sh
|
||||
npm start
|
||||
```
|
||||
|
||||
If configured correctly, the server will start listening on stdio. If the config is missing or invalid, it will print an error with instructions.
|
||||
|
||||
You can also test the connection by asking Claude to run `dolibarr_status` — this calls the `/api/index.php/status` endpoint and returns the Dolibarr version.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Failed to load config" error
|
||||
|
||||
The config file `~/.dolibarr-api-mcp.json` is missing or malformed. Run `npm run setup` to create it.
|
||||
|
||||
### "terminated" or connection errors
|
||||
|
||||
- Verify the Dolibarr instance is reachable from your machine
|
||||
- For self-signed certs, set `"insecure": true` in the connection config
|
||||
- Ensure the API key is valid
|
||||
|
||||
### "Access denied" or 403 errors
|
||||
|
||||
- The API module may not be enabled in Dolibarr (see "Enabling the Dolibarr REST API" above)
|
||||
- The API key user may lack permissions for the requested operation
|
||||
- Check that the user has the correct roles in Dolibarr's permissions system
|
||||
|
||||
### "Error 404" on certain endpoints
|
||||
|
||||
- Some API endpoints require specific Dolibarr modules to be enabled (e.g. Projects module for `/projects`)
|
||||
- Check **Setup > Modules** to ensure the relevant module is active
|
||||
|
||||
## Revision History
|
||||
|
||||
| Date | Version | Author | Notes |
|
||||
| --- | --- | --- | --- |
|
||||
| 2026-05-07 | 0.0.1 | jmiller | Initial installation guide |
|
||||
@@ -1,17 +0,0 @@
|
||||
<!-- Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later -->
|
||||
|
||||
# dolibarr-api-mcp Documentation
|
||||
|
||||
## Documents
|
||||
|
||||
- [INSTALLATION.md](./INSTALLATION.md) — Prerequisites, install, setup wizard, Dolibarr API key generation, troubleshooting
|
||||
- [ARCHITECTURE.md](./ARCHITECTURE.md) — Component overview, design decisions, data flow, API module coverage
|
||||
- [API.md](./API.md) — Full MCP tool reference with parameter tables for all 45 tools
|
||||
|
||||
## Root Documents
|
||||
|
||||
- [README.md](../README.md) — Project overview, quick start, tool summary
|
||||
- [CHANGELOG.md](../CHANGELOG.md) — Version history
|
||||
- [CONTRIBUTING.md](../CONTRIBUTING.md) — How to contribute, development workflow, commit conventions
|
||||
- [SECURITY.md](../SECURITY.md) — Vulnerability reporting policy
|
||||
Reference in New Issue
Block a user