Kamai MCP
officielMétré de plans de construction : transformez des plans PDF en pièces, murs, portes, fenêtres, surfaces et quantités, avec des vues interactives du plan et du métré.
Que pouvez-vous faire avec Kamai MCP ?
-
Parcourir les projets et les plans — Demandez à voir un panneau interactif de vos projets de construction et de leurs plans avec leur état de préparation via
view_projectsoulist_blueprints. -
Inspecter les mesures de relevé — Demandez un tableau triable des quantités mesurées (pièces, murs, portes, fenêtres) à partir d’un plan en utilisant
view_takeoffoulist_elements. -
Modifier les éléments du plan — Donnez l’instruction de renommer, recolorer ou reclasser des éléments, ou de créer un dossier de légende, via
update_elements,move_elementsoucreate_folder. -
Télécharger les plans traités — Obtenez un lien PDF temporaire d’un plan avec les éléments détectés mis en évidence à l’aide de
download_plan. -
Gérer les projets et les tâches — Créez ou renommez des projets, et consultez ou annulez des tâches de traitement, via
create_project,update_project,list_jobsoucancel_job. -
Exécuter des requêtes avancées — Avec les outils de requête activés, comptez les éléments par catégorie, trouvez des éléments spécifiques ou calculez les surfaces murales nettes à l’aide de
count_elements,find_elementsoucalculate_wall_surface_area.
Serveur MCP hébergé
npx add-mcp 'https://mcp.kamai.io/mcp'S’installe dans Claude Code, Codex, Cursor et plus
Documentation
kamai-mcp
Le serveur MCP de Kamai : outils et widgets MCP Apps pour les projets de plans de construction, les plans et les métrés de Kamai. Il fonctionne avec l'API MCP de Kamai et valide les jetons d'accès émis par le serveur d'autorisation OAuth de Kamai. Il ne contient aucun secret Kamai.
Outils
| Outil | Description |
|---|---|
view_projects | Panneau interactif des projets et plans de l'utilisateur |
list_blueprints | Plans groupés par projet, avec leurs identifiants et leur état de préparation |
view_blueprint | Une page de plan avec ses formes de métré dessinées par-dessus |
view_takeoff | Quantités de métré mesurées sous forme de tableau triable |
list_elements | Lignes par élément (pièces, murs, portes, fenêtres, objets) avec contours |
list_folders | Dossiers de légende d'un plan |
download_plan | Un PDF d'un plan traité avec ses éléments détectés mis en évidence, sous forme de lien de téléchargement temporaire |
update_elements, move_elements, create_folder | Renommer, recolorer et reclasser les éléments ; créer un dossier |
set_opening_height | Stocker une hauteur déclarée par l'utilisateur, ou une étiquette de porte/fenêtre, sur les pièces d'ouverture de surface murale |
create_project, update_project | Créer ou renommer un projet |
list_jobs, get_job, cancel_job | Tâches de traitement d'un projet |
view_upload | Panneau de téléversement pour un PDF de plan |
ingest_blueprint_from_chat | Importer un PDF joint à un message ChatGPT (ChatGPT uniquement) |
open_kamai | Ouvrir l'application Kamai dans un panneau |
Avec KAMAI_QUERY_TOOLS=on (voir ci-dessous) :
| Outil | Description |
|---|---|
count_elements | Comptages et totaux par catégorie Kamai (portes, fenêtres, murs, pièces humides…), groupés, additionnés dans la base de données |
find_elements | Éléments individuels avec type, dossier, étiquette, sens et mesures |
calculate_wall_surface_area | Surface nette des murs (peinture ou plâtre) des pièces |
render_table | Un panneau tableau dont les lignes mettent en évidence leurs éléments sur le plan |
set_scale | Définir l'échelle de dessin d'un plan |
list_blueprints prend également include_inventory (avec un project_id) : ce que contient chaque plan.
list_projects, get_project, get_blueprint, request_blueprint_upload,
finalize_blueprint_upload, et avec les outils de requête get_table_row_elements et
get_element_outlines, sont réservés à l'application : appelables par les widgets, non annoncés au modèle.
Exécution locale avec votre clé API
Le moyen le plus rapide d'exécuter ce serveur avec vos propres données Kamai est le mode local : l'hôte lance le serveur, communique avec lui via stdio, et l'identifiant est une clé API personnelle de Kamai (Clés API dans l'application Kamai) au lieu d'OAuth.
bun install
bun run build:widgets
KAMAI_API_KEY=... MCP_API_BASE_URL=https://mcp-api.kamai.io bun run local
Claude Code :
claude mcp add --env KAMAI_API_KEY=... --env MCP_API_BASE_URL=https://mcp-api.kamai.io \
--transport stdio kamai -- bun /path/to/kamai-mcp/src/local.ts
Claude Desktop (claude_desktop_config.json) :
{ "mcpServers": { "kamai": {
"command": "bun", "args": ["/path/to/kamai-mcp/src/local.ts"],
"env": { "KAMAI_API_KEY": "...", "MCP_API_BASE_URL": "https://mcp-api.kamai.io" } } } }
La clé est utilisée comme porteur pour chaque appel API ; les outils fonctionnent comme le propriétaire de la clé.
Ajoutez KAMAI_QUERY_TOOLS=on à l'environnement pour les outils de requête.
Exécution du serveur HTTP
bun install
cp .env.example .env
bun run dev
Les valeurs dans .env.example sont des espaces réservés : définissez MCP_PUBLIC_URL et
MCP_AUTH_ISSUER sur votre tunnel et sur un serveur d'autorisation accessible avant de démarrer,
sinon chaque requête sera refusée avec invalid_token.
| Variable | Signification |
|---|---|
PORT | Port d'écoute, défaut 8006 |
MCP_PUBLIC_URL | L'URL que les hôtes appellent et demandent un jeton (le resource dans la découverte) ; un tunnel, pas localhost |
MCP_AUTH_ISSUER | Émetteur des jetons d'accès, comparé octet par octet au iss du jeton |
MCP_AUTH_JWKS_URI | Facultatif. Par défaut {MCP_AUTH_ISSUER}/jwks.json |
MCP_API_BASE_URL | URL de base de l'API MCP Kamai, https://mcp-api.kamai.io. Également l'audience qu'un jeton d'accès doit porter |
MCP_ACCEPTED_AUDIENCES | Audiences facultatives séparées par des virgules, pour une migration. Par défaut MCP_API_BASE_URL |
KAMAI_API_KEY | Mode local uniquement : la clé API personnelle sous laquelle les outils fonctionnent |
KAMAI_APP_ORIGINS | Origines supplémentaires facultatives séparées par des virgules que open_kamai peut encadrer ; la première devient la valeur par défaut |
KAMAI_QUERY_TOOLS | on enregistre les outils de requête. https://mcp-api.kamai.io les sert ; laissez-le désactivé contre une API qui répond /v1/vocabulary avec 404 |
KAMAI_MCP_NO_INSTRUCTIONS | 1 laisse les instructions du serveur de côté, comme le fait claude.ai, pour tester les descriptions d'outils seules |
L'API MCP et le serveur d'autorisation sont exploités par Kamai, donc exécuter le
serveur HTTP de bout en bout nécessite l'accès aux deux. Un serveur MCP n'est vraiment testable
que contre un hôte réel, et un hôte ne peut atteindre qu'une URL HTTPS publique, donc le développement
en mode HTTP signifie fonctionner derrière un tunnel et pointer MCP_PUBLIC_URL vers celui-ci.
bun run dev construit d'abord les widgets : le serveur sert le HTML construit depuis
dist/widgets/, pas la source React, donc reconstruisez après avoir touché quoi que ce soit sous
src/widgets/app/.
Les widgets utilisent React, TypeScript, Vite, Tailwind CSS, DaisyUI et Lucide. Vite produit une ressource HTML autonome par widget, donc rien n'a besoin d'être hébergé.
Les builds locaux nécessitent Bun 1.3.3 et Node.js 22.12 ou plus récent.
Structure
src/index.ts Serveur HTTP, métadonnées de ressource protégée OAuth, transport MCP
src/local.ts Point d'entrée stdio pour le mode local (clé API personnelle)
src/auth.ts Vérification du jeton porteur (défis RFC 9728)
src/server.ts Enregistrement des outils et ressources
src/api.ts Client pour l'API MCP Kamai
src/elements.ts Pagination, filtrage et budgétisation des résultats de list_elements
src/errors.ts Le texte qu'un appel d'outil échoué montre au modèle
src/query/ Outils de requête : descriptions, vocabulaire, filtres, budgets, contrat
src/widgets/ Ressources de widgets, métadonnées CSP et sources des widgets React
scripts/ Build des widgets (échappe & pour qu'Open WebUI puisse intégrer les
widgets) ; check-routes et check-vocabulary contre une API en direct
scripts/open-webui/
Aides Open WebUI : un outil open_kamai, un script hôte en mode
affichage, une démo de pont local
Confidentialité et support
- Politique de confidentialité : https://kamai.io/privacy-policy
- Support : https://kamai.io/support ou contact@kamai.io
Contribution
Voir CONTRIBUTING.md. Les problèmes de sécurité vont à l'adresse dans SECURITY.md, pas au suivi des problèmes.
Licence
Apache-2.0. Copyright 2026 Kamai Enterprises LTD.
Le nom et le logo Kamai sont des marques déposées de Kamai Enterprises LTD et ne sont pas couverts par la licence.