ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที เข้าสู่ระบบด้วย Google เพื่อเขียนรีวิวได้แล้วต้นแบบ · อัปเดตทุก 30 นาที
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · วิธีติดตั้งภาษาไทยทุกตัว

AEM Content Manager (ACM)

โดย wttechรุ่น 0.1.4i★ 37 (ดาวรวมทั้งรีโป)iรันบนเครื่อง
ชื่อใน registryio.github.wttech/acm-mcp-server

วิธีติดตั้ง

ใช้ทำอะไรได้

ยังไม่มีคำอธิบายภาษาไทย ดูข้อเท็จจริงด้านล่าง หรือเปิดคำอธิบายต้นฉบับจากผู้ทำ

  • ต่อแบบ ติดตั้งในเครื่อง
  • บัญชีหรือคีย์ ต้องมี ACM_CONFIG_FILE, ACM_CONFIG
  • หมวด อื่น ๆ
คำอธิบายต้นฉบับจากผู้ทำ (อังกฤษ)
Validate and run Groovy scripts on Adobe Experience Manager through AEM Content Manager (ACM).

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ผลตรวจผ่าน 3/3 · ทำงานบนเครื่องคุณ · ✓ ตรวจคำสั่งแล้ว 13 พ.ย. 2569

ขั้นแรก: คุณใช้ AI ตัวไหน

เลือกแอปที่คุณใช้ ขั้นตอนจะขึ้นด้านล่าง

ต่อกับ Claude ได้ แต่ต้องเตรียมก่อน

ต้องมีคีย์ของ AEM Content Manager (ACM) (สร้างที่เว็บของผู้ทำ) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว) · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ

  1. ลง Node.js ในเครื่อง

    ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Node.js

    เปิดหน้าดาวน์โหลด Node.js ↗

  2. สมัครและสร้างคีย์ของ AEM Content Manager (ACM)

    เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป ราคาและแผนฟรีดูที่เว็บของผู้ทำ

    เปิดเว็บของ AEM Content Manager (ACM) ↗

  3. เปิดไฟล์ตั้งค่าของแอป Claude บนคอม

    SettingsDeveloperEdit Config

  4. วางค่าตั้งนี้แล้วบันทึกไฟล์

    {
      "mcpServers": {
        "acm": {
          "command": "npx",
          "args": [
            "-y",
            "@wppes/acm-mcp-server"
          ],
          "env": {
            "ACM_CONFIG_FILE": "ใส่ค่าของคุณ",
            "ACM_CONFIG": "ใส่ค่าของคุณ"
          }
        }
      }
    }

    วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร

  5. ปิดแอป Claude แล้วเปิดใหม่

  6. ลองเลย

    ใช้ AEM Content Manager (ACM) บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า Claude บอกว่ากำลังใช้ AEM Content Manager (ACM) หรือมีชื่อเครื่องมือของ AEM Content Manager (ACM) ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

ChatGPT ยังต่อ AEM Content Manager (ACM) ไม่ได้

AEM Content Manager (ACM) ต้องติดตั้งในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะตัวที่ทำงานบนเว็บ

คุณทำแบบนี้แทนได้

ก · ใช้แอปที่ต่อ AEM Content Manager (ACM) ได้

  • ต้องมีคีย์ของ AEM Content Manager (ACM) (สร้างที่เว็บของผู้ทำ) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว) · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ
  • ต้องมีคีย์ของ AEM Content Manager (ACM) (สร้างที่เว็บของผู้ทำ) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)
  • ต้องมีคีย์ของ AEM Content Manager (ACM) (สร้างที่เว็บของผู้ทำ) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)
  • ต้องมีคีย์ของ AEM Content Manager (ACM) (สร้างที่เว็บของผู้ทำ) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)

ข · ตัวอื่นในหมวด อื่น ๆ ที่ต่อกับ ChatGPT ได้

เลือกจากตัวที่ใช้มากในหมวดเดียวกัน เฉพาะตัวที่ต่อด้วยที่อยู่ได้โดยไม่ต้องใส่คีย์

ต่อกับ Claude Code ได้ แต่ต้องเตรียมก่อน

ต้องมีคีย์ของ AEM Content Manager (ACM) (สร้างที่เว็บของผู้ทำ) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)

  1. ลง Node.js ในเครื่อง

    ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Node.js

    เปิดหน้าดาวน์โหลด Node.js ↗

  2. สมัครและสร้างคีย์ของ AEM Content Manager (ACM)

    เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป ราคาและแผนฟรีดูที่เว็บของผู้ทำ

    เปิดเว็บของ AEM Content Manager (ACM) ↗

  3. เปิด Terminal

    Mac: กด Command+Space พิมพ์ Terminal · Windows: เปิด PowerShell

  4. วางคำสั่งนี้แล้วกด Enter

    claude mcp add --scope user acm --env ACM_CONFIG_FILE='ใส่ค่าของคุณ' --env ACM_CONFIG='ใส่ค่าของคุณ' -- npx -y @wppes/acm-mcp-server

    แก้ “ใส่ค่าของคุณ” เป็นคีย์ของคุณก่อนกด Enter

    วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร

  5. พิมพ์ /mcp ใน Claude Code

    ต้องเห็น AEM Content Manager (ACM) ในรายการและขึ้นว่าเชื่อมต่อแล้ว

  6. ลองเลย

    ใช้ AEM Content Manager (ACM) บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า Claude Code บอกว่ากำลังใช้ AEM Content Manager (ACM) หรือมีชื่อเครื่องมือของ AEM Content Manager (ACM) ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

ต่อกับ Cursor ได้ แต่ต้องเตรียมก่อน

ต้องมีคีย์ของ AEM Content Manager (ACM) (สร้างที่เว็บของผู้ทำ) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)

  1. ลง Node.js ในเครื่อง

    ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Node.js

    เปิดหน้าดาวน์โหลด Node.js ↗

  2. สมัครและสร้างคีย์ของ AEM Content Manager (ACM)

    เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป ราคาและแผนฟรีดูที่เว็บของผู้ทำ

    เปิดเว็บของ AEM Content Manager (ACM) ↗

  3. กดปุ่มนี้เพื่อเปิด Cursor

    เปิดใน Cursor

    Cursor จะถามยืนยันการติดตั้ง ให้กด Install

  4. ใส่คีย์ในช่องที่ว่างไว้

    ในค่าตั้งของ AEM Content Manager (ACM) ช่อง ACM_CONFIG_FILE, ACM_CONFIG ยังว่าง ใส่คีย์ของคุณแล้วบันทึก

    วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร

  5. เปิดแชตของ AI ใน Cursor โหมด Agent

  6. ลองเลย

    ใช้ AEM Content Manager (ACM) บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า Cursor บอกว่ากำลังใช้ AEM Content Manager (ACM) หรือมีชื่อเครื่องมือของ AEM Content Manager (ACM) ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Cursor เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

ต่อกับ VS Code ได้ แต่ต้องเตรียมก่อน

ต้องมีคีย์ของ AEM Content Manager (ACM) (สร้างที่เว็บของผู้ทำ) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)

  1. ลง Node.js ในเครื่อง

    ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Node.js

    เปิดหน้าดาวน์โหลด Node.js ↗

  2. สมัครและสร้างคีย์ของ AEM Content Manager (ACM)

    เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป ราคาและแผนฟรีดูที่เว็บของผู้ทำ

    เปิดเว็บของ AEM Content Manager (ACM) ↗

  3. กดปุ่มนี้เพื่อเปิด VS Code

    เปิดใน VS Code

    VS Code จะถามยืนยันการติดตั้ง ให้กด Install

  4. ใส่คีย์ในช่องที่ว่างไว้

    ในค่าตั้งของ AEM Content Manager (ACM) ช่อง ACM_CONFIG_FILE, ACM_CONFIG ยังว่าง ใส่คีย์ของคุณแล้วบันทึก

    วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร

  5. เปิดแชตของ AI ใน VS Code โหมด Agent

  6. ลองเลย

    ใช้ AEM Content Manager (ACM) บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า VS Code บอกว่ากำลังใช้ AEM Content Manager (ACM) หรือมีชื่อเครื่องมือของ AEM Content Manager (ACM) ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ VS Code เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

โปรแกรมอื่นที่ใช้ MCP ได้ เช่น Windsurf, Zed หรือ Gemini CLI มีวิธีเพิ่มต่างกัน ดูวิธีของแต่ละตัวในหน้ารวมโปรแกรม

ดูโปรแกรมที่ใช้ MCP ทั้งหมด →

ค่าตั้งแบบไฟล์ JSON อยู่ในหัวข้อ “สำหรับคนเขียนโค้ด” ด้านล่าง

ติดตรงไหน? ถามคนที่ใช้ AEM Content Manager (ACM) อยู่💬 พูดคุย →
สำหรับคนเขียนโค้ด: คำสั่ง Terminal และค่าตั้ง JSON

ติดตั้งในเครื่อง

Claude Code

claude mcp add --scope user acm --env ACM_CONFIG_FILE='ใส่ค่าของคุณ' --env ACM_CONFIG='ใส่ค่าของคุณ' -- npx -y @wppes/acm-mcp-server

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "acm": {
      "command": "npx",
      "args": [
        "-y",
        "@wppes/acm-mcp-server"
      ],
      "env": {
        "ACM_CONFIG_FILE": "ใส่ค่าของคุณ",
        "ACM_CONFIG": "ใส่ค่าของคุณ"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "acm": {
      "command": "npx",
      "args": [
        "-y",
        "@wppes/acm-mcp-server"
      ],
      "env": {
        "ACM_CONFIG_FILE": "ใส่ค่าของคุณ",
        "ACM_CONFIG": "ใส่ค่าของคุณ"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "acm": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@wppes/acm-mcp-server"
      ],
      "env": {
        "ACM_CONFIG_FILE": "ใส่ค่าของคุณ",
        "ACM_CONFIG": "ใส่ค่าของคุณ"
      }
    }
  }
}

ค่าที่ต้องใส่เอง

  • ACM_CONFIG_FILE จำเป็น env
    Path to the ACM config document: the acm.instances list (with per-instance authMode, secret, readonly, enabled), acm.activeInstance and timing keys, same keys as the VS Code extension settings
  • ACM_CONFIG ความลับ env
    The same config document inline instead of a file; takes precedence over ACM_CONFIG_FILE

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

สรุป

ดาว GitHubi
37 (ดาวรวมทั้งรีโป)
รีโปนี้มี MCP หลายรายการ ดาวนับในอันดับแค่รายการเดียว
ดาวน์โหลดต่อสัปดาห์i
45/สัปดาห์
licensei
Apache-2.0
การเชื่อมต่อ
รันบนเครื่อง
รุ่นล่าสุดi
0.1.4
หมวดi
อื่น ๆ
ส่งเข้า registryi
13 ต.ค. 2569
แก้โค้ดล่าสุดi
23 ต.ค. 2569
ผู้ทำ
wttech
แพ็กเกจ
npm: @wppes/acm-mcp-server
เว็บผู้ทำ
github.com
สถานะใน registry
ใช้งานอยู่

ใช้กับโปรแกรมไหนได้

ดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569

ติดตั้งบนเครื่องได้ใน

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

ดูโปรแกรมทั้งหมดพร้อมข้อดีข้อเสีย →

คู่มือที่เกี่ยวข้อง

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 13 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub wttech ซึ่งเป็นเจ้าของ repo

  • ✓ ผ่าน

    ยังมีคนดูแล

    มีการแก้โค้ดล่าสุด 21 วันที่ผ่านมา

  • ✓ ผ่าน

    มีสัญญาอนุญาต (license)

    ใช้ Apache-2.0

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

พูดคุย

ถาม แชร์เคล็ดลับ หรือแจ้งว่าใช้ไม่ได้ เรียงตามที่คนกดว่ามีประโยชน์

ยังไม่มีใครโพสต์ ถามหรือแชร์เป็นคนแรกได้เลย

ข้อความในส่วนนี้เขียนโดยผู้ใช้ ไม่ใช่ทีม PopNx

เข้าสู่ระบบด้วย Google เพื่อโพสต์

รีวิวจากผู้ใช้

ยังไม่มีรีวิว

เข้าสู่ระบบด้วย Google เพื่อเขียนรีวิว

เทียบกับตัวอื่นในหมวด อื่น ๆi

  • ดาวมากกว่า 96% ของอีก 19659 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 58% ของอีก 19659 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 19659 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

AEM Content Manager (ACM) ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: ACM_CONFIG_FILE, ACM_CONFIG

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด 21 วันที่ผ่านมา และส่งรุ่นล่าสุด (0.1.4) เข้า registry 31 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี World Monitor, Claude Flow, Windmill

ตัวอื่นในหมวดเดียวกัน

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

World Monitor

ข่าวกรองโลกแบบเรียลไทม์: ความขัดแย้ง ตลาด พลังงาน การค้า การขนส่ง และไซเบอร์

โดย koala73ใช้กันมาก★ 90.6Kอัปเดต วันนี้

รันบนคลาวด์✓ เจ้าของบริการ · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

โดย ruvnetใช้กันมาก↓ 13.5K/สัปดาห์★ 81.6Kอัปเดต 14 เดือนที่ผ่านมา

รันบนเครื่อง

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

โดย windmill-labsใช้กันมาก★ 18.6Kอัปเดต เมื่อวาน

รันบนคลาวด์

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

ACM MCP Server

A Model Context Protocol server that connects AI agents (Claude Code, Claude Desktop, VS Code, Cursor and other MCP clients) to AEM Content Manager (ACM) running on Adobe Experience Manager, including AEM as a Cloud Service.

An agent can validate and run Groovy scripts on AEM through ACM, follow long-running executions, read execution history and console output, and browse the scripts stored on the instance — on any of the configured instances, so it can also compare author against publish or against another environment. Every call runs as the user whose credentials you configure.

graph LR

client["MCP client (Claude, ...)"] <-- "stdio (MCP)" --> server["acm-mcp-server (your machine)"] server <-- "HTTPS" --> aem["AEM instances + ACM /apps/acm/api/*.json"]

[!WARNING]

This server lets an AI agent run arbitrary Groovy code on AEM with your permissions. Read Security before pointing it at a shared or production instance.

[!TIP]

Using VS Code? The ACM extension bundles this server and registers it for all enabled instances, with credentials from VS Code's secret storage. No setup below is needed — and ACM: Export MCP Config writes a ready config file for other agents.

Requirements

  • Node.js 22 or later.
  • ACM installed on each AEM instance. Running code without history (history: false) needs ACM 0.9.74 or later.
  • A user with access to the ACM API on each instance (see Permissions).

Setup

The server is configured by a JSON document using the same keys as the VS Code extension settings, including the acm. prefix — a block copied from settings.json is a valid config:

{

"acm.instances": [ { "name": "local-author", "url": "http://localhost:4502", "authMode": "basic", "user": "admin" }, { "name": "local-publish", "url": "http://localhost:4503", "authMode": "basic", "user": "admin" }, { "name": "dev", "url": "https://author-pXXXX-eYYYY.adobeaemcloud.com", "authMode": "bearer", "secret": { "env": "ACM_DEV_TOKEN" }, "readonly": true }, { "name": "prod", "url": "https://author.example.com", "authMode": "cookie", "secret": { "file": "~/.config/acm/prod.cookie" }, "enabled": false } ], "acm.activeInstance": "local-author", "acm.http.timeout": 30000, "acm.run.timeout": 120000, "acm.run.pollInterval": 1000 }

The timeout keys are optional; their defaults are shown. Unknown keys are ignored, so a whole settings block can be pasted.

1. Create the config file

Instance fields:

FieldDescription
nameUnique name; tools take it as the optional instance argument.
urlAEM URL, author or publish, e.g. http://localhost:4502.
authModebearer, cookie or basic.
userBasic-auth user (required for basic).
secretThe credential — see Secrets. Omitted for a local admin/admin SDK.
readonlytrue disables the tools that run or abort code on this instance. Recommended for production; see Security.
enabledfalse hides the instance from all tools, e.g. to park prod temporarily (default true).

Choosing credentials:

authModeWhen to useHow to get the secret
bearerAEM as a Cloud Service (recommended)Cloud Manager → Developer Console of the environment → Integrations → Local token → "Get Local Development Token". Valid for 24 hours and acts as your user.
cookieAEM as a Cloud Service, quick start; any instance you can log intoValue of the login-token cookie (DevTools → Application → Cookies) after logging into AEM. CSRF tokens are handled for you.
basicLocal AEM SDK, on-premiseUsually admin / admin.

The login-token cookie expires after about 12 hours; use secret: { "file": "path" } to refresh it without restarting the server.

Secrets

secret is the bearer token, the login-token cookie (value or name=value) or the basic-auth password, given as:

  • a literal — convenient for development. Keep the config file readable only by you (chmod 600); the server warns when it is not.
  • { "env": "NAME" } — read from an environment variable of the server process. Nothing is written to the config file.
  • { "file": "path" } — ~ is expanded and a relative path resolves against the config file. Re-read on every request, so refreshing a token on disk needs no restart. A missing or empty file fails only that instance.

Basic auth with user admin on a local URL defaults to password admin, so the local SDK needs no secret at all.

2. Register the server with your agent

Every MCP client needs the same things. Where they go and in which format depends on the client, so this guide does not list client-specific files:

SettingValue
Transportstdio
Commandnpx
Arguments-y, @wppes/acm-mcp-server
EnvironmentACM_CONFIG_FILE with the path from step 1

Instead of ACM_CONFIG_FILE you can pass the document inline as ACM_CONFIG; it takes precedence over the file.

The easiest way is to ask your agent, which knows its own configuration:

Add the ACM MCP server to this tool's MCP configuration: transport stdio, command npx, arguments -y @wppes/acm-mcp-server, environment ACM_CONFIG_FILE pointing at a JSON file with the ACM instances I list below. Keep secrets out of that file — reference environment variables or files instead — and never write them into a file that may be committed; tell me where to put the values. Find in this tool's documentation where MCP servers are configured and in which format. Then call acm_list_instances and acm_health to verify.

3. Check the connection

Ask the agent to call acm_list_instances, then acm_health. The first shows every enabled instance with its auth mode and whether credentials are configured; the second reports the state ACM reports for each of them.

Instances

Tools act on exactly one instance, chosen like this:

  1. the optional instance argument, when given — it must name an enabled instance;
  2. otherwise acm.activeInstance, when it names an enabled instance;
  3. otherwise the only enabled instance, when just one is configured;
  4. otherwise the call fails with the list of enabled names, so nothing runs on the wrong instance by accident.

If acm.activeInstance names an unknown or disabled instance (a typo, say), the server warns on stderr at startup and acm_list_instances repeats the warning, so the agent can tell you; the rules above then apply as if it were unset.

