Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
634b657
Delete not implemented/stubbed tools
otarsko Jan 30, 2026
e6b0717
Delete references to source repo
otarsko Jan 30, 2026
002d085
Delete stubbed tool
otarsko Jan 30, 2026
4c72024
Delete stubbed tools
otarsko Jan 30, 2026
95cc4a2
Fix tree activation
otarsko Jan 30, 2026
ba2cb8a
Adjust docs for getPageTextContent
otarsko Jan 30, 2026
016e5d2
Finish implementation for the fetchLanguageMasters
otarsko Jan 30, 2026
08f0351
Rough reimplementation of fetchAvailableLocales
otarsko Jan 30, 2026
e5db66a
Update running instructions
otarsko Jan 30, 2026
69a4e3d
Clarify getTemplates tool functionality
otarsko Feb 4, 2026
2464372
Clarify executeJCRQuery tool functionality
otarsko Feb 4, 2026
e70c71e
Delete "uploadAsset". Adjust "addComponent" to support more cases.
otarsko Feb 5, 2026
5887d42
Clarify "convertComponents" functionality, delete "undoChanges" as it…
otarsko Feb 5, 2026
a270423
Delete validateComponent as its goal is not fully clear and it seems …
otarsko Feb 5, 2026
b82db89
Revert table formatting
otarsko Feb 6, 2026
90aab9c
Clarify required node version
otarsko Feb 6, 2026
75626ad
feat: update contributing docs
otarsko Feb 6, 2026
5b746ee
Cleaned up changelog.
otarsko Feb 12, 2026
beca8af
docs: add copyright, align package.json, COC, README with the template
otarsko Feb 12, 2026
e51acbf
docs: update 2 badges to point to current repo
otarsko Feb 12, 2026
eeedb75
docs: update installation instructions as prep to release and publishing
otarsko Feb 12, 2026
e00e710
docs: update running instruction
otarsko Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
698 changes: 676 additions & 22 deletions LICENSE

Large diffs are not rendered by default.

26 changes: 15 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# AEM MCP Server (aem-mcp-server)
# @netcentric/aem-mcp-server
AEM MCP Server

