UNPKG

aem-mcp-server

Version:

AEM MCP server. Chat with your AEM instance for content, component, and asset operations.

2 lines (1 loc) 5.24 kB
"use strict";import{AEMConnector as i}from"../aem/aem.connector.js";import{handleAEMHttpError as c}from"../aem/aem.errors.js";import{toolSchemas as s}from"./mcp.tools.js";import{LOGGER as a}from"../utils/logger.js";export class MCPRequestHandler{aemConnector;config;constructor(n){this.config=n,this.aemConnector=new i(n)}async init(){this.aemConnector.isInitialized?a.log("AEM Connector already initialized."):(await this.aemConnector.init(),a.log("AEM Connector initialized."))}async handleRequest(n,e){const o=s[n];if(o){const t=o.safeParse(e);if(!t.success)throw new Error(`Invalid input for ${n}: ${t.error.issues.map(r=>`${r.path.join(".")}: ${r.message}`).join(", ")}`);e=t.data}try{await this.init()}catch(t){throw a.error("ERROR initializing MCP Server",t.message),c(t,"MCP Server Initialization")}try{switch(n){case"updateComponent":return await this.aemConnector.updateComponent(e);case"scanPageComponents":return await this.aemConnector.scanPageComponents(e.pagePath,e.verbosity);case"fetchSites":return await this.aemConnector.fetchSites();case"fetchLanguageMasters":return await this.aemConnector.fetchLanguageMasters(e.site);case"fetchAvailableLocales":return await this.aemConnector.fetchAvailableLocales(e.site);case"getAllTextContent":return await this.aemConnector.getAllTextContent(e.pagePath);case"getPageTextContent":return await this.aemConnector.getPageTextContent(e.pagePath);case"getPageImages":return await this.aemConnector.getPageImages(e.pagePath);case"updateImagePath":return await this.aemConnector.updateImagePath(e.componentPath,e.newImagePath);case"getPageContent":return await this.aemConnector.getPageContent(e.pagePath,e.verbosity);case"listPages":return await this.aemConnector.listPages(e.siteRoot||e.path||"/content",e.depth||1,e.limit||20);case"getNodeContent":return await this.aemConnector.getNodeContent(e.path,e.depth||1,e.verbosity);case"listChildren":return await this.aemConnector.listChildren(e.path);case"getPageProperties":return await this.aemConnector.getPageProperties(e.pagePath);case"searchContent":return await this.aemConnector.searchContent(e);case"executeJCRQuery":return await this.aemConnector.executeJCRQuery(e.query,e.limit);case"getAssetMetadata":return await this.aemConnector.getAssetMetadata(e.assetPath);case"enhancedPageSearch":return await this.aemConnector.searchContent({fulltext:e.searchTerm,path:e.basePath,type:"cq:Page",limit:20});case"createPage":return await this.aemConnector.createPage(e);case"deletePage":return await this.aemConnector.deletePage(e);case"createComponent":return await this.aemConnector.createComponent(e);case"addComponent":return await this.aemConnector.addComponent(e);case"deleteComponent":return await this.aemConnector.deleteComponent(e);case"unpublishContent":return await this.aemConnector.unpublishContent(e);case"activatePage":return await this.aemConnector.activatePage(e);case"deactivatePage":return await this.aemConnector.deactivatePage(e);case"updateAsset":return await this.aemConnector.updateAsset(e);case"deleteAsset":return await this.aemConnector.deleteAsset(e);case"getTemplates":return await this.aemConnector.getTemplates(e.sitePath);case"getTemplateStructure":return await this.aemConnector.getTemplateStructure(e.templatePath);case"getComponents":return await this.aemConnector.getComponents(e.path);case"bulkUpdateComponents":return await this.aemConnector.bulkUpdateComponents(e);case"convertComponents":return await this.aemConnector.convertComponents(e);case"bulkConvertComponents":return await this.aemConnector.bulkConvertComponents(e);case"listWorkflowModels":return await this.aemConnector.listWorkflowModels();case"startWorkflow":return await this.aemConnector.startWorkflow(e.modelId,e.payload,e.payloadType);case"listWorkflowInstances":return await this.aemConnector.listWorkflowInstances(e.state);case"getWorkflowInstance":return await this.aemConnector.getWorkflowInstance(e.instanceId);case"updateWorkflowInstanceState":return await this.aemConnector.updateWorkflowInstanceState(e.instanceId,e.state);case"getInboxItems":return await this.aemConnector.getInboxItems();case"completeWorkItem":return await this.aemConnector.completeWorkItem(e.workItemPath,e.routeId,e.comment);case"delegateWorkItem":return await this.aemConnector.delegateWorkItem(e.workItemPath,e.delegatee);case"getWorkItemRoutes":return await this.aemConnector.getWorkItemRoutes(e.workItemPath);case"getContentFragment":return await this.aemConnector.getContentFragment(e.path);case"listContentFragments":return await this.aemConnector.listContentFragments(e);case"manageContentFragment":return await this.aemConnector.manageContentFragment(e);case"manageContentFragmentVariation":return await this.aemConnector.manageContentFragmentVariation(e);case"getExperienceFragment":return await this.aemConnector.getExperienceFragment(e.path);case"listExperienceFragments":return await this.aemConnector.listExperienceFragments(e);case"manageExperienceFragment":return await this.aemConnector.manageExperienceFragment(e);case"manageExperienceFragmentVariation":return await this.aemConnector.manageExperienceFragmentVariation(e);default:throw new Error(`Unknown method: ${n}`)}}catch(t){throw a.error(`Error in tool ${n}:`,t.message),t}}}