acm_list_instances shows which instance is active and which have credentials. Write tools (acm_run_code, acm_abort_execution, acm_describe_inputs) always act on exactly one instance — there is deliberately no run-everywhere call. To compare instances (e.g. author vs publish drift), run the same read-only code on each and diff the results; the bundled scripting guide covers the pattern. This needs ACM reachable on both sides, which works on local, on-premise and AMS (direct publish URL) — an AEMaaCS publish is not reachable.

Tools

ToolDescription
acm_list_instancesList the enabled instances: name, URL, auth mode, read-only flag, the active one and whether credentials are configured.
acm_healthCheck connectivity, auth and the instance state ACM reports (/apps/acm/api/state.json), with a warning when ACM's health check finds the instance unhealthy. Without instance, checks every enabled instance. Call it first.
acm_validate_codeCompile-check Groovy without running it (mode=parse). Returns compile errors with line and column. Never recorded in execution history.
acm_run_codeQueue Groovy for execution, poll until it finishes or times out, and return the status and full console output. Supports inputs for scripts with describeRun(). With history: false it runs synchronously and is not recorded in history (see below).
acm_get_executionGet the status, inputs, error and console output of an execution by ID, whether queued, running or archived.
acm_abort_executionAbort a queued or running execution. Scripts that call context.checkAborted() stop cleanly.
acm_list_executionsList execution history, newest first, optionally only queued and running executions.
acm_list_scriptsList Groovy scripts stored under /conf/acm/settings/script by type (MANUAL, AUTOMATIC, …).
acm_get_scriptRead the Groovy content of a stored script by ID or path.
acm_describe_inputsResolve the inputs a script declares in describeRun(): names, types and defaults. ACM runs describeRun() to do this, so it counts as running code.
acm_get_output_fileDownload a named execution output: console, or an output created with outputs.file(...) / outputs.text(...).

Every tool takes an optional instance argument; see Instances for the default.

Bare Groovy snippets are wrapped in the canRun()/doRun() structure automatically, so println "hello" is valid input for acm_validate_code and acm_run_code.

Runs without history

Every queued run is stored in ACM execution history, so iterating on a script quickly fills it up. With history: false, acm_run_code calls /apps/acm/api/execute-code.json directly and the run is not recorded. Such a run:

  • has no execution ID to poll or abort, and keeps no output files;
  • is cut off on the client side after waitMs, while the script may keep running on AEM.

Use it for short read-only runs or dry runs while you develop a script. Run the final version, and anything that changes content, with the default history: true so the change stays auditable.

Running without history needs the console/execute/nohistory ACM feature (administrators only by default); without it the call fails with 403. Such runs still appear in ACM's audit log.

Scripting guide

The server ships the ACM Groovy scripting skill, so agents write valid, safe scripts without extra setup:

  • Instructions. The skill's essentials (never invent API, dry runs, abort checks, validate before running) are sent to the client when it connects. Clients add them to the model's context.
  • Prompt. acm-groovy-script returns the full guide.
  • Resources. The guide and its references are available as acm://skill/SKILL.md, acm://skill/references/api.md (every ACM variable, class and method, generated from the ACM source), acm://skill/references/scripts.md and the script templates under acm://skill/templates/.

Example

Ask the agent something like:

Use ACM to count how many wknd/components/teaser components are under /content/wknd/us/en.

It calls acm_health, then validates and runs a script such as:

boolean canRun() {

return conditions.always() }

void doRun() { def sql = "SELECT * FROM [nt:base] AS n WHERE ISDESCENDANTNODE(n, '/content/wknd/us/en') AND n.[sling:resourceType] = 'wknd/components/teaser'" def count = 0 repo.queryRaw(sql).forEach { resource -> context.checkAborted() count++ } out.info("Found ${count} instance(s)") }

Permissions

ACM checks access at three levels. The user behind the credentials needs jcr:read on each:

  1. the API node under /apps/acm/api;
  2. the feature node under /apps/acm/feature;
  3. the script path under /conf/acm/settings/script.

By default only administrator

ตัดมาแค่ช่วงต้น อ่านต่อใน repo