MCP server for Dolibarr ERP/CRM — manage thirdparties, commercial proposals, contracts and invoices from any MCP-compatible AI client (Claude Code, Claude Desktop, etc.)
Server has 15 tools with consistent naming (verb_noun pattern) and basic descriptions. All tools have Zod schemas with type definitions. However, many parameter descriptions are missing or trivial (null or empty), and output schemas are not documented. Error handling returns generic error messages without recovery guidance. Parameter constraints are present but descriptions lack actionable detail (e.g., 'Unix timestamp' without format clarification). No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications.
Add a line item to an existing contract (e.g. an annual hosting/maintenance service).
Add a line item to an existing commercial proposal.
Create a new contract header. Add line items afterwards with dolibarr_add_contract_line.
Create a new commercial proposal (quote) header. Add line items afterwards with dolibarr_add_proposal_line.
Create a new thirdparty (client/supplier) in Dolibarr.
Find a Dolibarr thirdparty (client/supplier) by email address.
Many parameter descriptions are null or missing entirely (e.g., dolibarr_get_thirdparty 'id', dolibarr_find_thirdparty_by_email 'email', dolibarr_list_proposals params). LLMs cannot infer parameter meaning from names alone.
Output schemas are not documented. Tools return JSON but LLMs have no guidance on expected fields, types, or structure. This forces LLMs to guess at response shape and risks downstream tool call failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Get a single contract, including its lines, by ID.
Get a single commercial proposal (quote), including its lines, by ID.
Get a single Dolibarr thirdparty (client/supplier) by its ID.
List contracts in Dolibarr.
List commercial proposals (quotes) in Dolibarr.
List thirdparties (clients/suppliers) in Dolibarr. Supports basic filtering and pagination.
Check that the configured Dolibarr URL and API key work, by fetching a single thirdparty record.
Update fields on an existing Dolibarr thirdparty.
Validate (confirm) a draft commercial proposal so it can be sent to the client.
Error handling returns generic error messages ('Error: <message>') without recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications (READ_ONLY vs WRITE). LLMs cannot infer safety properties from tool names alone.
Parameter descriptions lack actionable detail. E.g., 'Unix timestamp; defaults to now if omitted' is vague, should specify 'Unix timestamp in seconds (e.g., 1704067200 for 2024-01-01T00:00:00Z)'. LLMs frequently miscalculate timestamp conversions.