bricks-builder-mcp 3.2.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server.js +671 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "bricks-builder-mcp",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.5.0",
|
|
5
5
|
"description": "Serveur MCP pour piloter Bricks Builder (WordPress) depuis Claude — édition de pages, gestion d'éléments, réordonnancement des sections.",
|
|
6
6
|
"main": "server.js",
|
|
7
7
|
"bin": {
|
package/server.js
CHANGED
|
@@ -386,6 +386,407 @@ mcpServer.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
386
386
|
required: ["title"],
|
|
387
387
|
},
|
|
388
388
|
},
|
|
389
|
+
|
|
390
|
+
// ===== OUTILS v3.3.0 — GESTION DES PAGES =====
|
|
391
|
+
|
|
392
|
+
{
|
|
393
|
+
name: "delete_page",
|
|
394
|
+
description: "Supprime une page WordPress. Par défaut la met à la corbeille (récupérable). Utilise force=true pour supprimer définitivement (irréversible). Refuse de supprimer la page d'accueil active — la changer d'abord.",
|
|
395
|
+
inputSchema: {
|
|
396
|
+
type: "object",
|
|
397
|
+
properties: {
|
|
398
|
+
pageId: { type: "number", description: "L'ID de la page à supprimer" },
|
|
399
|
+
force: { type: "boolean", description: "Si true, suppression définitive. Sinon, mise à la corbeille (défaut: false)" },
|
|
400
|
+
},
|
|
401
|
+
required: ["pageId"],
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
name: "update_page_meta",
|
|
406
|
+
description: "Met à jour les méta-données d'une page (titre, slug URL, statut de publication, page parente). Seuls les champs fournis sont modifiés. Utile pour renommer, changer l'URL, publier un draft, organiser la hiérarchie.",
|
|
407
|
+
inputSchema: {
|
|
408
|
+
type: "object",
|
|
409
|
+
properties: {
|
|
410
|
+
pageId: { type: "number", description: "L'ID de la page à modifier" },
|
|
411
|
+
title: { type: "string", description: "Nouveau titre (optionnel)" },
|
|
412
|
+
slug: { type: "string", description: "Nouveau slug URL (optionnel, ex: 'accueil')" },
|
|
413
|
+
status: { type: "string", enum: ["publish", "draft", "private", "pending"], description: "Nouveau statut de publication (optionnel)" },
|
|
414
|
+
parentId: { type: "number", description: "ID de la page parente (0 = racine, optionnel)" },
|
|
415
|
+
},
|
|
416
|
+
required: ["pageId"],
|
|
417
|
+
},
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
name: "duplicate_page",
|
|
421
|
+
description: "Duplique une page existante avec son contenu Bricks complet (sections, éléments, settings). Très utile pour créer des variantes à partir d'une page bien faite, ou pour partir d'un template existant. La copie est créée en draft par défaut.",
|
|
422
|
+
inputSchema: {
|
|
423
|
+
type: "object",
|
|
424
|
+
properties: {
|
|
425
|
+
sourcePageId: { type: "number", description: "ID de la page source à dupliquer" },
|
|
426
|
+
newTitle: { type: "string", description: "Titre de la copie (optionnel, défaut: 'Copie de {original}')" },
|
|
427
|
+
status: { type: "string", enum: ["publish", "draft", "private", "pending"], description: "Statut de la copie (défaut: 'draft')" },
|
|
428
|
+
},
|
|
429
|
+
required: ["sourcePageId"],
|
|
430
|
+
},
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
name: "set_homepage",
|
|
434
|
+
description: "Définit une page comme page d'accueil du site WordPress. La page doit être publiée. Pour réinitialiser sur les derniers articles (mode WordPress par défaut), passer reset=true.",
|
|
435
|
+
inputSchema: {
|
|
436
|
+
type: "object",
|
|
437
|
+
properties: {
|
|
438
|
+
pageId: { type: "number", description: "ID de la page à mettre en accueil" },
|
|
439
|
+
reset: { type: "boolean", description: "Si true, reset sur les derniers articles (pageId ignoré)" },
|
|
440
|
+
},
|
|
441
|
+
},
|
|
442
|
+
},
|
|
443
|
+
|
|
444
|
+
// ===== OUTILS v3.4.0 — HEALTH, MÉDIAS, MENUS, STYLES GLOBAUX =====
|
|
445
|
+
|
|
446
|
+
{
|
|
447
|
+
name: "health_check",
|
|
448
|
+
description: "Test de connexion au site WordPress + infos système (versions plugin/WP/PHP/Bricks, multisite, URL). Utile pour debug et confirmer qu'on parle au bon site.",
|
|
449
|
+
inputSchema: { type: "object", properties: {} },
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
name: "list_all_pages",
|
|
453
|
+
description: "Liste TOUTES les pages WordPress du site (pas seulement celles avec contenu Bricks). Inclut les pages WP standard. Utile pour avoir l'inventaire complet avant de créer/dupliquer/nettoyer.",
|
|
454
|
+
inputSchema: { type: "object", properties: {} },
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
name: "upload_media",
|
|
458
|
+
description: "Télécharge une image depuis une URL et l'ajoute à la médiathèque WordPress. Renvoie l'URL WP de l'image, prête à utiliser dans les éléments Bricks (image, background, etc.). Très utile pour intégrer des photos client sans passer par la médiathèque WP manuellement.",
|
|
459
|
+
inputSchema: {
|
|
460
|
+
type: "object",
|
|
461
|
+
properties: {
|
|
462
|
+
sourceUrl: { type: "string", description: "URL publique de l'image à télécharger (jpg/png/webp/gif/svg)" },
|
|
463
|
+
title: { type: "string", description: "Titre de l'image dans la médiathèque (optionnel)" },
|
|
464
|
+
alt: { type: "string", description: "Alt text pour SEO/accessibilité (optionnel mais fortement recommandé)" },
|
|
465
|
+
caption: { type: "string", description: "Légende affichée sous l'image (optionnel)" },
|
|
466
|
+
},
|
|
467
|
+
required: ["sourceUrl"],
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
name: "list_media",
|
|
472
|
+
description: "Liste paginée des médias de la médiathèque WordPress avec leurs URLs. Filtrable par recherche. Utile pour retrouver des images déjà uploadées.",
|
|
473
|
+
inputSchema: {
|
|
474
|
+
type: "object",
|
|
475
|
+
properties: {
|
|
476
|
+
page: { type: "number", description: "Page de pagination (défaut: 1)" },
|
|
477
|
+
perPage: { type: "number", description: "Nombre par page (défaut: 20, max: 100)" },
|
|
478
|
+
search: { type: "string", description: "Recherche textuelle dans les titres/noms de fichier" },
|
|
479
|
+
},
|
|
480
|
+
},
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
name: "list_menus",
|
|
484
|
+
description: "Liste les menus de navigation WordPress du site avec leur nombre d'items et les emplacements assignés (header, footer, etc.). À utiliser avant add_menu_item.",
|
|
485
|
+
inputSchema: { type: "object", properties: {} },
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
name: "add_menu_item",
|
|
489
|
+
description: "Ajoute un item à un menu WordPress de navigation. Soit on lie une page existante (via pageId), soit un lien custom (via customUrl + label). Très utile pour ajouter automatiquement les nouvelles pages au menu principal.",
|
|
490
|
+
inputSchema: {
|
|
491
|
+
type: "object",
|
|
492
|
+
properties: {
|
|
493
|
+
menuId: { type: "number", description: "ID du menu (cf list_menus)" },
|
|
494
|
+
pageId: { type: "number", description: "ID de la page à ajouter (mode 'page')" },
|
|
495
|
+
customUrl: { type: "string", description: "URL custom (mode 'lien externe')" },
|
|
496
|
+
label: { type: "string", description: "Libellé visible. Si pageId fourni, par défaut prend le titre de la page" },
|
|
497
|
+
parentItemId: { type: "number", description: "Mettre cet item comme enfant d'un autre item (sous-menu)" },
|
|
498
|
+
},
|
|
499
|
+
required: ["menuId"],
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
name: "get_global_styles",
|
|
504
|
+
description: "Récupère les settings globaux de Bricks Builder pour ce site (typographie globale, breakpoints, palette, classes globales, theme styles). Utile au début d'un projet pour comprendre la base visuelle existante.",
|
|
505
|
+
inputSchema: { type: "object", properties: {} },
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
name: "update_global_styles",
|
|
509
|
+
description: "Met à jour les settings globaux Bricks via fusion récursive. Utile pour appliquer une typo de site ou une convention CSS partout d'un coup. Seuls les champs fournis sont modifiés.",
|
|
510
|
+
inputSchema: {
|
|
511
|
+
type: "object",
|
|
512
|
+
properties: {
|
|
513
|
+
settings: { type: "object", description: "Settings à fusionner avec l'existant" },
|
|
514
|
+
},
|
|
515
|
+
required: ["settings"],
|
|
516
|
+
},
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
name: "list_color_palette",
|
|
520
|
+
description: "Récupère la palette de couleurs globale Bricks (les couleurs nommées réutilisables sur tout le site).",
|
|
521
|
+
inputSchema: { type: "object", properties: {} },
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
name: "add_color_to_palette",
|
|
525
|
+
description: "Ajoute une couleur à la palette globale Bricks. Permet ensuite de l'utiliser dans n'importe quel élément via son ID/nom plutôt que de répéter la valeur hex partout.",
|
|
526
|
+
inputSchema: {
|
|
527
|
+
type: "object",
|
|
528
|
+
properties: {
|
|
529
|
+
name: { type: "string", description: "Nom de la couleur (ex: 'Primaire', 'Accent orange')" },
|
|
530
|
+
hex: { type: "string", description: "Valeur hexadécimale (ex: '#ff6b35' ou 'ff6b35')" },
|
|
531
|
+
},
|
|
532
|
+
required: ["name", "hex"],
|
|
533
|
+
},
|
|
534
|
+
},
|
|
535
|
+
|
|
536
|
+
// ===== OUTILS v3.5.0 — PHASE A : INSPECTION + CUSTOM CODE + FONTS + CODE EXEC =====
|
|
537
|
+
|
|
538
|
+
{
|
|
539
|
+
name: "list_bricks_options",
|
|
540
|
+
description: "Dump TOUTES les options WP commençant par 'bricks_'. Outil debug essentiel pour cartographier ce qui existe en base avant de modifier. Retourne nom, type, taille, aperçu de chaque option.",
|
|
541
|
+
inputSchema: { type: "object", properties: {} },
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
name: "get_bricks_option",
|
|
545
|
+
description: "Récupère une option Bricks spécifique en intégralité (sans tronquer). Le nom doit commencer par 'bricks_'.",
|
|
546
|
+
inputSchema: {
|
|
547
|
+
type: "object",
|
|
548
|
+
properties: { name: { type: "string", description: "Nom de l'option (ex: 'bricks_global_settings')" } },
|
|
549
|
+
required: ["name"],
|
|
550
|
+
},
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
name: "get_custom_code",
|
|
554
|
+
description: "Récupère le custom code global Bricks (CSS injecté dans <head>, scripts header, body header, body footer). C'est l'endroit natif pour charger Google Fonts via <link>.",
|
|
555
|
+
inputSchema: { type: "object", properties: {} },
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
name: "set_custom_code",
|
|
559
|
+
description: "Met à jour le custom code global Bricks. customScriptsHeader est l'endroit IDÉAL pour charger Google Fonts via <link rel='stylesheet'>. Seuls les champs fournis sont modifiés.",
|
|
560
|
+
inputSchema: {
|
|
561
|
+
type: "object",
|
|
562
|
+
properties: {
|
|
563
|
+
customCss: { type: "string", description: "CSS injecté dans <head>" },
|
|
564
|
+
customScriptsHeader: { type: "string", description: "HTML/scripts injectés dans <head> (idéal pour Google Fonts <link>)" },
|
|
565
|
+
customScriptsBodyHeader: { type: "string", description: "HTML injecté juste après l'ouverture <body>" },
|
|
566
|
+
customScriptsBodyFooter: { type: "string", description: "HTML injecté juste avant </body>" },
|
|
567
|
+
},
|
|
568
|
+
},
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
name: "get_code_execution_status",
|
|
572
|
+
description: "État de l'exécution des code elements Bricks. Bricks 1.9.7+ désactive code execution par défaut pour sécurité. À vérifier avant de tenter d'utiliser <script>/<svg> inline dans un code element.",
|
|
573
|
+
inputSchema: { type: "object", properties: {} },
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
name: "set_code_execution",
|
|
577
|
+
description: "Active/désactive l'exécution des code elements Bricks + définit les rôles autorisés. Active la capability WP 'bricks_execute_code'. Note: Bricks exige aussi des code signatures valides côté builder.",
|
|
578
|
+
inputSchema: {
|
|
579
|
+
type: "object",
|
|
580
|
+
properties: {
|
|
581
|
+
enabled: { type: "boolean", description: "true pour activer, false pour désactiver" },
|
|
582
|
+
roles: { type: "array", items: { type: "string" }, description: "Rôles autorisés à exécuter du code (ex: ['administrator'])" },
|
|
583
|
+
},
|
|
584
|
+
required: ["enabled"],
|
|
585
|
+
},
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
name: "list_custom_fonts",
|
|
589
|
+
description: "Liste les custom fonts enregistrées dans Bricks Font Manager (CPT bricks_fonts).",
|
|
590
|
+
inputSchema: { type: "object", properties: {} },
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
name: "register_custom_font",
|
|
594
|
+
description: "Enregistre une custom font dans Bricks Font Manager. Une fois enregistrée, elle sera dispo dans les selects font-family. Utiliser cet outil quand on a déjà les URLs des fichiers .woff2.",
|
|
595
|
+
inputSchema: {
|
|
596
|
+
type: "object",
|
|
597
|
+
properties: {
|
|
598
|
+
name: { type: "string", description: "Nom de la font (ex: 'Anton')" },
|
|
599
|
+
fontFamily: { type: "string", description: "font-family CSS (souvent identique au name)" },
|
|
600
|
+
faces: { type: "array", items: { type: "object" }, description: "Variantes : [{ weight: 400, style: 'normal', url: 'https://.../font-regular.woff2' }, ...]" },
|
|
601
|
+
},
|
|
602
|
+
required: ["name", "faces"],
|
|
603
|
+
},
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
name: "delete_custom_font",
|
|
607
|
+
description: "Supprime une custom font du Font Manager Bricks.",
|
|
608
|
+
inputSchema: {
|
|
609
|
+
type: "object",
|
|
610
|
+
properties: { id: { type: "number", description: "ID du post bricks_fonts à supprimer" } },
|
|
611
|
+
required: ["id"],
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
name: "register_google_font_locally",
|
|
616
|
+
description: "Télécharge un Google Font et l'enregistre dans le Font Manager Bricks. Récupère automatiquement les URLs des .woff2 depuis Google Fonts CSS et crée le post bricks_fonts. C'est la méthode native pour utiliser une Google Font dans Bricks.",
|
|
617
|
+
inputSchema: {
|
|
618
|
+
type: "object",
|
|
619
|
+
properties: {
|
|
620
|
+
name: { type: "string", description: "Nom de la font Google (ex: 'Anton', 'Inter', 'Bebas Neue')" },
|
|
621
|
+
weights: { type: "array", items: { type: "number" }, description: "Poids souhaités (défaut: [400], ex: [400, 700, 900])" },
|
|
622
|
+
},
|
|
623
|
+
required: ["name"],
|
|
624
|
+
},
|
|
625
|
+
},
|
|
626
|
+
|
|
627
|
+
// ===== OUTILS v3.5.0 — PHASE B : GLOBAL CLASSES + THEME STYLES + PAGE CODE =====
|
|
628
|
+
|
|
629
|
+
{
|
|
630
|
+
name: "list_global_classes",
|
|
631
|
+
description: "Liste les classes CSS globales Bricks réutilisables sur tout le site.",
|
|
632
|
+
inputSchema: { type: "object", properties: {} },
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
name: "create_global_class",
|
|
636
|
+
description: "Crée une classe CSS globale Bricks. Une fois créée, on peut l'appliquer à n'importe quel élément via _cssClasses pour réutiliser des styles partout.",
|
|
637
|
+
inputSchema: {
|
|
638
|
+
type: "object",
|
|
639
|
+
properties: {
|
|
640
|
+
name: { type: "string", description: "Nom de la classe (ex: 'btn-primary', 'card')" },
|
|
641
|
+
settings: { type: "object", description: "Settings Bricks à appliquer (ex: { _typography: ..., _padding: ..., _background: ... })" },
|
|
642
|
+
},
|
|
643
|
+
required: ["name", "settings"],
|
|
644
|
+
},
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
name: "update_global_class",
|
|
648
|
+
description: "Modifie une classe globale par id. Tous les éléments qui utilisent cette classe seront affectés.",
|
|
649
|
+
inputSchema: {
|
|
650
|
+
type: "object",
|
|
651
|
+
properties: {
|
|
652
|
+
id: { type: "string", description: "ID de la classe" },
|
|
653
|
+
name: { type: "string", description: "Nouveau nom (optionnel)" },
|
|
654
|
+
settings: { type: "object", description: "Nouveaux settings (optionnel, remplace l'ancien)" },
|
|
655
|
+
},
|
|
656
|
+
required: ["id"],
|
|
657
|
+
},
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
name: "delete_global_class",
|
|
661
|
+
description: "Supprime une classe globale Bricks.",
|
|
662
|
+
inputSchema: {
|
|
663
|
+
type: "object",
|
|
664
|
+
properties: { id: { type: "string", description: "ID de la classe à supprimer" } },
|
|
665
|
+
required: ["id"],
|
|
666
|
+
},
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
name: "list_theme_styles",
|
|
670
|
+
description: "Liste les theme styles Bricks (styles globaux conditionnels appliqués selon contexte).",
|
|
671
|
+
inputSchema: { type: "object", properties: {} },
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
name: "create_theme_style",
|
|
675
|
+
description: "Crée un theme style Bricks. Définit les styles par défaut globaux (typo, couleurs, buttons, etc.) avec conditions optionnelles d'application.",
|
|
676
|
+
inputSchema: {
|
|
677
|
+
type: "object",
|
|
678
|
+
properties: {
|
|
679
|
+
name: { type: "string", description: "Nom du theme style" },
|
|
680
|
+
settings: { type: "object", description: "Settings (typography, colors, headings, buttons, etc.)" },
|
|
681
|
+
conditions: { type: "array", items: { type: "object" }, description: "Conditions d'application (optionnel)" },
|
|
682
|
+
},
|
|
683
|
+
required: ["name", "settings"],
|
|
684
|
+
},
|
|
685
|
+
},
|
|
686
|
+
{
|
|
687
|
+
name: "update_theme_style",
|
|
688
|
+
description: "Modifie un theme style existant.",
|
|
689
|
+
inputSchema: {
|
|
690
|
+
type: "object",
|
|
691
|
+
properties: {
|
|
692
|
+
id: { type: "string", description: "ID du theme style" },
|
|
693
|
+
name: { type: "string", description: "Nouveau nom (opt)" },
|
|
694
|
+
settings: { type: "object", description: "Nouveaux settings (opt)" },
|
|
695
|
+
conditions: { type: "array", items: { type: "object" }, description: "Nouvelles conditions (opt)" },
|
|
696
|
+
},
|
|
697
|
+
required: ["id"],
|
|
698
|
+
},
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
name: "delete_theme_style",
|
|
702
|
+
description: "Supprime un theme style.",
|
|
703
|
+
inputSchema: {
|
|
704
|
+
type: "object",
|
|
705
|
+
properties: { id: { type: "string", description: "ID du theme style" } },
|
|
706
|
+
required: ["id"],
|
|
707
|
+
},
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
name: "get_page_custom_code",
|
|
711
|
+
description: "Récupère le custom code (CSS/JS) spécifique à une page Bricks (Page Settings → Custom Code).",
|
|
712
|
+
inputSchema: {
|
|
713
|
+
type: "object",
|
|
714
|
+
properties: { pageId: { type: "number", description: "ID de la page" } },
|
|
715
|
+
required: ["pageId"],
|
|
716
|
+
},
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
name: "set_page_custom_code",
|
|
720
|
+
description: "Définit du CSS et/ou JS spécifique à une page (Page Settings → Custom Code). Utile pour des animations, des polices spécifiques à cette page seulement, etc.",
|
|
721
|
+
inputSchema: {
|
|
722
|
+
type: "object",
|
|
723
|
+
properties: {
|
|
724
|
+
pageId: { type: "number", description: "ID de la page" },
|
|
725
|
+
customCss: { type: "string", description: "CSS de la page (sera injecté dans <head> uniquement sur cette page)" },
|
|
726
|
+
customScripts: { type: "string", description: "Scripts/HTML de la page (injectés dans <head>)" },
|
|
727
|
+
},
|
|
728
|
+
required: ["pageId"],
|
|
729
|
+
},
|
|
730
|
+
},
|
|
731
|
+
|
|
732
|
+
// ===== OUTILS v3.5.0 — PHASE C : STYLE MANAGER 2.2 + COMPONENTS =====
|
|
733
|
+
|
|
734
|
+
{
|
|
735
|
+
name: "list_typography_scales",
|
|
736
|
+
description: "Liste les typography scales globales Bricks (Style Manager 2.2). Définit des tailles de typo réutilisables pour h1, h2, body, etc.",
|
|
737
|
+
inputSchema: { type: "object", properties: {} },
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
name: "set_typography_scale",
|
|
741
|
+
description: "Crée ou met à jour une typography scale (Style Manager 2.2). Si id existe, met à jour ; sinon crée une nouvelle.",
|
|
742
|
+
inputSchema: {
|
|
743
|
+
type: "object",
|
|
744
|
+
properties: {
|
|
745
|
+
id: { type: "string", description: "ID de la scale (laisser vide pour créer)" },
|
|
746
|
+
name: { type: "string", description: "Nom de la scale (ex: 'Default')" },
|
|
747
|
+
values: { type: "object", description: "Valeurs (ex: { h1: '64px', h2: '48px', body: '16px' })" },
|
|
748
|
+
},
|
|
749
|
+
},
|
|
750
|
+
},
|
|
751
|
+
{
|
|
752
|
+
name: "list_spacing_scales",
|
|
753
|
+
description: "Liste les spacing scales globales Bricks (Style Manager 2.2).",
|
|
754
|
+
inputSchema: { type: "object", properties: {} },
|
|
755
|
+
},
|
|
756
|
+
{
|
|
757
|
+
name: "set_spacing_scale",
|
|
758
|
+
description: "Crée ou met à jour une spacing scale.",
|
|
759
|
+
inputSchema: {
|
|
760
|
+
type: "object",
|
|
761
|
+
properties: {
|
|
762
|
+
id: { type: "string", description: "ID de la scale (laisser vide pour créer)" },
|
|
763
|
+
name: { type: "string", description: "Nom de la scale" },
|
|
764
|
+
values: { type: "object", description: "Valeurs (ex: { xs: '8px', sm: '16px', md: '24px', lg: '48px' })" },
|
|
765
|
+
},
|
|
766
|
+
},
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
name: "list_css_variables",
|
|
770
|
+
description: "Liste les CSS variables globales Bricks (Style Manager 2.2). Variables réutilisables comme --primary, --accent, etc.",
|
|
771
|
+
inputSchema: { type: "object", properties: {} },
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
name: "set_css_variable",
|
|
775
|
+
description: "Crée ou met à jour une CSS variable globale. Si la variable existe, sa valeur est mise à jour ; sinon elle est créée.",
|
|
776
|
+
inputSchema: {
|
|
777
|
+
type: "object",
|
|
778
|
+
properties: {
|
|
779
|
+
name: { type: "string", description: "Nom (avec ou sans --, ex: '--primary' ou 'primary')" },
|
|
780
|
+
value: { type: "string", description: "Valeur (ex: '#FD5B2C', '64px', '1.5')" },
|
|
781
|
+
},
|
|
782
|
+
required: ["name", "value"],
|
|
783
|
+
},
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
name: "list_components",
|
|
787
|
+
description: "Liste les components Bricks (templates avec type=component, Bricks 2.x).",
|
|
788
|
+
inputSchema: { type: "object", properties: {} },
|
|
789
|
+
},
|
|
389
790
|
],
|
|
390
791
|
};
|
|
391
792
|
});
|
|
@@ -524,6 +925,276 @@ mcpServer.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
524
925
|
});
|
|
525
926
|
break;
|
|
526
927
|
|
|
928
|
+
// ===== OUTILS v3.3.0 — GESTION DES PAGES =====
|
|
929
|
+
|
|
930
|
+
case "delete_page":
|
|
931
|
+
console.error(`[LOG] Exécution: delete_page pageId=${args.pageId} force=${args.force}`);
|
|
932
|
+
result = await callWordPressAPI("/delete-page", "POST", {
|
|
933
|
+
pageId: args.pageId,
|
|
934
|
+
force: args.force || false,
|
|
935
|
+
});
|
|
936
|
+
break;
|
|
937
|
+
|
|
938
|
+
case "update_page_meta":
|
|
939
|
+
console.error(`[LOG] Exécution: update_page_meta pageId=${args.pageId}`);
|
|
940
|
+
result = await callWordPressAPI("/update-page-meta", "POST", {
|
|
941
|
+
pageId: args.pageId,
|
|
942
|
+
title: args.title,
|
|
943
|
+
slug: args.slug,
|
|
944
|
+
status: args.status,
|
|
945
|
+
parentId: args.parentId,
|
|
946
|
+
});
|
|
947
|
+
break;
|
|
948
|
+
|
|
949
|
+
case "duplicate_page":
|
|
950
|
+
console.error(`[LOG] Exécution: duplicate_page source=${args.sourcePageId}`);
|
|
951
|
+
result = await callWordPressAPI("/duplicate-page", "POST", {
|
|
952
|
+
sourcePageId: args.sourcePageId,
|
|
953
|
+
newTitle: args.newTitle || "",
|
|
954
|
+
status: args.status || "draft",
|
|
955
|
+
});
|
|
956
|
+
break;
|
|
957
|
+
|
|
958
|
+
case "set_homepage":
|
|
959
|
+
console.error(`[LOG] Exécution: set_homepage pageId=${args.pageId} reset=${args.reset}`);
|
|
960
|
+
result = await callWordPressAPI("/set-homepage", "POST", {
|
|
961
|
+
pageId: args.pageId,
|
|
962
|
+
reset: args.reset || false,
|
|
963
|
+
});
|
|
964
|
+
break;
|
|
965
|
+
|
|
966
|
+
// ===== OUTILS v3.4.0 — HEALTH, MÉDIAS, MENUS, STYLES GLOBAUX =====
|
|
967
|
+
|
|
968
|
+
case "health_check":
|
|
969
|
+
console.error(`[LOG] Exécution: health_check`);
|
|
970
|
+
result = await callWordPressAPI("/health", "GET");
|
|
971
|
+
break;
|
|
972
|
+
|
|
973
|
+
case "list_all_pages":
|
|
974
|
+
console.error(`[LOG] Exécution: list_all_pages`);
|
|
975
|
+
result = await callWordPressAPI("/list-all-pages", "GET");
|
|
976
|
+
break;
|
|
977
|
+
|
|
978
|
+
case "upload_media":
|
|
979
|
+
console.error(`[LOG] Exécution: upload_media depuis ${args.sourceUrl}`);
|
|
980
|
+
result = await callWordPressAPI("/upload-media", "POST", {
|
|
981
|
+
sourceUrl: args.sourceUrl,
|
|
982
|
+
title: args.title,
|
|
983
|
+
alt: args.alt,
|
|
984
|
+
caption: args.caption,
|
|
985
|
+
});
|
|
986
|
+
break;
|
|
987
|
+
|
|
988
|
+
case "list_media":
|
|
989
|
+
console.error(`[LOG] Exécution: list_media page=${args.page} perPage=${args.perPage}`);
|
|
990
|
+
result = await callWordPressAPI("/list-media", "POST", {
|
|
991
|
+
page: args.page || 1,
|
|
992
|
+
perPage: args.perPage || 20,
|
|
993
|
+
search: args.search,
|
|
994
|
+
});
|
|
995
|
+
break;
|
|
996
|
+
|
|
997
|
+
case "list_menus":
|
|
998
|
+
console.error(`[LOG] Exécution: list_menus`);
|
|
999
|
+
result = await callWordPressAPI("/list-menus", "GET");
|
|
1000
|
+
break;
|
|
1001
|
+
|
|
1002
|
+
case "add_menu_item":
|
|
1003
|
+
console.error(`[LOG] Exécution: add_menu_item menuId=${args.menuId}`);
|
|
1004
|
+
result = await callWordPressAPI("/add-menu-item", "POST", {
|
|
1005
|
+
menuId: args.menuId,
|
|
1006
|
+
pageId: args.pageId,
|
|
1007
|
+
customUrl: args.customUrl,
|
|
1008
|
+
label: args.label,
|
|
1009
|
+
parentItemId: args.parentItemId,
|
|
1010
|
+
});
|
|
1011
|
+
break;
|
|
1012
|
+
|
|
1013
|
+
case "get_global_styles":
|
|
1014
|
+
console.error(`[LOG] Exécution: get_global_styles`);
|
|
1015
|
+
result = await callWordPressAPI("/get-global-styles", "GET");
|
|
1016
|
+
break;
|
|
1017
|
+
|
|
1018
|
+
case "update_global_styles":
|
|
1019
|
+
console.error(`[LOG] Exécution: update_global_styles`);
|
|
1020
|
+
result = await callWordPressAPI("/update-global-styles", "POST", {
|
|
1021
|
+
settings: args.settings || {},
|
|
1022
|
+
});
|
|
1023
|
+
break;
|
|
1024
|
+
|
|
1025
|
+
case "list_color_palette":
|
|
1026
|
+
console.error(`[LOG] Exécution: list_color_palette`);
|
|
1027
|
+
result = await callWordPressAPI("/list-color-palette", "GET");
|
|
1028
|
+
break;
|
|
1029
|
+
|
|
1030
|
+
case "add_color_to_palette":
|
|
1031
|
+
console.error(`[LOG] Exécution: add_color_to_palette name="${args.name}"`);
|
|
1032
|
+
result = await callWordPressAPI("/add-color-to-palette", "POST", {
|
|
1033
|
+
name: args.name,
|
|
1034
|
+
hex: args.hex,
|
|
1035
|
+
});
|
|
1036
|
+
break;
|
|
1037
|
+
|
|
1038
|
+
// ===== OUTILS v3.5.0 — PHASE A : INSPECTION + CUSTOM CODE + FONTS + CODE EXEC =====
|
|
1039
|
+
|
|
1040
|
+
case "list_bricks_options":
|
|
1041
|
+
result = await callWordPressAPI("/list-bricks-options", "GET");
|
|
1042
|
+
break;
|
|
1043
|
+
|
|
1044
|
+
case "get_bricks_option":
|
|
1045
|
+
result = await callWordPressAPI("/get-bricks-option", "POST", { name: args.name });
|
|
1046
|
+
break;
|
|
1047
|
+
|
|
1048
|
+
case "get_custom_code":
|
|
1049
|
+
result = await callWordPressAPI("/get-custom-code", "GET");
|
|
1050
|
+
break;
|
|
1051
|
+
|
|
1052
|
+
case "set_custom_code":
|
|
1053
|
+
result = await callWordPressAPI("/set-custom-code", "POST", {
|
|
1054
|
+
customCss: args.customCss,
|
|
1055
|
+
customScriptsHeader: args.customScriptsHeader,
|
|
1056
|
+
customScriptsBodyHeader: args.customScriptsBodyHeader,
|
|
1057
|
+
customScriptsBodyFooter: args.customScriptsBodyFooter,
|
|
1058
|
+
});
|
|
1059
|
+
break;
|
|
1060
|
+
|
|
1061
|
+
case "get_code_execution_status":
|
|
1062
|
+
result = await callWordPressAPI("/get-code-execution-status", "GET");
|
|
1063
|
+
break;
|
|
1064
|
+
|
|
1065
|
+
case "set_code_execution":
|
|
1066
|
+
result = await callWordPressAPI("/set-code-execution", "POST", {
|
|
1067
|
+
enabled: args.enabled,
|
|
1068
|
+
roles: args.roles || [],
|
|
1069
|
+
});
|
|
1070
|
+
break;
|
|
1071
|
+
|
|
1072
|
+
case "list_custom_fonts":
|
|
1073
|
+
result = await callWordPressAPI("/list-custom-fonts", "GET");
|
|
1074
|
+
break;
|
|
1075
|
+
|
|
1076
|
+
case "register_custom_font":
|
|
1077
|
+
result = await callWordPressAPI("/register-custom-font", "POST", {
|
|
1078
|
+
name: args.name,
|
|
1079
|
+
fontFamily: args.fontFamily || args.name,
|
|
1080
|
+
faces: args.faces,
|
|
1081
|
+
});
|
|
1082
|
+
break;
|
|
1083
|
+
|
|
1084
|
+
case "delete_custom_font":
|
|
1085
|
+
result = await callWordPressAPI("/delete-custom-font", "POST", { id: args.id });
|
|
1086
|
+
break;
|
|
1087
|
+
|
|
1088
|
+
case "register_google_font_locally":
|
|
1089
|
+
result = await callWordPressAPI("/register-google-font-locally", "POST", {
|
|
1090
|
+
name: args.name,
|
|
1091
|
+
weights: args.weights || [400],
|
|
1092
|
+
});
|
|
1093
|
+
break;
|
|
1094
|
+
|
|
1095
|
+
// ===== OUTILS v3.5.0 — PHASE B : GLOBAL CLASSES + THEME STYLES + PAGE CODE =====
|
|
1096
|
+
|
|
1097
|
+
case "list_global_classes":
|
|
1098
|
+
result = await callWordPressAPI("/list-global-classes", "GET");
|
|
1099
|
+
break;
|
|
1100
|
+
|
|
1101
|
+
case "create_global_class":
|
|
1102
|
+
result = await callWordPressAPI("/create-global-class", "POST", {
|
|
1103
|
+
name: args.name,
|
|
1104
|
+
settings: args.settings || {},
|
|
1105
|
+
});
|
|
1106
|
+
break;
|
|
1107
|
+
|
|
1108
|
+
case "update_global_class":
|
|
1109
|
+
result = await callWordPressAPI("/update-global-class", "POST", {
|
|
1110
|
+
id: args.id,
|
|
1111
|
+
name: args.name,
|
|
1112
|
+
settings: args.settings,
|
|
1113
|
+
});
|
|
1114
|
+
break;
|
|
1115
|
+
|
|
1116
|
+
case "delete_global_class":
|
|
1117
|
+
result = await callWordPressAPI("/delete-global-class", "POST", { id: args.id });
|
|
1118
|
+
break;
|
|
1119
|
+
|
|
1120
|
+
case "list_theme_styles":
|
|
1121
|
+
result = await callWordPressAPI("/list-theme-styles", "GET");
|
|
1122
|
+
break;
|
|
1123
|
+
|
|
1124
|
+
case "create_theme_style":
|
|
1125
|
+
result = await callWordPressAPI("/create-theme-style", "POST", {
|
|
1126
|
+
name: args.name,
|
|
1127
|
+
settings: args.settings || {},
|
|
1128
|
+
conditions: args.conditions || [],
|
|
1129
|
+
});
|
|
1130
|
+
break;
|
|
1131
|
+
|
|
1132
|
+
case "update_theme_style":
|
|
1133
|
+
result = await callWordPressAPI("/update-theme-style", "POST", {
|
|
1134
|
+
id: args.id,
|
|
1135
|
+
name: args.name,
|
|
1136
|
+
settings: args.settings,
|
|
1137
|
+
conditions: args.conditions,
|
|
1138
|
+
});
|
|
1139
|
+
break;
|
|
1140
|
+
|
|
1141
|
+
case "delete_theme_style":
|
|
1142
|
+
result = await callWordPressAPI("/delete-theme-style", "POST", { id: args.id });
|
|
1143
|
+
break;
|
|
1144
|
+
|
|
1145
|
+
case "get_page_custom_code":
|
|
1146
|
+
result = await callWordPressAPI("/get-page-custom-code", "POST", { pageId: args.pageId });
|
|
1147
|
+
break;
|
|
1148
|
+
|
|
1149
|
+
case "set_page_custom_code":
|
|
1150
|
+
result = await callWordPressAPI("/set-page-custom-code", "POST", {
|
|
1151
|
+
pageId: args.pageId,
|
|
1152
|
+
customCss: args.customCss,
|
|
1153
|
+
customScripts: args.customScripts,
|
|
1154
|
+
});
|
|
1155
|
+
break;
|
|
1156
|
+
|
|
1157
|
+
// ===== OUTILS v3.5.0 — PHASE C : STYLE MANAGER 2.2 + COMPONENTS =====
|
|
1158
|
+
|
|
1159
|
+
case "list_typography_scales":
|
|
1160
|
+
result = await callWordPressAPI("/list-typography-scales", "GET");
|
|
1161
|
+
break;
|
|
1162
|
+
|
|
1163
|
+
case "set_typography_scale":
|
|
1164
|
+
result = await callWordPressAPI("/set-typography-scale", "POST", {
|
|
1165
|
+
id: args.id,
|
|
1166
|
+
name: args.name,
|
|
1167
|
+
values: args.values || {},
|
|
1168
|
+
});
|
|
1169
|
+
break;
|
|
1170
|
+
|
|
1171
|
+
case "list_spacing_scales":
|
|
1172
|
+
result = await callWordPressAPI("/list-spacing-scales", "GET");
|
|
1173
|
+
break;
|
|
1174
|
+
|
|
1175
|
+
case "set_spacing_scale":
|
|
1176
|
+
result = await callWordPressAPI("/set-spacing-scale", "POST", {
|
|
1177
|
+
id: args.id,
|
|
1178
|
+
name: args.name,
|
|
1179
|
+
values: args.values || {},
|
|
1180
|
+
});
|
|
1181
|
+
break;
|
|
1182
|
+
|
|
1183
|
+
case "list_css_variables":
|
|
1184
|
+
result = await callWordPressAPI("/list-css-variables", "GET");
|
|
1185
|
+
break;
|
|
1186
|
+
|
|
1187
|
+
case "set_css_variable":
|
|
1188
|
+
result = await callWordPressAPI("/set-css-variable", "POST", {
|
|
1189
|
+
name: args.name,
|
|
1190
|
+
value: args.value,
|
|
1191
|
+
});
|
|
1192
|
+
break;
|
|
1193
|
+
|
|
1194
|
+
case "list_components":
|
|
1195
|
+
result = await callWordPressAPI("/list-components", "GET");
|
|
1196
|
+
break;
|
|
1197
|
+
|
|
527
1198
|
default:
|
|
528
1199
|
console.error(`[LOG] Tool inconnu: ${name}`);
|
|
529
1200
|
result = { error: `Tool ${name} not found` };
|