aem-mcp-server について
aem-mcp-serverは、AIエージェントをAdobe Experience Managerに接続し、コンテンツ、コンポーネント、アセット、ワークフローを自然言語で管理できるようにします。AEMaaCSとセルフホスト環境に対応し、複数インスタンスにも接続できます。
主な機能
- 01AEM操作用の57個のツール
- 02コンテンツフラグメントとエクスペリエンスフラグメントの管理
- 03検索、公開、ワークフロー制御
- 04AEMカタログを調べる読み取り専用リソース
- 05複数インスタンスへの接続
- 06Basic authとOAuth S2S
活用シーン
- 01自然言語によるAEMコンテンツ管理
- 02ページやコンテンツフラグメントの検索
- 03コンテンツの公開とワークフローの進行
- 04複数のAEMインスタンスをまたぐ作業
MCP 対応
AEMのコンポーネント、サイト、テンプレート、ワークフローモデルを参照する読み取り専用リソースと、57個のMCPツールを提供します。stdioとstreamable HTTPのトランスポートに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AEM MCP Server (aem-mcp-server)
AEM MCP Server は、Adobe Experience Manager(AEM)向けのフル機能の Model Context Protocol(MCP)サーバーです。 あらゆる AI エージェントと簡単に連携できます。 このプロジェクトは、自然言語で AEM を管理したい技術者以外の方を対象に設計されています。
概要
- 自然言語で AEM インスタンスを管理 — コンテンツ、コンポーネント、アセット、ワークフロー
- あらゆる MCP 対応クライアントで利用可能:
- AI IDE — Cursor、VS Code + Copilot、Windsurf、Cline、JetBrains AI Assistant、Zed
- CLI エージェント — Claude Code、GitHub Copilot CLI、Gemini CLI、Amazon Q CLI
- チャットおよびデスクトップアプリ — Claude Desktop、ChatGPT Desktop、Goose
- AEMaaCS とセルフホスト可能な AEM インスタンスの両方をサポート
- 2 種類のトランスポートモード —
npx経由の stdio(推奨、インストール不要)とストリーミング可能な HTTP
クイックスタート
前提条件
- Node.js 20.19.0+ || 22.12.0+ || 23+
- AEM インスタンスへのアクセス(ローカルまたはリモート)
Stdio トランスポート(推奨)
インストールは不要です。AI エージェントが npx 経由でプロセスを自動的にダウンロードして起動します。
プロジェクトの MCP 設定(.mcp.json、.vscode/mcp.json、.cursor/mcp.json など)に追加します:
{
"mcpServers": {
"AEM": {
"command": "npx",
"args": ["-y", "aem-mcp-server", "-t", "stdio", "-H", "http://localhost:4502", "-u", "admin", "-p", "admin"]
}
}
}
シークレット: MCP 設定ファイルは通常リポジトリにコミットされるため、認証情報をハードコードしないでください。代わりに、クライアントの環境変数構文を使用します:
クライアント 構文 Claude Code( .mcp.json)${AEM_PASSWORD}または${AEM_PASSWORD:-admin}VS Code / Copilot ${input:aem-password}(安全に入力を求める)またはenvFileCursor ${env:AEM_PASSWORD}環境変数参照を使用する例(Claude Code):
{ "mcpServers": { "AEM": { "command": "npx", "args": ["-y", "aem-mcp-server", "-t", "stdio", "-H", "${AEM_HOST:-http://localhost:4502}", "-u", "${AEM_USER:-admin}", "-p", "${AEM_PASSWORD:-admin}"] } } }
ストリーミング可能な HTTP トランスポート(代替)
永続的なサーバーが必要な場合(チームで共有するサーバー、複数のクライアントが同時に接続する場合など)は、グローバルにインストールし、サーバーを手動で起動します:
npm install aem-mcp-server -g
aem-mcp -H=http://localhost:4502 -u=admin -p=admin
その後、AI エージェントに URL を指定します:
{
"mcpServers": {
"AEM": {
"url": "http://127.0.0.1:8502/mcp"
}
}
}
設定
Options:
--version Show version number [boolean]
-H, --host [string] [default: "http://localhost:4502"]
-u, --user [string] [default: "admin"]
-p, --pass [string] [default: "admin"]
-i, --id clientId [string] [default: ""]
-s, --secret clientSecret [string] [default: ""]
-m, --mcpPort [number] [default: 8502]
-t, --transport Transport mode: http (default) or stdio
[string] [choices: "http", "stdio"] [default: "http"]
-I, --instances Named AEM instances: "local:http://localhost:4502:admin:admin
,qa:https://qa.example.com:user:pass" [string] [default: ""]
-h, --help Show help [boolean]
認証:
- AEMaaCS では、OAuth S2S 認証に
clientIdとclientSecretを使用します。詳細はこちら。 - セルフホスト型 AEM では、
user/passを使用します。デフォルトの認証情報はadmin:adminです。
複数インスタンス: 複数の AEM インスタンスに同時に接続できます:
aem-mcp --instances "author:http://localhost:4502:admin:admin,publish:http://localhost:4503:admin:admin"
すべてのツールに、対象のインスタンスを指定するための instance パラメーターが追加されます。
機能
- 57 個の MCP ツール:ページ、コンポーネント、アセット、ワークフロー、コンテンツフラグメント、エクスペリエンスフラグメントを網羅
- MCP リソース — エージェントは
resources/listを介して、コンポーネント、サイト、テンプレート、ワークフローモデルを事前に検出できるため、検出のためのラウンドトリップをなくせます - ツールアノテーション — すべてのツールに
group、readOnly、complexityのタグが付いているため、エージェントはより適切にツールを選択できます - 応答の詳細度 — コンテンツ読み取りツールの
verbosityパラメーター(summary/standard/full)により、JCR 内部情報を除外し、長いテキストを切り詰めます - 実行可能なエラー — エラー応答には
suggestionとalternativesフィールドが含まれ、エージェントのワークフローが自動でエラーから回復できるようにします - コンポーネント操作:AEM コンポーネント(エクスペリエンスフラグメントを含む)の更新、スキャン、追加、変換、一括管理
- コンテンツフラグメントとエクスペリエンスフラグメント:CF と XF の両方で、完全な CRUD とバリエーション管理に対応します。また、単一の JSON エンコードフィールド内にキー→値マップ全体を保存する CF 向けに、サーバー側で JSON 文字列フィールドをマージできます(
manageContentFragmentのアクションmergeJsonField) - 高度な検索:QueryBuilder、全文検索、あいまい検索、拡張ページ検索
- レプリケーションとワークフロー:コンテンツの公開/非公開、ワークフローステージの開始/進行/委任
- テキストと画像の抽出:フラグメントを含め、ページからすべてのテキストと画像を抽出
- テンプレートと構造の検出:テンプレートの一覧表示、ページ/コンポーネント構造の分析
- マルチインスタンス:複数の AEM インスタンスに同時に接続できます。ツールとリソースはインスタンスを認識します
- セキュリティ:Basic 認証と OAuth S2S、環境ベースの設定、安全な操作のデフォルト設定
使用方法
AI IDE で設定したら、自然言語で尋ねるだけです。
List all components on MyPage
JSON 文字列フィールドへのマージ
一部のコンテンツフラグメントでは、キー→値マップ全体を、単一フィールド内に JSON エンコード文字列として保存します。全体をやり取りすることなく、いくつかのキーをアップサートするには、mergeJsonField アクションを使用します。読み取り、マージ、書き込みはサーバー側で実行されます。
{
"action": "mergeJsonField",
"fragmentPath": "/content/dam/<site>/.../labels",
"field": "CFMValue", // the field holding the JSON string
"jsonPointer": "/0/content/0/value", // RFC-6901 pointer to the object to merge into ("" = field root)
"merge": { "search": "Search", "clear_search": "Clear search" },
"variation": "master" // default: master
}
新しいキーは追加され、既存のキーは上書きされ(ディープマージ)、変更されていないキーは保持されます。応答には、追加/上書きされたキーと、ポインター位置でのマージ前後のキー数が示されます。
MCP リソース
サーバーは読み取り専用の MCP リソースを公開し、エージェントがツール呼び出しなしで AEM カタログを検出できるようにします。
| リソース URI | 説明 |
|---|---|
aem://{instance}/components | すべてのコンポーネント(名前、resourceType、タイトル、グループ) |
aem://{instance}/sites | /content 配下のサイトルートと言語構造 |
aem://{instance}/templates | 使用可能なページテンプレート(パス、タイトル) |
aem://{instance}/workflow-models | ワークフローモデル(ID、タイトル、説明) |
リソースは概要データのみを返します。マルチインスタンスモードでは、各インスタンスに独自のリソース URI セットが割り当てられます。
API ドキュメント
詳細な API ドキュメントについては、API ドキュメントを参照してください。
類似プロジェクト
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。