[![Version](https://img.shields.io/npm/v/aem-mcp-server.svg)](https://npmjs.org/package/aem-mcp-server)
[![Release Status](https://github.com/easingthemes/aem-mcp-server/actions/workflows/release.yml/badge.svg)](https://github.com/easingthemes/aem-mcp-server/actions/workflows/release.yml)
[![CodeQL Analysis](https://github.com/easingthemes/aem-mcp-server/workflows/CodeQL/badge.svg?branch=main)](https://github.com/easingthemes/aem-mcp-server/actions)
[![Version](https://img.shields.io/npm/v/@netcentric/aem-mcp-server.svg)](https://npmjs.org/package/@netcentric/aem-mcp-server)
[![Build Status](https://github.com/netcentric/aem-mcp-server/workflows/CI/badge.svg?branch=main)](https://github.com/netcentric/aem-mcp-server/actions)
[![CodeQL Analysis](https://github.com/netcentric/aem-mcp-server/workflows/CodeQL/badge.svg?branch=main)](https://github.com/netcentric/aem-mcp-server/actions)
[![semver: semantic-release](https://img.shields.io/badge/semver-semantic--release-blue.svg)](https://github.com/semantic-release/semantic-release)
[![MIT License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)



AEM MCP Server is a full-featured Model Context Protocol (MCP) server for Adobe Experience Manager (AEM).
It provides a simple integration with any AI Agent.
Expand All @@ -25,15 +28,17 @@ This project is designed for non-technical persons who want to manage AEM via na
## Quick Start

### Prerequisites
- Node.js 18+
- Node.js 20.19.0+ || 22.12.0+ || 23+
- Access to an AEM instance (local or remote)

### Installation

```sh
npm install aem-mcp-server -g
npm install @netcentric/aem-mcp-server -g
```

### Start the Server

With default settings (admin:admin credentials for http://localhost:4502):
```sh
aem-mcp
Expand Down Expand Up @@ -108,8 +113,6 @@ Sample for AI-based code editors or custom clients:
}
```

![cursor.png](docs/cursor.png)

## Usage

```
Expand All @@ -122,5 +125,6 @@ For detailed API documentation, please refer to the [API Docs](docs/API.md).

## Similar Projects

- https://github.com/indrasishbanerjee/aem-mcp-server (Used as a base for this project)
- https://www.npmjs.com/package/@myea/aem-mcp-handler (Looks like an original source of the above project)
1. https://github.com/easingthemes/aem-mcp-server (Used as a base for this project)
1. https://github.com/indrasishbanerjee/aem-mcp-server (Used as a base for #1)
1. https://www.npmjs.com/package/@myea/aem-mcp-handler (Looks like an original source of #2)
20 changes: 7 additions & 13 deletions docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
## Component Operations

| Method | Description | Parameters |
|--------|-------------|------------|
| `validateComponent` | Validate component changes before applying | `locale`, `page_path`, `component`, `props` |
|--------|------------|------------|
| `updateComponent` | Update component properties. Validates properties against component dialog definitions (dropdown options, checkbox values, etc.). | `componentPath`, `properties` |
| `bulkUpdateComponents` | Update multiple components with validation | `updates[]`, `validateFirst`, `continueOnError` |
| `scanPageComponents` | Discover all components on a page | `pagePath` |
| `addComponent` | Add component to a page. Automatically applies `cq:template` structure if available. Validates properties against component dialog definitions. | `pagePath`, `resourceType`, `containerPath`, `name`, `properties` |
| `deleteComponent` | Delete a component | `componentPath`, `force` |
| `convertComponents` | Convert components on a single page | `pagePath`, `sourceResourceType`, `targetResourceType`, `requiredProperties`, `continueOnError` |
| `convertComponents` | Convert components on a single page. Existing components are deleted and new are created. Properties are not preserved. | `pagePath`, `sourceResourceType`, `targetResourceType`, `requiredProperties`, `continueOnError` |
| `bulkConvertComponents` | Convert components across multiple pages | `sourceResourceType`, `targetResourceType`, `pagePaths[]` or `searchPath`, `depth`, `limit`, `requiredProperties`, `continueOnError` |
| `undoChanges` | Undo last component changes | `jobId` |

## Page Operations

Expand All @@ -24,7 +22,7 @@
| `getPageProperties` | Get page properties | `pagePath` |
| `getPageContent` | Get all page content (XF, CF) | `pagePath` |
| `getAllTextContent` | Get all text content from page | `pagePath` |
| `getPageTextContent` | Get text content from page | `pagePath` |
| `getPageTextContent` | Get text content from page. May need fine-tunning for the specific project needs. | `pagePath` |
| `getPageImages` | Get all images from page | `pagePath` |
| `enhancedPageSearch` | Intelligent page search with fallbacks | `searchTerm`, `basePath`, `includeAlternateLocales` |
| `activatePage` | Publish a page | `pagePath`, `activateTree` |
Expand All @@ -36,15 +34,13 @@
| Method | Description | Parameters |
|--------|-------------|------------|
| `fetchSites` | Get all available sites | - |
| `fetchLanguageMasters` | Get language masters for a site | `site` |
| `fetchAvailableLocales` | Get available locales | `site`, `languageMasterPath` |
| `replicateAndPublish` | Replicate and publish to locales | `selectedLocales[]`, `componentData`, `localizedOverrides` |
| `fetchLanguageMasters` | Get language masters for a site. Considers "master" and "language-masters" under tenant | `site` |
| `fetchAvailableLocales` | Get available locales | `site` |

## Assets

| Method | Description | Parameters |
|--------|-------------|------------|
| `uploadAsset` | Upload asset to DAM | `parentPath`, `fileName`, `fileContent`, `mimeType`, `metadata` |
| `updateAsset` | Update existing asset | `assetPath`, `metadata`, `fileContent`, `mimeType` |
| `deleteAsset` | Delete asset | `assetPath`, `force` |
| `getAssetMetadata` | Get asset metadata | `assetPath` |
Expand All @@ -54,7 +50,7 @@

| Method | Description | Parameters |
|--------|-------------|------------|
| `getTemplates` | Get available page templates | `sitePath` |
| `getTemplates` | Get available page templates. Doesn't support multi-tenancy at the moment. Expects templates to be under /conf/{tenant} | `sitePath` |
| `getTemplateStructure` | Get detailed template structure | `templatePath` |

## Components & Metadata
Expand All @@ -68,7 +64,7 @@
| Method | Description | Parameters |
|--------|-------------|------------|
| `searchContent` | Search using Query Builder | `type`, `fulltext`, `path`, `limit` |
| `executeJCRQuery` | Execute JCR query | `query`, `limit` |
| `executeJCRQuery` | Currently it's essentially a wrapper for Query Builder, with the path "/content" and type cq:Page. Note: `query` is a fulltext search term and not a JCR Query | `query`, `limit` |

## Workflows

Expand Down Expand Up @@ -130,8 +126,6 @@ completeWorkItem({
|--------|-------------|------------|
| `getNodeContent` | Get JCR node content (legacy) | `path`, `depth` |
| `listChildren` | List child nodes (legacy) | `path` |
| `getStatus` | Get workflow status | `workflowId` |
| `listMethods` | Get list of available methods | - |

## Bulk Operations

Expand Down
225 changes: 0 additions & 225 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,225 +0,0 @@
## [2.0.0](https://github.com/Netcentric/aem-mcp-server/compare/v1.3.8...v2.0.0) (2025-01-XX)

### Features

* **cq:template Support**: Added automatic `cq:template` support for component initialization. When adding a component, if it has a `cq:template` node defined, the server will automatically fetch and apply the template structure, including all child nodes and default properties. This ensures components like column controls initialize with their default structure (e.g., columns) correctly.
* **Property Validation**: Implemented comprehensive property validation for `addComponent` and `updateComponent` operations. Properties are now validated against component dialog definitions:
- Select/dropdown fields: Validates that provided values match available options
- Checkbox fields: Validates boolean values or 'true'/'false' strings
- Number fields: Validates numeric values
- Returns validation errors/warnings before applying changes to prevent component loading failures

### Improvements

* Enhanced `getComponentDefinition` to extract detailed field definitions from component dialogs, including field types, required status, and available options
* Improved error messages for invalid property values
* Better handling of component template structures with recursive child node creation

### Bug Fixes

* Fixed issue where components with `cq:template` (like column controls) were not initializing with their default structure
* Fixed issue where invalid property values could be set, causing components to fail loading in AEM

## [1.3.8](https://github.com/easingthemes/aem-mcp-server/compare/v1.3.7...v1.3.8) (2025-09-02)


### Bug Fixes

* update page creation and templates info ([4b6863a](https://github.com/easingthemes/aem-mcp-server/commit/4b6863adf4233620665748c825f9236aa93ea7ee))

## [1.3.7](https://github.com/easingthemes/aem-mcp-server/compare/v1.3.6...v1.3.7) (2025-09-01)


### Bug Fixes

* apply latest fixes ([2e3f9cf](https://github.com/easingthemes/aem-mcp-server/commit/2e3f9cf07c0f22a738d07306c0e9bf1f1c218347))

## [1.3.6](https://github.com/easingthemes/aem-mcp-server/compare/v1.3.5...v1.3.6) (2025-08-20)


### Bug Fixes

* fix health check ([66dd8dc](https://github.com/easingthemes/aem-mcp-server/commit/66dd8dc3b7ed7acf47877109c41fb09fc1ac8534))

## [1.3.5](https://github.com/easingthemes/aem-mcp-server/compare/v1.3.4...v1.3.5) (2025-08-20)


### Bug Fixes

* update test user path ([b53ffbb](https://github.com/easingthemes/aem-mcp-server/commit/b53ffbb97c1bcffb8db0835ceb2fcf4d76f6ca87))

## [1.3.4](https://github.com/easingthemes/aem-mcp-server/compare/v1.3.3...v1.3.4) (2025-08-20)


### Bug Fixes

* add cli params description ([10e4314](https://github.com/easingthemes/aem-mcp-server/commit/10e431498b6d3197a47fb6e1764e2f8c38ac429f))

## [1.3.3](https://github.com/easingthemes/aem-mcp-server/compare/v1.3.2...v1.3.3) (2025-08-19)


### Bug Fixes

* update dependencies ([821d42e](https://github.com/easingthemes/aem-mcp-server/commit/821d42e546e201110228727ba9741d7cfcbefc23))

## [1.3.2](https://github.com/easingthemes/aem-mcp-server/compare/v1.3.1...v1.3.2) (2025-08-19)


### Bug Fixes

* exclude docs from npm to reduce size ([fdd81b2](https://github.com/easingthemes/aem-mcp-server/commit/fdd81b2025204e5fd043f7276ec36408d7476584))

## [1.3.1](https://github.com/easingthemes/aem-mcp-server/compare/v1.3.0...v1.3.1) (2025-08-19)


### Bug Fixes

* add AEMaaCS auth params ([3b2cbbf](https://github.com/easingthemes/aem-mcp-server/commit/3b2cbbf9e5b6b6c827b497a3f184e8cd55bed452))

# [1.3.0](https://github.com/easingthemes/aem-mcp-server/compare/v1.2.0...v1.3.0) (2025-08-10)


### Features

* add logger, change port ([f4ee48b](https://github.com/easingthemes/aem-mcp-server/commit/f4ee48b32fde2034b53f29fb2efa3aef9ba20f39))

# [1.2.0](https://github.com/easingthemes/aem-mcp-server/compare/v1.1.5...v1.2.0) (2025-08-10)


### Features

* add AEMaaCS OAuth support, add fetch retry on 401 ([0f53d1a](https://github.com/easingthemes/aem-mcp-server/commit/0f53d1a4bc8bc622f018f68c021d95e4a0791e78))

## [1.1.5](https://github.com/easingthemes/aem-mcp-server/compare/v1.1.4...v1.1.5) (2025-08-08)


### Bug Fixes

* remove invalid empty `prompts` ([92c64d3](https://github.com/easingthemes/aem-mcp-server/commit/92c64d3d2db3ff32ce0e2b651b22697940761dd0))

## [1.1.4](https://github.com/easingthemes/aem-mcp-server/compare/v1.1.3...v1.1.4) (2025-07-19)


### Bug Fixes

* [docs] simplify Readme ([6e00bef](https://github.com/easingthemes/aem-mcp-server/commit/6e00bef7a498d872573549cc7d35206affe98bba))

## [1.1.3](https://github.com/easingthemes/aem-mcp-server/compare/v1.1.2...v1.1.3) (2025-07-19)


### Bug Fixes

* [docs] simplify Readme ([12d6753](https://github.com/easingthemes/aem-mcp-server/commit/12d6753d214de6eb49451595025de95df170f66b))

## [1.1.2](https://github.com/easingthemes/aem-mcp-server/compare/v1.1.1...v1.1.2) (2025-07-19)


### Bug Fixes

* [docs] simplify Readme ([c9af9e6](https://github.com/easingthemes/aem-mcp-server/commit/c9af9e67043ced9e54a6bbf83cd1527026ae0c69))

## [1.1.1](https://github.com/easingthemes/aem-mcp-server/compare/v1.1.0...v1.1.1) (2025-07-19)


### Bug Fixes

* [docs] simplify Readme ([3d70ee2](https://github.com/easingthemes/aem-mcp-server/commit/3d70ee2acbdc7cdca291adc326bacf804fd7700c))

# [1.1.0](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.12...v1.1.0) (2025-07-19)


### Features

* [deps] remove swagger ([6cfa01a](https://github.com/easingthemes/aem-mcp-server/commit/6cfa01ac1d8336fb2a5de300cedcc5581726512f))

## [1.0.12](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.11...v1.0.12) (2025-07-18)


### Bug Fixes

* [aem] remove component type check ([6dbf89c](https://github.com/easingthemes/aem-mcp-server/commit/6dbf89c39f78b24e33b3e34992f886c761e6f572))

## [1.0.11](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.10...v1.0.11) (2025-07-18)


### Bug Fixes

* [build] minify ([4760bdc](https://github.com/easingthemes/aem-mcp-server/commit/4760bdcccf6c38b10df4f472c6900279bc09cacb))

## [1.0.10](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.9...v1.0.10) (2025-07-18)


### Bug Fixes

* [docs] add docs dir ([d8e6f04](https://github.com/easingthemes/aem-mcp-server/commit/d8e6f04dc8963d559d258d1491d5ea81e4b9d9e0))

## [1.0.9](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.8...v1.0.9) (2025-07-18)


### Bug Fixes

* [docs] add params info ([b4f128d](https://github.com/easingthemes/aem-mcp-server/commit/b4f128db6aed5d159cd18aa93692e2948c99ffb0))

## [1.0.8](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.7...v1.0.8) (2025-07-18)


### Bug Fixes

* [config] remove dotenv ([2c0ddcd](https://github.com/easingthemes/aem-mcp-server/commit/2c0ddcdb9b5b2c60bb27bfad8dcfeebe39275510))

## [1.0.7](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.6...v1.0.7) (2025-07-18)


### Bug Fixes

* [cli] npm pkg fix ([34dc243](https://github.com/easingthemes/aem-mcp-server/commit/34dc243d1064120b595bc0eb242e3c446bb4c54c))

## [1.0.6](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.5...v1.0.6) (2025-07-18)


### Bug Fixes

* [cli] add node bin ([50d73f4](https://github.com/easingthemes/aem-mcp-server/commit/50d73f4a1ee1ee037366aa8a0d42639c8602a2fe))

## [1.0.5](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.4...v1.0.5) (2025-07-18)


### Bug Fixes

* [cli] remove test script ([e9d2325](https://github.com/easingthemes/aem-mcp-server/commit/e9d2325e46976965df6fa4e04bfda2047a0927d5))
* [cli] use es6 ([ef3327c](https://github.com/easingthemes/aem-mcp-server/commit/ef3327c9c6f78e459e756c0f41c13b6002c19193))

## [1.0.4](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.3...v1.0.4) (2025-07-18)


### Bug Fixes

* [cli] fix cli params ([6405d05](https://github.com/easingthemes/aem-mcp-server/commit/6405d0584586bf2e06c6333757ccee292dceac38))

## [1.0.3](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.2...v1.0.3) (2025-07-18)


### Bug Fixes

* [build] fix build path ([683b87f](https://github.com/easingthemes/aem-mcp-server/commit/683b87fb3cad42867baa851cce766ec956c1c637))

## [1.0.2](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.1...v1.0.2) (2025-07-18)


### Bug Fixes

* [cli] add cli params ([59c6a5e](https://github.com/easingthemes/aem-mcp-server/commit/59c6a5ef72ea2fe5f16278655af433b3a17843fc))

## [1.0.1](https://github.com/easingthemes/aem-mcp-server/compare/v1.0.0...v1.0.1) (2025-07-18)


### Bug Fixes

* [cli] simplify usage ([3e5981c](https://github.com/easingthemes/aem-mcp-server/commit/3e5981c49a8a843eda16482f041a2c291051d68e))

# 1.0.0 (2025-07-17)


### Bug Fixes

* [npm] enable npm release ([3165378](https://github.com/easingthemes/aem-mcp-server/commit/3165378659357d060c03e0798ad50eb44328d429))
4 changes: 2 additions & 2 deletions docs/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Netcentric Code of Conduct
# Cognizant Netcentric Code of Conduct

## Our Pledge

Expand All @@ -23,7 +23,7 @@ include:
Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
Expand Down
Loading
Loading