Excel MCP Cleyrop
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Excel MCP Cleyrop Generate an expense report for March 2025"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Génération Excel → Cleyrop MCP
Serveur MCP qui génère des fichiers Excel (.xlsx) mis en forme à partir
d'une demande utilisateur et les dépose dans les données de travail d'un
projet Cleyrop (via cleyrop-sdk).
POC inspiré de la note interne « Génération de documents », packagé selon la
convention des tools MCP de La Fabrique
(même structure que tool-sharepoint).
Principe : séparer contenu et mise en forme
Le LLM ne produit jamais de mise en forme : il produit du contenu structuré, et un moteur de rendu distinct applique le style depuis un thème.
LLM ──> Contenu structuré (WorkbookSpec) ──> Moteur de rendu (openpyxl) ──> Thème ──> .xlsx
│
cleyrop-sdk.upload_file() ──▶ Données de travail (projet Cleyrop)Avantages : on change de thème sans toucher au prompt, on teste contenu et rendu séparément, et le même contenu pourrait alimenter d'autres formats plus tard. Bibliothèque : openpyxl (recommandée dans la note).
Related MCP server: mcp-excel
Tools exposés
Tool | Rôle |
| Génère le .xlsx. Sans |
| Lister les projets Cleyrop (id / slug) pour le paramètre |
| Diagnostiquer l'authentification Cleyrop (sans fuite de secret) |
| JSON Schema complet de la |
Téléchargement vs dépôt. Les tokens personnels Cleyrop sont en lecture seule : ils ne permettent pas d'écrire dans un projet. Le mode par défaut (sans
project) renvoie donc le fichier en téléchargement. Le dépôt (project) ne réussit qu'avec un compte de service disposant des droits d'écriture (client_credentials injectés par La Fabrique).Déploiement 100 % interne (cas Cleyrop). Si le tool n'a pas d'URL publique (image buildée et déployée sur la plateforme, connexions chat→tool internes), un lien de téléchargement servi par le tool n'est pas joignable depuis le navigateur de l'utilisateur. La livraison se fait alors par dépôt dans un projet : définis
EXCEL_MCP_DEFAULT_PROJECT(ouCLEYROP_PROJECT_SLUG) et le fichier est déposé dans les données de travail, où l'utilisateur le télécharge depuis l'UI Projets. Le dépôt exige un compte de service avec droits d'écriture (vérifie aveccleyrop_diagnose).Ressource MCP lisible (sans URL).
generate_exceljoint aussi le fichier comme ressource MCP (ResourceLinkversexcel://download/{token}, + blob embarqué). Un client qui sait lire les ressources peut récupérer le fichier via la connexion MCP elle-même (resources/read), sans aucune URL publique. Dépend du support côté client (panneau ressources / pièces jointes).Lien de téléchargement HTTP (si URL publique). Le serveur expose aussi une route
GET /download/{token}. À n'utiliser que si le tool est exposé publiquement : renseigne alorsEXCEL_MCP_PUBLIC_URL.
Capacités de rendu
Multi-feuilles · titre · entêtes stylées · colonnes typées
(text/number/integer/currency/percent/date/datetime) · formats de nombre auto
ou personnalisés · largeurs auto · zébrage · volet figé · filtres · ligne de
totaux (sum/avg/count/min/max via formules Excel) · mise en forme conditionnelle
(color_scale/data_bar/greater_than/less_than) · graphiques natifs
(bar/line/pie) · thèmes (cleyrop, default, minimal).
Architecture
Fichier | Rôle |
Schéma du contenu (Pydantic) : classeur → feuilles → colonnes typées → lignes | |
Thèmes de mise en forme (couleurs, polices) | |
Moteur de rendu : spec → | |
Wrapper cleyrop-sdk (dépôt dans les données de travail) | |
Nommage | |
Serveur MCP (FastMCP) exposant les tools | |
Point d'entrée conteneur (transport HTTP streamable-http) |
1. Configuration côté Cleyrop
Le client cleyrop-sdk est construit dans
src/excel_mcp/cleyrop_io.py selon le pattern de
production des tools/apps Cleyrop. Deux modes d'authentification, par ordre
de priorité :
Priorité | Mode | Variables | Comportement |
1 | Compte de service |
| Flux |
2 | Token pré-obtenu |
| Token de service ou personnel, utilisé tel quel ( |
⚠️ Le compte de service est prioritaire sur
CLEYROP_TOKEN: un token résiduel ou invalide ne peut donc pas masquer les client_credentials injectés par la plateforme. Si tu veux forcer l'usage d'un token personnel, ne fournis pas de client_secret.Les
CLEYROP_CLIENT_ID/CLEYROP_CLIENT_SECRETne sont jamais stockés dans le dépôt : ils sont injectés par La Fabrique au niveau de l'instance (le.envd'Assistant_Contrat ne les contient pas non plus). Le code se contente de les lire viaos.getenv.
Résolution des URL (auto-détectée) : in-cluster par défaut (FQDN
apisix-gateway.<namespace>.svc.cluster.local, CLEYROP_NAMESPACE), ou externe
via CLEYROP_DOMAIN, ou override explicite via
CLEYROP_API_URL + CLEYROP_KEYCLOAK_URL. Voir .env.example.
Dans un Tool/App de La Fabrique, ces variables sont normalement injectées automatiquement. Détails : doc cleyrop-sdk.
Le package cleyrop-sdk est privé (registre GitLab) : l'installation nécessite
UV_INDEX_CLEYROP_SDK_GITLAB_USERNAME / ..._PASSWORD (injectées au build).
2. Installation (DevSpace)
cd /home/cleyrop/tool-excel
uv venv && source .venv/bin/activate
# cleyrop-sdk vient d'un registre privé GitLab :
export UV_INDEX_CLEYROP_SDK_GITLAB_USERNAME=...
export UV_INDEX_CLEYROP_SDK_GITLAB_PASSWORD=...
uv syncCopie .env.example → .env si besoin de surcharger des variables.
3. Build de l'image (Docker / La Fabrique)
Le Dockerfile suit la convention des tools MCP Cleyrop : base
astral/uv, uv sync, serveur exposé en HTTP (streamable-http) sur le port
MCP_PORT (défaut 8000, endpoint /mcp).
cleyrop-sdk est résolu par uv via l'index cleyrop-sdk-gitlab déclaré dans
pyproject.toml ; uv s'authentifie avec les variables
UV_INDEX_CLEYROP_SDK_GITLAB_USERNAME / _PASSWORD injectées par
l'environnement de build Cleyrop — aucun secret à passer au build.
# build local (hors Cleyrop) : exporter d'abord les credentials du registre
export UV_INDEX_CLEYROP_SDK_GITLAB_USERNAME=...
export UV_INDEX_CLEYROP_SDK_GITLAB_PASSWORD=...
docker build -t excel-cleyrop-mcp .
docker run --rm -p 8000:8000 --env-file .env excel-cleyrop-mcpDans La Fabrique : Registre interne → Créer une image → Dépôt interne → dépôt
tool-excel, branchev1, chemin du DockerfileDockerfile.
Variables d'environnement de l'instance (Cleyrop)
Variable | Portée | Valeur |
| globale |
|
| globale (option) |
|
| globale (option) |
|
| globale (recommandé en interne) | Projet Cleyrop où déposer par défaut (id/slug) quand aucun |
| globale (si URL publique) | URL publique du tool (sans |
(client credentials cleyrop-sdk) | globale | injectées par La Fabrique (sinon |
4. Usage local (client MCP de bureau, stdio)
Pour tester sans déploiement, le serveur tourne aussi en stdio via la
commande excel-cleyrop-mcp :
{
"mcpServers": {
"excel-cleyrop": {
"command": "/home/cleyrop/tool-excel/.venv/bin/excel-cleyrop-mcp",
"env": { "EXCEL_MCP_EXPORT_DIR": "~/.excel-mcp/exports" }
}
}
}Sans paramètre project, generate_excel sauvegarde le fichier localement
(EXCEL_MCP_EXPORT_DIR) — pratique pour tester le rendu sans projet Cleyrop.
Exemple d'usage (depuis un client MCP)
cleyrop_list_projects()→ récupère l'id/slug du projet.« fais-moi un tableau Excel des ventes T1 par région avec totaux et un graphique, dépose-le dans le projet X » → le LLM construit la
WorkbookSpecet appellegenerate_excel(spec, project="X", cleyrop_folder="exports/2026").
Voir examples/example_spec.json pour une spec complète (devise, pourcentages, dates, totaux, mise en forme conditionnelle, graphique).
Tests
PYTHONPATH=src python -m pytest tests/ -qTests de non-régression du moteur de rendu (contenu, formats, formules, nommage).
Feuille de route
Pré-visualisation : convertir le .xlsx en aperçu (cf. note : XLSX→PDF via Gotenberg, déjà utilisé pour le flux DOCX).
Templates XLSX versionnés : lire un classeur modèle (entêtes/styles nommés) plutôt que tout générer from scratch —
openpyxlle permet.Génération incrémentale pour les gros classeurs (plan → données → validation → assemblage).
Available Tools
4 toolscleyrop_diagnoseA
Diagnostique la connexion Cleyrop (auth + accès API), sans exposer de secret.
À utiliser quand un dépôt échoue. Renvoie le mode d'URL et d'auth réellement
vus par le serveur (token présent ? longueur ? secret ?), l'URL d'API
résolue, et le résultat d'un appel réel me() qui distingue : token absent
(variable non injectée -> redéployer), token invalide (401), réseau
injoignable, ou OK avec l'identité authentifiée.
Inputs: no named parameters.
cleyrop_list_projectsA
Liste les projets Cleyrop accessibles (id, nom, slug).
Utile pour récupérer l'id ou le slug à passer comme paramètre project
de generate_excel.
Inputs: no named parameters. Returns: result
generate_excelA
Génère un classeur Excel (.xlsx) et le livre à l'utilisateur.
Le LLM appelant fournit le CONTENU (feuilles, colonnes typées, lignes, options comme totaux/graphiques). Le serveur construit le fichier, applique le thème, puis le livre :
si un projet est ciblé (
project, ou défaut EXCEL_MCP_DEFAULT_PROJECT / CLEYROP_PROJECT_SLUG) : dépose le fichier dans les données de travail du projet Cleyrop, où l'utilisateur le télécharge via l'UI. Nécessite un compte de service avec droits d'écriture (un token personnel est en lecture seule).sinon : renvoie un lien de téléchargement HTTP (utile seulement si le tool a une URL publique, EXCEL_MCP_PUBLIC_URL) + le blob embarqué.
Inputs: spec (required), project, cleyrop_folder, user.
get_excel_schemaA
Retourne le JSON Schema complet de la spécification attendue par generate_excel.
Décrit feuilles, colonnes, types, formats de nombre, totaux, graphiques et mise en forme conditionnelle.
Inputs: no named parameters. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: diagnose troubleshoots connections, list_projects retrieves project identifiers, generate_excel creates the file, and get_excel_schema provides data structure. No overlap.
Naming is inconsistent: two tools use a 'cleyrop_' prefix while two use a direct verb_noun pattern (generate_excel, get_excel_schema). While readable, the lack of a uniform convention causes mild confusion.
With 4 tools, the set is on the smaller side but well-scoped for the core task of generating Excel files. It covers necessary utility actions without being overly sparse.
The tools cover the main workflow: diagnose, list projects, generate, and schema retrieval. Minor gaps like lacking a tool to list generated files or manage projects are acceptable given the focused purpose of Excel generation.
Maintenance
Related MCP Connectors
Real .docx and .xlsx files from structured data, with automatic Hebrew/Arabic RTL.
Turn analyzed data into an Excel-like spreadsheet at a shareable URL: formulas, styles, filters.
Make a Stripe monthly report, turn your PayPal transaction history into Excel.
Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables reading and writing Excel workbooks (.xlsx) through MCP. Supports listing sheets, tables, pivot tables, reading cell data, exporting to CSV/text/Markdown, and creating/modifying Excel files.14GPL 3.0
- AlicenseNot gradedqualityDmaintenanceProvides full read and write access to Excel workbooks (sheets, cell ranges, tables, formulas, formatting, and cross-workbook references) via MCP, running locally or as an HTTP/SSE service.17 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables MCP clients to create and manipulate Excel workbooks programmatically, including sheets, cell data, formatting, formulas, charts, and pivot tables.ISC
- FlicenseAqualityCmaintenanceEnables MCP clients to read, create, update, and summarize .xlsx spreadsheets in an isolated directory, with resources for catalog and metadata, tools for range reading, row appending, cell updates, and numeric summaries, plus a reusable sales-analysis prompt.5-