Skip to main content
Glama
README.md
# MCP ERP Client

Serveur MCP (Model Context Protocol) pour interagir avec l'ERP via l'API REST.

## Securite

Ce MCP ne contient **aucun secret** dans le code source. Toutes les donnees sensibles sont dans le fichier `.env` (exclu du repo via `.gitignore`).

**Double verrou d'authentification :**

1. **Cle API** (`X-API-Key`) — sans cette cle, l'API rejette toutes les requetes
2. **Compte Microsoft** (Azure AD Device Code Flow) — l'utilisateur doit s'authentifier avec un compte Microsoft autorise dans le tenant Azure AD

Meme si quelqu'un clone ce repo, il ne peut rien faire sans :
- La cle API (`ERP_API_KEY`)
- Un compte Microsoft dans le bon tenant Azure AD (`AZURE_AD_TENANT_ID`)
- L'ID de l'application Azure AD (`AZURE_AD_CLIENT_ID`)

## Installation

```bash
npm install
cp .env.example .env
# Remplir le .env avec les vraies valeurs
npm run build
```

## Configuration (.env)

```env
ERP_API_URL=https://votre-api.vercel.app
ERP_API_KEY=votre-cle-api
AZURE_AD_TENANT_ID=votre-tenant-id
AZURE_AD_CLIENT_ID=votre-client-id
```

## Utilisation avec Claude Desktop / Claude Code

Ajouter dans la configuration MCP :

```json
{
  "mcpServers": {
    "erp": {
      "command": "node",
      "args": ["/chemin/vers/mcp/dist/index.js"]
    }
  }
}
```

## Outils disponibles (14)

### Authentification (2)
| Outil | Description |
|-------|-------------|
| `erp_login` | Connexion Microsoft (Device Code Flow) |
| `erp_status` | Verifier l'etat de la session |

### Clients (4)
| Outil | Description |
|-------|-------------|
| `list_clients` | Rechercher/lister les clients |
| `get_client` | Detail d'un client par ID |
| `create_client` | Creer un client (societe, SIREN, adresse obligatoires) |
| `update_client` | Modifier un client |

### Devis (6)
| Outil | Description |
|-------|-------------|
| `list_devis` | Rechercher/lister les devis |
| `get_devis` | Detail d'un devis avec ses lignes |
| `create_devis` | Creer un devis (brouillon) |
| `update_devis` | Modifier un devis |
| `add_devis_item` | Ajouter une ligne a un devis |
| `update_devis_item` | Modifier une ligne de devis |

### Templates (2)
| Outil | Description |
|-------|-------------|
| `list_templates` | Lister les modeles de devis |
| `get_template` | Detail d'un template avec ses lignes |

## Architecture

```
mcp/
  src/
    index.ts          # Point d'entree (transport stdio)
    api-client.ts     # Client HTTP (X-API-Key + Bearer Microsoft)
    schemas.ts        # Validation Zod des inputs
    auth/
      device-code.ts  # Microsoft Device Code Flow
      refresh.ts      # Auto-refresh du token
      token-store.ts  # Stockage local (~/.erp-mcp/auth.json)
    tools/
      auth-tools.ts   # erp_login, erp_status
      clients.ts      # CRUD clients
      devis.ts        # CRUD devis + items
      templates.ts    # Lecture templates
```

Aucune connexion directe a la base de donnees. Tout passe par l'API REST.