Skip to main content
Glama
ivanmartin33

Dolibarr MCP Server

by ivanmartin33

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

Related MCP server: Smartsheet MCP Server

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

Variable

Description

Default

NITRO_DOLI_URL

Dolibarr API base URL

http://localhost/api/index.php

NITRO_DOLI_KEY

Dolibarr API key

super_api_key

NITRO_HOST

Server host

localhost

NITRO_PORT

Server port

3000

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 LICENSE file for details.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with the Xano API through a Model Context Protocol (MCP) interface, providing secure and type-safe management of Xano database operations.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides a Model Context Protocol interface for the Dolibarr ERP/CRM, enabling AI agents to manage customers, products, invoices, and orders. It features specialized search tools and server-side filtering to efficiently interact with Dolibarr's REST API while minimizing token usage.
    1
    MIT