aem_replicate_content
Activate or deactivate content on AEM publish instances by specifying the content path and replication action.
Instructions
Replicate content to publish instance
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Content path to replicate | |
| action | No | Replication action (activate/deactivate) | activate |
| host | No | AEM host (default: localhost) | localhost |
| port | No | AEM port (default: 4502) | |
| username | No | AEM username (default: admin) | admin |
| password | No | AEM password (default: admin) | admin |
Implementation Reference
- src/aem-tools.ts:113-135 (handler)The MCP tool handler that extracts parameters, validates input, calls the AEMClient to perform replication, and formats the response for MCP.async replicateContent(args: any) { const config = this.getConfig(args); const { path, action = 'activate' } = args; if (!path) { throw new Error('Content path is required'); } const result = await this.aemClient.replicateContent(config, path, action); return { content: [ { type: 'text', text: `Content Replication Result: Success: ${result.success} Message: ${result.message} Path: ${path} Action: ${action}`, }, ], }; }
- src/aem-client.ts:226-262 (helper)Core implementation that performs the HTTP POST request to AEM's /bin/replicate.json endpoint to activate or deactivate content.async replicateContent(config: AEMConfig, contentPath: string, action: string = 'activate'): Promise<any> { const baseUrl = this.getBaseUrl(config); const authHeader = this.getAuthHeader(config); const formData = new FormData(); formData.append('cmd', action); formData.append('path', contentPath); try { const response = await this.axiosInstance.post( `${baseUrl}/bin/replicate.json`, formData, { headers: { 'Authorization': authHeader, ...formData.getHeaders(), }, } ); if (response.status === 200) { return { success: true, message: `Content ${action}d successfully: ${contentPath}`, response: response.data, }; } else { return { success: false, message: `Replication failed: HTTP ${response.status}`, response: response.data, }; } } catch (error) { throw new Error(`Replication failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } }
- src/index.ts:194-229 (schema)JSON schema defining the input parameters for the aem_replicate_content tool, including path (required), action, and connection details.inputSchema: { type: 'object', properties: { path: { type: 'string', description: 'Content path to replicate' }, action: { type: 'string', description: 'Replication action (activate/deactivate)', enum: ['activate', 'deactivate'], default: 'activate' }, host: { type: 'string', description: 'AEM host (default: localhost)', default: 'localhost' }, port: { type: 'number', description: 'AEM port (default: 4502)', default: 4502 }, username: { type: 'string', description: 'AEM username (default: admin)', default: 'admin' }, password: { type: 'string', description: 'AEM password (default: admin)', default: 'admin' } }, required: ['path'] }
- src/index.ts:361-362 (registration)Switch case in CallToolRequestSchema handler that dispatches the tool call to the AEMTools.replicateContent method.case 'aem_replicate_content': return await this.aemTools.replicateContent(args);
- src/index.ts:191-230 (registration)Tool registration in ListToolsRequestSchema response, providing name, description, and schema.{ name: 'aem_replicate_content', description: 'Replicate content to publish instance', inputSchema: { type: 'object', properties: { path: { type: 'string', description: 'Content path to replicate' }, action: { type: 'string', description: 'Replication action (activate/deactivate)', enum: ['activate', 'deactivate'], default: 'activate' }, host: { type: 'string', description: 'AEM host (default: localhost)', default: 'localhost' }, port: { type: 'number', description: 'AEM port (default: 4502)', default: 4502 }, username: { type: 'string', description: 'AEM username (default: admin)', default: 'admin' }, password: { type: 'string', description: 'AEM password (default: admin)', default: 'admin' } }, required: ['path'] } },