AEM MCP Server
# AEM MCP Server
A Model Context Protocol (MCP) server for Adobe Experience Manager (AEM) local instance management. This server provides tools to interact with AEM instances, manage packages, check status, and perform common development tasks.
## Features
The AEM MCP server provides the following tools:
### 1. `aem_status`
Check the status of an AEM instance including version, bundle count, and overall health.
**Parameters:**
- `host` (optional): AEM host (default: localhost)
- `port` (optional): AEM port (default: 4502)
- `username` (optional): AEM username (default: admin)
- `password` (optional): AEM password (default: admin)
### 2. `aem_install_package`
Install a package (.zip file) in AEM.
**Parameters:**
- `packagePath` (required): Path to the package file (.zip)
- `host` (optional): AEM host (default: localhost)
- `port` (optional): AEM port (default: 4502)
- `username` (optional): AEM username (default: admin)
- `password` (optional): AEM password (default: admin)
- `force` (optional): Force installation (default: false)
### 3. `aem_list_packages`
List all installed packages in AEM.
**Parameters:**
- `host` (optional): AEM host (default: localhost)
- `port` (optional): AEM port (default: 4502)
- `username` (optional): AEM username (default: admin)
- `password` (optional): AEM password (default: admin)
### 4. `aem_create_page`
Create a new page in AEM.
**Parameters:**
- `parentPath` (required): Parent path where to create the page
- `pageName` (required): Name of the new page
- `pageTitle` (required): Title of the new page
- `template` (required): Template path for the page
- `host` (optional): AEM host (default: localhost)
- `port` (optional): AEM port (default: 4502)
- `username` (optional): AEM username (default: admin)
- `password` (optional): AEM password (default: admin)
### 5. `aem_replicate_content`
Replicate content to publish instance (activate/deactivate).
**Parameters:**
- `path` (required): Content path to replicate
- `action` (optional): Replication action - 'activate' or 'deactivate' (default: activate)
- `host` (optional): AEM host (default: localhost)
- `port` (optional): AEM port (default: 4502)
- `username` (optional): AEM username (default: admin)
- `password` (optional): AEM password (default: admin)
### 6. `aem_query_content`
Query content using JCR-SQL2 or XPath.
**Parameters:**
- `query` (required): Query string (JCR-SQL2 or XPath)
- `type` (optional): Query type - 'JCR-SQL2' or 'xpath' (default: JCR-SQL2)
- `limit` (optional): Maximum number of results (default: 20)
- `host` (optional): AEM host (default: localhost)
- `port` (optional): AEM port (default: 4502)
- `username` (optional): AEM username (default: admin)
- `password` (optional): AEM password (default: admin)
### 7. `aem_bundle_status`
Check OSGi bundle status.
**Parameters:**
- `bundleId` (optional): Specific bundle ID or symbolic name
- `host` (optional): AEM host (default: localhost)
- `port` (optional): AEM port (default: 4502)
- `username` (optional): AEM username (default: admin)
- `password` (optional): AEM password (default: admin)
### 8. `aem_clear_cache`
Clear various AEM caches.
**Parameters:**
- `cacheType` (optional): Type of cache to clear - 'dispatcher', 'clientlibs', or 'all' (default: all)
- `host` (optional): AEM host (default: localhost)
- `port` (optional): AEM port (default: 4502)
- `username` (optional): AEM username (default: admin)
- `password` (optional): AEM password (default: admin)
## Installation
1. Clone or download this repository
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
## Usage
### Running the Server
```bash
npm start
```
### Development Mode
```bash
npm run dev
```
## Configuration
The server uses default AEM credentials (admin/admin) and connects to localhost:4502 by default. You can override these settings by providing different parameters when calling the tools.
## Example Usage
Once the MCP server is configured and running, you can use the tools through your MCP client:
- Check AEM status: `aem_status`
- Install a package: `aem_install_package` with `packagePath: "/path/to/package.zip"`
- Create a page: `aem_create_page` with required parameters
- Query content: `aem_query_content` with `query: "SELECT * FROM [cq:Page]"`
## Requirements
- Node.js 18+
- TypeScript
- Running AEM instance (local or remote)
- Appropriate AEM credentials
## License
MIT License
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose targeting specific AEM operations: bundle status, cache clearing, page creation, package installation, package listing, content querying, content replication, and instance status. There is no overlap in functionality, making tool selection straightforward for an agent.
All tools follow a consistent 'aem_verb_noun' pattern with snake_case throughout, such as aem_clear_cache and aem_create_page. This predictable naming scheme enhances readability and reduces cognitive load for agents.
With 8 tools, the server is well-scoped for AEM administration tasks, covering key operations like instance management, content handling, and package control. Each tool earns its place without being overwhelming or insufficient for the domain.
The toolset provides strong coverage for core AEM workflows, including instance status, content creation/querying/replication, and package management. Minor gaps exist, such as the lack of tools for updating or deleting pages/packages, but agents can likely work around these with existing tools.