mcp-erp
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.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessSyncing