dolibarr-mcp-server

ivanmartin33/dolibarr-mcp-server

3.2

If you are the rightful owner of dolibarr-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The Dolibarr MCP Server is a Model Context Protocol compliant server that facilitates structured access to Dolibarr ERP/CRM API endpoints.

Tools
4
Resources
0
Prompts
0

Dolibarr MCP Server

CI Release License: MIT Docker npm

A compliant Model Context Protocol (MCP) server that provides structured access to Dolibarr ERP/CRM API endpoints. Built with Nitro and implementing the JSON-RPC 2.0 specification.

Features

  • MCP Compliant: Full implementation of the Model Context Protocol specification
  • 🔧 Complete CRUD Operations: GET, POST, PUT, DELETE support for all Dolibarr endpoints
  • 🚀 Production Ready: Built with Nitro for optimal performance and deployment flexibility
  • 🔒 Secure: Environment-based configuration with API key authentication
  • 📦 Easy Integration: Compatible with n8n, Claude, and other MCP clients
  • 🌍 Multi-runtime: Supports Node.js, Bun, and Deno

Quick Start

Prerequisites

  • Node.js 18+
  • pnpm 9.0+
  • Dolibarr instance with REST API enabled
  • Valid Dolibarr API key

Installation

# Clone the repository
git clone https://github.com/ivanmartin33/dolibarr-mcp-server.git
cd dolibarr-mcp-server

# Install dependencies
pnpm install

# Copy environment file
cp .env.example .env
# Edit .env with your Dolibarr configuration

# Start development server
pnpm run dev

Environment Setup

Create a .env file in your project root:

DOLI_URL=https://your-dolibarr-instance.com/api/index.php
DOLI_KEY=your-dolibarr-api-key

Running the Server

# Development
pnpm run dev

# Production build
pnpm run build

# Start production server
pnpm run start

The server will be available at http://localhost:3000

MCP Tools Available

The server exposes four main tools for interacting with Dolibarr:

1. dolibarr_get

Fetch data from Dolibarr API using GET method.

{
  "name": "dolibarr_get",
  "arguments": {
    "endpoint": "thirdparties",
    "id": "1",
    "params": {
      "limit": "10"
    }
  }
}

2. dolibarr_post

Create new data in Dolibarr API using POST method.

{
  "name": "dolibarr_post",
  "arguments": {
    "endpoint": "thirdparties",
    "data": {
      "name": "New Company",
      "client": 1
    }
  }
}

3. dolibarr_put

Update existing data in Dolibarr API using PUT method.

{
  "name": "dolibarr_put",
  "arguments": {
    "endpoint": "thirdparties",
    "id": "1",
    "data": {
      "name": "Updated Company Name"
    }
  }
}

4. dolibarr_delete

Delete data from Dolibarr API using DELETE method.

{
  "name": "dolibarr_delete",
  "arguments": {
    "endpoint": "thirdparties",
    "id": "1"
  }
}

API Endpoints

Main MCP Endpoint

  • POST /mcp - Main JSON-RPC 2.0 endpoint for MCP communication

Additional Endpoints

  • GET /mcp/describe - Server information and tool descriptions
  • POST /mcp/tools/call - Direct tool execution endpoint
  • GET / - Landing page with server information

MCP Protocol Examples

Initialize Connection

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "initialize",
    "params": {},
    "id": 1
  }'

List Available Tools

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/list",
    "params": {},
    "id": 2
  }'

Execute a Tool

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "dolibarr_get",
      "arguments": {
        "endpoint": "users"
      }
    },
    "id": 3
  }'

Integration with n8n

The Dolibarr MCP Server can be easily integrated with n8n for workflow automation:

Connection URLs

  • n8n in Docker: http://host.docker.internal:3000/mcp
  • Local n8n: http://localhost:3000/mcp

Starting Server for Docker Access

NITRO_HOST=0.0.0.0 NITRO_PORT=3000 pnpm run dev

HTTP Request Node Configuration

In your n8n workflow, add an HTTP Request node:

  • Method: POST
  • URL: http://host.docker.internal:3000/mcp (for Docker) or http://localhost:3000/mcp (local)
  • Headers:
    {
      "Content-Type": "application/json"
    }
    
  • Body:
    {
      "jsonrpc": "2.0",
      "method": "tools/call",
      "params": {
        "name": "dolibarr_get",
        "arguments": {
          "endpoint": "{{ $json.endpoint }}",
          "id": "{{ $json.id }}"
        }
      },
      "id": "{{ $runIndex }}"
    }
    

Dolibarr Configuration

API Setup in Dolibarr

  1. Enable REST API Module:

    • Go to Home > Setup > Modules/Applications
    • Activate "Web services REST API"
  2. Create API User:

    • Go to Users & Groups
    • Create a new user or select existing
    • Generate API key in user profile
  3. Set Permissions:

    • Assign appropriate permissions to the API user
    • Recommended: Create dedicated API user with minimal required rights

Common Dolibarr Endpoints

  • users - User management
  • thirdparties - Companies/customers
  • products - Product catalog
  • orders - Sales orders
  • invoices - Customer invoices
  • proposals - Commercial proposals
  • contracts - Contracts
  • projects - Project management

Production Deployment

Environment Variables

VariableDescriptionDefault
NITRO_DOLI_URLDolibarr API base URLhttp://localhost/api/index.php
NITRO_DOLI_KEYDolibarr API keysuper_api_key
NITRO_HOSTServer hostlocalhost
NITRO_PORTServer port3000

Docker

FROM node:18-alpine

# Enable corepack for pnpm
RUN corepack enable

WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile --prod

COPY . .
RUN pnpm run build

ENV NITRO_HOST=0.0.0.0
ENV NITRO_PORT=3000

EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]

Docker Compose

version: '3.8'
services:
  dolibarr-mcp:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DOLI_URL=http://host.docker.internal:4000/api/index.php
      - DOLI_KEY=your-api-key
      - NITRO_HOST=0.0.0.0
      - NITRO_PORT=3000
    restart: unless-stopped

License

This project is licensed under the MIT License - see the file for details.

Links