Serveur MCP (Model Context Protocol) pour l'API BoondManager, permettant a Claude (Desktop, Cowork, Code) de rechercher, consulter, creer et modifier des enregistrements dans votre instance BoondManager.
158 outils couvrant 36 domaines de l'API BoondManager. Voir TOOLS.md pour le catalogue auto-gΓ©nΓ©rΓ© (outils + prompts + ressources).
| Domaine | Outils | Operations |
|---|---|---|
| Candidats | 10 | CRUD + information, technical-data, administrative, actions, positionings |
| Ressources | 15 | CRUD + information, technical-data, administrative, advantages, actions, positionings, projects, times-reports, expenses-reports, absences-reports |
| Contacts | 11 | CRUD + information, actions, opportunities, projects, orders, invoices |
| Societes | 14 | CRUD + information, contacts, actions, opportunities, projects, orders, invoices, purchases, provider-invoices |
| Opportunites | 10 | CRUD + information, actions, positionings, projects, simulation |
| Domaine | Outils | Operations |
|---|---|---|
| Projets | 12 | CRUD + information, actions, simulation, deliveries-groupments, orders, purchases, productivity |
| Positionnements | 4 | search, get, create, delete |
| Livraisons / CRA | 2 | search, get |
| Achats / Sous-traitance | 4 | search, get, create, delete |
| Domaine | Outils | Operations |
|---|---|---|
| Factures client | 5 | CRUD complet |
| Factures fournisseur | 2 | search, get |
| Bons de commande | 5 | CRUD complet |
| Paiements | 2 | search, get |
| Notes de frais | 5 | CRUD complet |
| Produits | 5 | CRUD complet |
| Domaine | Outils | Operations |
|---|---|---|
| Absences | 5 | CRUD complet |
| Planning absences | 1 | search (vue globale) |
| Feuilles de temps | 3 | search, get, resource timesheets |
| Contrats | 2 | get, create |
| Avantages | 2 | search, get |
| Domaine | Outils | Operations |
|---|---|---|
| Actions | 4 | search, get, create, delete |
| Validations | 2 | search, get |
| Todolists | 2 | search, get |
| Domaine | Outils | Operations |
|---|---|---|
| Reporting societes | 1 | search |
| Reporting projets | 1 | search |
| Reporting ressources | 1 | search |
| Reporting synthese | 1 | search |
| Reporting plans de production | 1 | search |
| Domaine | Outils | Operations |
|---|---|---|
| Comptes utilisateurs | 2 | search, get |
| Agences | 2 | search, get |
| Business Units | 2 | search, get |
| Poles | 2 | search, get |
| Roles | 2 | search, get |
| Calendriers | 2 | search, get |
| Drapeaux / Etiquettes | 2 | search, get |
| Webhooks | 2 | search, get |
| Logs d'audit | 2 | search, get |
| Notifications | 2 | search, get |
| Fils de discussion | 2 | search, get |
| Application | 2 | dictionnaire, utilisateur courant |
Les entites principales disposent d'outils dedies par onglet pour un acces cible :
| Entite | Onglets disponibles |
|---|---|
| Candidats | information, technical-data, administrative, actions, positionings |
| Ressources | information, technical-data, administrative, advantages, actions, positionings, projects, times-reports, expenses-reports, absences-reports |
| Contacts | information, actions, opportunities, projects, orders, invoices |
| Societes | information, contacts, actions, opportunities, projects, orders, invoices, purchases, provider-invoices |
| Opportunites | information, actions, positionings, projects, simulation |
| Projets | information, actions, simulation, deliveries-groupments, orders, purchases, productivity |
Le serveur expose les dictionnaires de reference Boond comme ressources MCP (clients qui en supportent l'affichage : Claude Desktop, MCP Inspector, etc.). Permet au modele de traduire un state ou typeOf entier en libelle sans appel d'outil supplementaire.
| URI | Contenu |
|---|---|
boond://application/current-user |
Profil de l'utilisateur courant (id, agence, permissions) |
boond://dictionary/states/{entity} |
Etats par entite : resources, candidates, contacts, companies, opportunities, projects, invoices, orders, positionings, absences |
boond://dictionary/typeOf/{entity} |
Types par entite : resources, candidates, contacts, projects, actions, absences |
boond://dictionary/countries |
Liste des pays |
boond://dictionary/currencies |
Liste des devises |
boond://dictionary/languages |
Liste des langues |
Pour les dictionnaires hors de cette liste curee, l'outil boond_application_dictionary reste disponible.
En plus des outils, le serveur expose des prompts MCP (templates pre-cables) qui orchestrent les bons appels d'outils dans le bon ordre pour les workflows recurrents. Visibles dans les clients qui supportent les prompts (slash command ou menu).
| Prompt | Usage |
|---|---|
synthese_equipe |
Etat d'une equipe : qui fait quoi, qui est absent, qui est dispo (par defaut : mon equipe). |
pipeline_commercial |
Opportunites avec closing dans une periode : repartition par etat, CA pondere, top 10. |
factures_a_relancer |
Factures impayees dont l'echeance est depassee, regroupees par societe. |
candidats_pour_opportunite |
A partir d'une opportunite, propose les candidats actifs qui matchent (outils, expertise, mobilite, dispo). |
fiche_consultant |
Vue 360 d'une ressource : info + technique + positionnements + absences + CRA recents. |
recap_hebdo |
Recap hebdomadaire : pipeline qui a bouge, equipe absente, projets actifs, actions a mener. |
- Node.js >= 20
- Un compte BoondManager avec acces API active
- L'option "Allow API Rest calls using BasicAuth authentication" activee dans la configuration BoondManager (si BasicAuth)
Telechargez le fichier .mcpb depuis la derniere release GitHub, puis dans Claude Desktop : Fichier > Installer une extension... et selectionnez le fichier. Les identifiants sont demandes a l'installation et stockes de maniere chiffree (Keychain macOS / Credential Manager Windows).
# Avec un token API (recommande)
claude mcp add --transport stdio --env BOOND_API_TOKEN=votre_token_jwt \
boondmanager -- npx -y boondmanager-mcp-server
# Avec BasicAuth
claude mcp add --transport stdio \
--env BOOND_USER=votre_login \
--env BOOND_PASSWORD=votre_mot_de_passe \
boondmanager -- npx -y boondmanager-mcp-serverWindows : ajoutez
cmd /cavantnpx:claude mcp add --transport stdio --env BOOND_API_TOKEN=votre_token \ boondmanager -- cmd /c npx -y boondmanager-mcp-server
Pour rendre le serveur disponible dans tous vos projets, ajoutez --scope user :
claude mcp add --transport stdio --scope user \
--env BOOND_API_TOKEN=votre_token_jwt \
boondmanager -- npx -y boondmanager-mcp-serverAjoutez un fichier .mcp.json a la racine de votre projet (a commiter dans git) :
{
"mcpServers": {
"boondmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "${BOOND_API_TOKEN}"
}
}
}
}Chaque membre de l'equipe n'a qu'a definir la variable d'environnement BOOND_API_TOKEN sur sa machine. Le fichier .mcp.json supporte la syntaxe ${VAR} et ${VAR:-default} pour les variables d'environnement.
Les administrateurs peuvent deployer le serveur MCP pour tous les utilisateurs via le fichier managed-mcp.json :
| OS | Chemin |
|---|---|
| macOS | /Library/Application Support/ClaudeCode/managed-mcp.json |
| Linux / WSL | /etc/claude-code/managed-mcp.json |
| Windows | C:\Program Files\ClaudeCode\managed-mcp.json |
{
"mcpServers": {
"boondmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "${BOOND_API_TOKEN}",
"BOOND_BASE_URL": "https://votre-instance.boondmanager.com/api"
}
}
}
}Ce fichier prend le controle exclusif des serveurs MCP : les utilisateurs ne peuvent pas ajouter ou modifier de serveurs en dehors de cette configuration.
Pour restreindre les serveurs autorises tout en laissant les utilisateurs en ajouter, utilisez plutot managed-settings.json :
{
"allowedMcpServers": [
{ "serverName": "boondmanager" }
]
}Ajoutez dans votre fichier de configuration Claude :
macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
Windows : %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"boondmanager": {
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "votre_token_jwt"
}
}
}
}npx boondmanager-mcp-serverOu installation globale :
npm install -g boondmanager-mcp-server
boondmanager-mcp-servergit clone https://github.com/fauguste/boondmanager-mcp-server.git
cd boondmanager-mcp-server
npm install
npm run buildLe serveur est aussi disponible sur Smithery. La configuration est dans smithery.yaml Γ la racine du repo : Smithery propose une UI avec les champs d'authentification (JWT auto / JWT prΓ©-construit / BasicAuth) et installe le serveur via npx.
Le serveur est listΓ© sur le marketplace MCP de LobeHub. Dans LobeChat (auto-hebergΓ© ou cloud), ajouter le MCP via Reglages > Plugins > MCP > Ajouter avec :
{
"name": "boondmanager",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_USER_TOKEN": "<votre_user_token>",
"BOOND_CLIENT_TOKEN": "<votre_client_token>",
"BOOND_CLIENT_KEY": "<votre_client_key>"
}
}Ou utiliser le transport HTTP (voir section Transports) pour un deploiement partage en mode gateway.
Le serveur utilise pino pour des logs structures JSON (agrΓ©gateurs, observabilitΓ©).
| Variable | DΓ©faut | Description |
|---|---|---|
LOG_LEVEL |
info |
Niveau de log : trace, debug, info, warn, error, fatal |
LOG_FORMAT |
(auto) | json pour JSON pur, sinon pino-pretty en dev |
En production (NODE_ENV=production), les logs sont en JSON par dΓ©faut. En dev, le format pretty (colorisΓ©) est actif sauf si LOG_FORMAT=json. Chaque requΓͺte HTTP reΓ§oit un corrId (8 hex) pour tracer la requΓͺte dans les logs.
Option 1 : Token API JWT (recommande)
export BOOND_API_TOKEN="votre_token_jwt"Option 2 : BasicAuth
export BOOND_USER="votre_login"
export BOOND_PASSWORD="votre_mot_de_passe"export BOOND_BASE_URL="https://votre-instance.boondmanager.com/api"Par defaut, l'URL est https://ui.boondmanager.com/api.
Chaque requete vers l'API BoondManager expire au bout de 30 secondes par defaut. Pour les tenants lents ou des rapports volumineux, augmenter via :
export BOOND_HTTP_TIMEOUT_MS=60000 # 60 sSi une requete depasse le delai, le serveur renvoie une erreur explicite mentionnant BOOND_HTTP_TIMEOUT_MS plutot que de rester bloque indefiniment.
Le client HTTP retente automatiquement les erreurs transitoires avec un backoff exponentiel + jitter :
- GET : retry sur
5xx,429, erreurs reseau (ECONNRESET, etc.) et timeouts (GET etant idempotent). - POST / PUT / PATCH / DELETE : retry uniquement sur
429afin d'eviter de dupliquer une ecriture cote serveur. Les5xxet erreurs reseau remontent immediatement. - L'en-tete
Retry-After(en secondes ou en HTTP-date) est honore et plafonne aBOOND_HTTP_RETRY_MAX_MS.
| Variable | Defaut | Description |
|---|---|---|
BOOND_HTTP_MAX_RETRIES |
2 |
Nombre maximal de tentatives supplementaires (3 essais au total). 0 desactive entierement les retries. |
BOOND_HTTP_RETRY_BASE_MS |
200 |
Delai de base utilise pour le backoff exponentiel (base * 2^attempt, avec jitter). |
BOOND_HTTP_RETRY_MAX_MS |
5000 |
Plafond du delai entre deux tentatives. |
Pour eviter qu'une boucle d'outils emballee n'inonde l'API (et n'enchaine les 429), le client applique un token bucket local. Defauts : 10 req/s soutenu, rafale 20 β invisible en usage interactif normal. Les retentatives consomment aussi un jeton.
| Variable | Defaut | Description |
|---|---|---|
BOOND_HTTP_RATE_LIMIT_RPS |
10 |
Debit soutenu (requetes/seconde). 0 desactive completement. |
BOOND_HTTP_RATE_LIMIT_BURST |
20 |
Capacite du bucket = taille maximale de rafale immediate. |
Le serveur supporte deux transports MCP, selectionnables via la variable d'environnement MCP_TRANSPORT.
| Transport | Valeur | Cas d'usage |
|---|---|---|
| stdio (defaut) | stdio ou non defini |
Claude Desktop, Claude Code, integration locale |
| Streamable HTTP | http (alias : streamable-http) |
Gateway MCP, deploiement distant, conteneurs |
Depuis la v1.4.0, le serveur peut etre expose en HTTP (specification MCP Streamable HTTP 2025-03-26) afin d'etre branche derriere une passerelle MCP ou deploye comme service.
export MCP_TRANSPORT=http
export MCP_HTTP_HOST=0.0.0.0 # defaut: 127.0.0.1
export MCP_HTTP_PORT=3000 # defaut: 3000
export MCP_HTTP_PATH=/mcp # defaut: /mcp
export MCP_HTTP_BEARER_TOKEN=xxx # optionnel: protege l'endpoint
export BOOND_API_TOKEN=... # (credentials BoondManager, comme en stdio)
npx boondmanager-mcp-server
# π BoondManager MCP Server running (streamable HTTP transport)
# π‘ Endpoint: http://0.0.0.0:3000/mcp
# π Mode: statelessVariables d'environnement HTTP
| Variable | Defaut | Description |
|---|---|---|
MCP_TRANSPORT |
stdio |
http pour activer le transport HTTP |
MCP_HTTP_HOST |
127.0.0.1 |
Interface d'ecoute (0.0.0.0 pour exposer) |
MCP_HTTP_PORT |
3000 |
Port TCP |
MCP_HTTP_PATH |
/mcp |
Chemin HTTP de l'endpoint MCP |
MCP_HTTP_STATEFUL |
false |
true pour activer le mode stateful (session Mcp-Session-Id) |
MCP_HTTP_BEARER_TOKEN |
(vide) | Si defini, le serveur exige Authorization: Bearer <token> |
MCP_HTTP_JSON_RESPONSE |
false |
true pour forcer des reponses JSON (sans SSE) |
MCP_HTTP_SESSION_TTL_MS |
1800000 (30 min) |
En mode stateful, duree d'inactivite au-dela de laquelle une session est fermee. |
MCP_HTTP_SESSION_SWEEP_INTERVAL_MS |
300000 (5 min) |
Frequence de balayage des sessions inactives. |
Stateless (defaut) : chaque requete HTTP POST est independante, idealement adapte a un gateway qui multiplexe plusieurs serveurs MCP. Aucune session n'est conservee cote serveur.
Stateful : le serveur genere un Mcp-Session-Id a l'initialisation que le client doit renvoyer dans chaque requete suivante. Utile pour les clients MCP natifs qui beneficient du streaming SSE et des notifications serveur.
curl -s -X POST http://localhost:3000/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": { "name": "curl", "version": "1.0" }
}
}'claude mcp add --transport http \
--header "Authorization: Bearer votre_token_local" \
boondmanager https://mcp.votre-domaine.com/mcp{
"mcpServers": {
"boondmanager": {
"type": "http",
"url": "https://mcp.votre-domaine.com/mcp",
"headers": {
"Authorization": "Bearer ${MCP_HTTP_BEARER_TOKEN}"
}
}
}
}Une image Docker prete a l'emploi est publiee a chaque release sur GitHub Container Registry, multi-arch (linux/amd64 + linux/arm64). Elle demarre par defaut en transport HTTP, sur le port 3000, sur l'interface 0.0.0.0.
docker run --rm -p 3000:3000 \
-e MCP_HTTP_BEARER_TOKEN=$(openssl rand -hex 32) \
-e BOOND_API_TOKEN=$BOOND_API_TOKEN \
ghcr.io/fauguste/boondmanager-mcp-server:latestTags disponibles : :latest, :1, :1.5, :1.5.1 (la version exacte est recommandee pour la prod). Variables d'environnement supportees : voir Configuration et Transports.
Si vous preferez ne pas utiliser l'image GHCR, le serveur peut tourner dans une image Node generique :
docker run --rm -p 3000:3000 \
-e MCP_TRANSPORT=http \
-e MCP_HTTP_HOST=0.0.0.0 \
-e MCP_HTTP_BEARER_TOKEN=$(openssl rand -hex 32) \
-e BOOND_API_TOKEN=$BOOND_API_TOKEN \
node:22-alpine \
npx -y boondmanager-mcp-serverSecurite : en HTTP, les credentials BoondManager restent cote serveur (variables d'environnement du conteneur). Seul le token MCP (
MCP_HTTP_BEARER_TOKEN) circule entre le client et le serveur. Derriere un reverse proxy, ajoutez TLS (HTTPS) et limitez l'acces reseau au gateway.
Une fois configure, vous pouvez demander a Claude :
CRM & Commercial
- "Recherche les candidats avec des competences en React a Paris"
- "Montre-moi les details techniques de la ressource #12345"
- "Cree un nouveau contact Jean Dupont chez Acme Corp"
- "Liste toutes les opportunites en cours"
- "Quels sont les positionnements de l'opportunite #20 ?"
Gestion de projets
- "Cree un projet Mission Alpha pour la societe #42"
- "Affiche le planning du projet #33"
- "Quels sont les bons de commande du projet #55 ?"
- "Affiche la productivite du projet #12"
Facturation & Finance
- "Recherche les factures en attente de paiement"
- "Liste les factures fournisseur de la societe #100"
- "Affiche les achats du projet #55"
RH & Temps
- "Affiche les feuilles de temps de la ressource #100 pour mars 2025"
- "Liste les absences prevues ce mois-ci"
- "Affiche les notes de frais de la ressource #200"
- "Quels sont les avantages de la ressource #50 ?"
Suivi d'activite
- "Quelles sont les actions recentes sur le candidat #789 ?"
- "Affiche les validations en attente"
- "Liste les taches de ma todolist"
Reporting
- "Affiche le reporting de synthese globale"
- "Quel est le reporting de productivite des ressources ?"
Administration
- "Recupere le dictionnaire des types d'actions"
- "Liste les agences et business units"
- "Affiche les webhooks configures"
boondmanager-mcp-server/
βββ src/
β βββ index.ts # Point d'entree MCP (selection du transport)
β βββ server.ts # Factory createMcpServer() + liste des domaines
β βββ constants.ts # Configuration, API paths, onglets
β βββ types.ts # Types TypeScript (JSON:API)
β βββ transports/
β β βββ http.ts # Transport Streamable HTTP (gateway/remote)
β βββ services/
β β βββ boond-client.ts # Client HTTP API BoondManager
β βββ schemas/
β β βββ index.ts # Schemas Zod (validation des entrees)
β βββ tools/
β βββ index.ts # Barrel export de tous les domaines
β βββ crud-factory.ts # Factory generique CRUD (DRY)
β βββ candidates.ts # 10 outils (CRUD + 5 onglets)
β βββ resources.ts # 15 outils (CRUD + 10 onglets)
β βββ contacts.ts # 11 outils (CRUD + 6 onglets)
β βββ companies.ts # 14 outils (CRUD + 9 onglets)
β βββ opportunities.ts # 10 outils (CRUD + 5 onglets)
β βββ projects.ts # 12 outils (CRUD + 7 onglets)
β βββ actions.ts # 4 outils
β βββ timesheets.ts # 3 outils
β βββ invoices.ts # 5 outils
β βββ orders.ts # 5 outils
β βββ deliveries.ts # 2 outils
β βββ absences.ts # 5 outils
β βββ expenses.ts # 5 outils
β βββ products.ts # 5 outils
β βββ positionings.ts # 4 outils
β βββ payments.ts # 2 outils
β βββ advantages.ts # 2 outils
β βββ contracts.ts # 2 outils
β βββ purchases.ts # 4 outils
β βββ provider-invoices.ts # 2 outils
β βββ accounts.ts # 2 outils
β βββ agencies.ts # 2 outils
β βββ business-units.ts # 2 outils
β βββ poles.ts # 2 outils
β βββ roles.ts # 2 outils
β βββ calendars.ts # 2 outils
β βββ flags.ts # 2 outils
β βββ webhooks.ts # 2 outils
β βββ logs.ts # 2 outils
β βββ notifications.ts # 2 outils
β βββ threads.ts # 2 outils
β βββ todolists.ts # 2 outils
β βββ validations.ts # 2 outils
β βββ reporting.ts # 5 outils
β βββ planning-absences.ts # 1 outil
β βββ application.ts # 2 outils
βββ dist/ # Build JavaScript
βββ .github/ # CI/CD, templates, Dependabot
βββ package.json
βββ tsconfig.json
βββ vitest.config.ts
βββ eslint.config.js
βββ README.md
- Les credentials BoondManager (JWT ou BasicAuth) ne transitent jamais via le protocole MCP -- ils sont configures en variables d'environnement cote serveur uniquement
- En mode stdio, le serveur tourne en local, aucun port reseau n'est expose
- En mode streamable HTTP, protegez l'endpoint avec
MCP_HTTP_BEARER_TOKEN+ TLS (HTTPS via reverse proxy) et restreignez l'acces reseau a votre gateway - Compatible avec les exigences ISO 27001
- L'API BoondManager est hebergee en France et conforme RGPD
- Authentification BoondManager : JWT (recommande), BasicAuth, ou JWT construit automatiquement a partir des composants
# Mode watch pour le developpement
npm run dev
# Build
npm run build
# Lancer le serveur
npm start
# Tests
npm test # 255 tests
npm run test:coverage # Avec couverture
# Qualite
npm run lint
npm run typecheck- Runtime : Node.js >= 20 (ES2022)
- Langage : TypeScript 5.8+ (mode strict)
- MCP SDK : @modelcontextprotocol/sdk 1.12+
- Validation : Zod 4
- Tests : Vitest 4 + couverture V8
- Lint : ESLint 10 + typescript-eslint
- Transports : stdio (defaut) + Streamable HTTP (MCP 2025-03-26)
- Documentation API BoondManager
- Collection Postman BoondManager
- Specification MCP
- pyboondmanager (reference Python)
- Catalogue d'outils auto-genere (TOOLS.md)
- Distribution & marketplaces (docs/distribution.md)
Apache License 2.0 - Copyright (c) 2025 FrΓ©dΓ©ric Auguste