{"id":8,"date":"2026-09-05T17:56:07","date_gmt":"2026-09-05T17:56:07","guid":{"rendered":"https:\/\/lepontdepierre.fr\/index.php\/controle-mcp\/"},"modified":"2026-09-05T18:01:35","modified_gmt":"2026-09-05T18:01:35","slug":"controle-mcp","status":"publish","type":"page","link":"https:\/\/lepontdepierre.fr\/index.php\/controle-mcp\/","title":{"rendered":"Page de contr\u00f4le du serveur MCP"},"content":{"rendered":"\n<div class=\"wp-block-group alignfull is-layout-flow wp-block-group-is-layout-flow\">\n\n<div class=\"lpdp-test\">\n<style>\n.lpdp-test{\n  --stone:#2b2b2f;\n  --stone-2:#3d3d44;\n  --ink:#16161a;\n  --paper:#f7f5f1;\n  --paper-2:#efebe4;\n  --line:#d9d3c8;\n  --accent:#b4622d;\n  --accent-soft:#e8a06a;\n  --muted:#6b6660;\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n  color:var(--ink);\n  line-height:1.6;\n  background:var(--paper);\n}\n.lpdp-test *{box-sizing:border-box;}\n.lpdp-test .lt-wrap{max-width:960px;margin:0 auto;padding:0 24px;}\n\n\/* Bandeau *\/\n.lpdp-test .lt-hero{\n  background:var(--stone);\n  color:var(--paper);\n  padding:72px 0 64px;\n  position:relative;\n  overflow:hidden;\n}\n.lpdp-test .lt-hero::after{\n  content:\"\";position:absolute;inset:auto 0 0 0;height:4px;\n  background:linear-gradient(90deg,var(--accent) 0%,var(--accent-soft) 45%,transparent 90%);\n}\n.lpdp-test .lt-kicker{\n  font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;\n  color:var(--accent-soft);margin:0 0 18px;font-weight:600;\n}\n.lpdp-test .lt-h1{\n  font-size:clamp(2rem,4.6vw,3.1rem);line-height:1.12;margin:0 0 20px;\n  font-weight:700;letter-spacing:-.02em;color:var(--paper);\n}\n.lpdp-test .lt-lede{\n  font-size:clamp(1.02rem,1.7vw,1.18rem);margin:0;max-width:56ch;\n  color:#cfc9c0;\n}\n\n\/* Sections *\/\n.lpdp-test .lt-section{padding:56px 0;}\n.lpdp-test .lt-section + .lt-section{border-top:1px solid var(--line);}\n.lpdp-test .lt-h2{\n  font-size:clamp(1.3rem,2.4vw,1.65rem);margin:0 0 8px;font-weight:700;\n  letter-spacing:-.01em;color:var(--ink);\n}\n.lpdp-test .lt-sub{margin:0 0 28px;color:var(--muted);max-width:62ch;}\n\n\/* Tableau de preuve *\/\n.lpdp-test .lt-facts{\n  width:100%;border-collapse:collapse;background:#fff;\n  border:1px solid var(--line);\n}\n.lpdp-test .lt-facts th,\n.lpdp-test .lt-facts td{\n  padding:13px 16px;text-align:left;border-bottom:1px solid var(--line);\n  font-size:.94rem;vertical-align:top;\n}\n.lpdp-test .lt-facts tr:last-child th,\n.lpdp-test .lt-facts tr:last-child td{border-bottom:0;}\n.lpdp-test .lt-facts th{\n  width:38%;font-weight:600;color:var(--muted);background:var(--paper-2);\n}\n.lpdp-test .lt-facts td code{\n  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;\n  font-size:.86rem;background:var(--paper-2);padding:2px 6px;border-radius:3px;\n  word-break:break-all;\n}\n\n\/* Grille des familles d'outils *\/\n\/* 2 colonnes exactement : 4 cartes en 3+1 laissaient une case vide. *\/\n.lpdp-test .lt-grid{\n  display:grid;gap:1px;background:var(--line);\n  border:1px solid var(--line);\n  grid-template-columns:1fr;\n}\n@media (min-width:700px){\n  .lpdp-test .lt-grid{grid-template-columns:repeat(2,1fr);}\n}\n.lpdp-test .lt-card{background:#fff;padding:22px 20px;}\n.lpdp-test .lt-card h4{\n  font-size:1rem;margin:0 0 6px;font-weight:700;color:var(--ink);\n  display:flex;align-items:center;gap:9px;\n}\n.lpdp-test .lt-num{\n  display:inline-flex;align-items:center;justify-content:center;\n  width:22px;height:22px;flex:0 0 22px;border-radius:50%;\n  background:var(--accent);color:#fff;font-size:.72rem;font-weight:700;\n}\n.lpdp-test .lt-card p{margin:0 0 10px;font-size:.9rem;color:var(--muted);}\n.lpdp-test .lt-tools{margin:0;padding:0;list-style:none;\n  display:flex;flex-wrap:wrap;gap:6px;}\n.lpdp-test .lt-tools li{\n  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;\n  font-size:.76rem;background:var(--paper-2);color:var(--stone-2);\n  padding:3px 8px;border-radius:3px;\n}\n\n\/* Journal de creation *\/\n.lpdp-test .lt-steps{margin:0;padding:0;list-style:none;counter-reset:s;}\n.lpdp-test .lt-steps li{\n  counter-increment:s;position:relative;padding:0 0 20px 44px;\n  border-left:1px solid var(--line);margin-left:11px;\n}\n.lpdp-test .lt-steps li:last-child{border-left-color:transparent;padding-bottom:0;}\n.lpdp-test .lt-steps li::before{\n  content:counter(s);position:absolute;left:-11px;top:0;\n  width:22px;height:22px;border-radius:50%;background:var(--stone);color:#fff;\n  font-size:.72rem;font-weight:700;display:flex;align-items:center;justify-content:center;\n}\n.lpdp-test .lt-steps strong{display:block;font-size:.95rem;margin-bottom:2px;}\n.lpdp-test .lt-steps span{font-size:.88rem;color:var(--muted);}\n\n\/* Encart final *\/\n.lpdp-test .lt-note{\n  background:var(--paper-2);border-left:3px solid var(--accent);\n  padding:20px 22px;margin:0;\n}\n.lpdp-test .lt-note p{margin:0 0 8px;font-size:.92rem;}\n.lpdp-test .lt-note p:last-child{margin-bottom:0;}\n.lpdp-test .lt-note strong{color:var(--ink);}\n\n@media (max-width:600px){\n  .lpdp-test .lt-hero{padding:52px 0 46px;}\n  .lpdp-test .lt-section{padding:40px 0;}\n  .lpdp-test .lt-facts th{width:auto;display:block;border-bottom:0;padding-bottom:4px;}\n  .lpdp-test .lt-facts td{display:block;padding-top:0;}\n}\n<\/style>\n\n<section class=\"lt-hero\">\n  <div class=\"lt-wrap\">\n    <p class=\"lt-kicker\">Page de contr\u00f4le<\/p>\n    <h2 class=\"lt-h1\">Cette page a \u00e9t\u00e9 \u00e9crite par Claude Code, sans passer par l&rsquo;\u00e9diteur.<\/h2>\n    <p class=\"lt-lede\">Elle sert de preuve de fonctionnement au serveur MCP install\u00e9 sur ce site. Titre, contenu, mise en forme et publication : tout est arriv\u00e9 par un appel r\u00e9seau au plugin.<\/p>\n  <\/div>\n<\/section>\n\n<section class=\"lt-section\">\n  <div class=\"lt-wrap\">\n    <h3 class=\"lt-h2\">Ce que la machine a vu au moment de l&rsquo;\u00e9criture<\/h3>\n    <p class=\"lt-sub\">Ces valeurs ne sont pas recopi\u00e9es \u00e0 la main. Elles ont \u00e9t\u00e9 lues sur le serveur juste avant la cr\u00e9ation de la page.<\/p>\n    <table class=\"lt-facts\">\n      <tbody>\n        <tr><th>Date de cr\u00e9ation<\/th><td>5 septembre 2026 \u00e0 17:55 (heure du serveur)<\/td><\/tr>\n        <tr><th>WordPress<\/th><td>7.1<\/td><\/tr>\n        <tr><th>PHP<\/th><td>8.4.22 en fpm-fcgi<\/td><\/tr>\n        <tr><th>Th\u00e8me actif<\/th><td>Twenty Twenty-Five 1.5<\/td><\/tr>\n        <tr><th>Plugin MCP<\/th><td>Pont de Pierre Vibecoding MCP 1.1.0<\/td><\/tr>\n        <tr><th>Point d&rsquo;entr\u00e9e<\/th><td><code>https:\/\/lepontdepierre.fr\/index.php\/wp-json\/lpdp\/v1\/mcp<\/code><\/td><\/tr>\n        <tr><th>Identifiant de la page<\/th><td>8, attribu\u00e9 par WordPress \u00e0 la cr\u00e9ation<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n<\/section>\n\n<section class=\"lt-section\">\n  <div class=\"lt-wrap\">\n    <h3 class=\"lt-h2\">Les quatre familles d&rsquo;outils disponibles<\/h3>\n    <p class=\"lt-sub\">Vingt-quatre outils au total. Les trois premi\u00e8res familles suffisent au travail courant, la quatri\u00e8me donne un acc\u00e8s complet au serveur.<\/p>\n    <div class=\"lt-grid\">\n      <article class=\"lt-card\">\n        <h4><span class=\"lt-num\">1<\/span>Contenu<\/h4>\n        <p>Lister, lire, cr\u00e9er, modifier et supprimer pages, articles et types de contenu personnalis\u00e9s.<\/p>\n        <ul class=\"lt-tools\">\n          <li>list_content<\/li><li>get_content<\/li><li>create_content<\/li><li>update_content<\/li><li>delete_content<\/li>\n        <\/ul>\n      <\/article>\n      <article class=\"lt-card\">\n        <h4><span class=\"lt-num\">2<\/span>R\u00e9glages<\/h4>\n        <p>CSS additionnel, m\u00e9tadonn\u00e9es d&rsquo;articles et options WordPress, hors options de s\u00e9curit\u00e9 du plugin.<\/p>\n        <ul class=\"lt-tools\">\n          <li>update_custom_css<\/li><li>get_post_meta<\/li><li>update_post_meta<\/li><li>get_option<\/li><li>update_option<\/li>\n        <\/ul>\n      <\/article>\n      <article class=\"lt-card\">\n        <h4><span class=\"lt-num\">3<\/span>Recherche et m\u00e9dias<\/h4>\n        <p>Chercher dans les fichiers et dans la base, t\u00e9l\u00e9verser une image en plusieurs morceaux puis l&rsquo;inscrire \u00e0 la m\u00e9diath\u00e8que.<\/p>\n        <ul class=\"lt-tools\">\n          <li>grep_content<\/li><li>db_search<\/li><li>media_chunk<\/li><li>media_register<\/li>\n        <\/ul>\n      <\/article>\n      <article class=\"lt-card\">\n        <h4><span class=\"lt-num\">4<\/span>Ex\u00e9cution de code<\/h4>\n        <p>\u00c9crire des fichiers de plugin, installer une extension, lancer du PHP ou du SQL. D\u00e9sactivables d&rsquo;un clic dans les r\u00e9glages.<\/p>\n        <ul class=\"lt-tools\">\n          <li>write_plugin_file<\/li><li>install_plugin_zip<\/li><li>set_plugin_active<\/li><li>run_php<\/li><li>db_query<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"lt-section\">\n  <div class=\"lt-wrap\">\n    <h3 class=\"lt-h2\">Comment cette page est arriv\u00e9e l\u00e0<\/h3>\n    <p class=\"lt-sub\">Quatre appels r\u00e9seau, aucun acc\u00e8s FTP, aucune connexion \u00e0 l&rsquo;administration.<\/p>\n    <ol class=\"lt-steps\">\n      <li>\n        <strong>Lecture de l&rsquo;\u00e9tat du site<\/strong>\n        <span>Un appel \u00e0 <code>run_php<\/code> renvoie version de WordPress, version de PHP, th\u00e8me actif et liste des extensions.<\/span>\n      <\/li>\n      <li>\n        <strong>Envoi du contenu<\/strong>\n        <span>Le HTML part encod\u00e9 en base64, pr\u00e9fix\u00e9 par <code>BASE64:<\/code>. Cela \u00e9vite que le pare-feu applicatif ou le sur-\u00e9chappement de WordPress ab\u00eement le balisage.<\/span>\n      <\/li>\n      <li>\n        <strong>Cr\u00e9ation de la page<\/strong>\n        <span>L&rsquo;outil <code>create_content<\/code> ins\u00e8re la page et renvoie son identifiant, son adresse publique et son lien d&rsquo;\u00e9dition.<\/span>\n      <\/li>\n      <li>\n        <strong>V\u00e9rification<\/strong>\n        <span>L&rsquo;adresse publique est recharg\u00e9e pour confirmer le code 200, la pr\u00e9sence du balisage et l&rsquo;absence d&rsquo;erreur PHP.<\/span>\n      <\/li>\n    <\/ol>\n  <\/div>\n<\/section>\n\n<section class=\"lt-section\">\n  <div class=\"lt-wrap\">\n    <p class=\"lt-note\">\n      <strong>Page de test, supprimable sans cons\u00e9quence.<\/strong> Elle ne sert qu&rsquo;\u00e0 v\u00e9rifier la cha\u00eene compl\u00e8te, de la machine locale jusqu&rsquo;\u00e0 la base de donn\u00e9es. Rien d&rsquo;autre sur le site n&rsquo;en d\u00e9pend.\n    <\/p>\n    <p class=\"lt-note\" style=\"margin-top:14px;background:transparent;border-left-color:var(--line);\">\n      <strong>Un mot sur la s\u00e9curit\u00e9.<\/strong> Cette installation est configur\u00e9e en mode bac \u00e0 sable : ni double authentification, ni restriction par adresse IP. La cl\u00e9 API est donc la seule barri\u00e8re devant les outils de la famille 4. Elle est \u00e0 r\u00e9g\u00e9n\u00e9rer depuis les r\u00e9glages du plugin le jour o\u00f9 ce site cesse d&rsquo;\u00eatre un terrain d&rsquo;essai.\n    <\/p>\n  <\/div>\n<\/section>\n<\/div>\n\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Page de test cr\u00e9\u00e9e par Claude Code via le serveur MCP, sans passer par l&rsquo;\u00e9diteur WordPress.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-8","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/lepontdepierre.fr\/index.php\/wp-json\/wp\/v2\/pages\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lepontdepierre.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lepontdepierre.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lepontdepierre.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lepontdepierre.fr\/index.php\/wp-json\/wp\/v2\/comments?post=8"}],"version-history":[{"count":3,"href":"https:\/\/lepontdepierre.fr\/index.php\/wp-json\/wp\/v2\/pages\/8\/revisions"}],"predecessor-version":[{"id":11,"href":"https:\/\/lepontdepierre.fr\/index.php\/wp-json\/wp\/v2\/pages\/8\/revisions\/11"}],"wp:attachment":[{"href":"https:\/\/lepontdepierre.fr\/index.php\/wp-json\/wp\/v2\/media?parent=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}