Skip to main content
Glama
README.md
# 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

B3.4/5.0

Scored across 8 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues