aem-mcp-server
Version:
AEM Model Context Protocol (MCP) server
2 lines (1 loc) • 1.83 kB
JavaScript
"use strict";import n from"express";import p from"cors";import{handleRequest as l}from"../mcp/mcp.server-handler.js";import{AEMConnector as m}from"../aem/aem.connector.js";import{config as c}from"../config.js";const d=(s={})=>{const e=n();e.use(p({origin:"*",exposedHeaders:["Mcp-Session-Id"]})),e.use(n.json()),e.use(n.json({limit:"10mb"})),e.use(n.urlencoded({extended:!0}));const r=new m(s);return e.get("/health",async(o,t)=>{try{await r.init();const i={status:"healthy",aem:await r.testConnection()?"connected":"disconnected",mcp:"ready",timestamp:new Date().toISOString(),version:c.APP_VERSION||"1.0.0"};t.json(i)}catch(a){t.status(500).json({status:"unhealthy",error:a.message,timestamp:new Date().toISOString()})}}),e.post("/mcp",async(o,t)=>{await l(o,t,s)}),e.get("/mcp",async(o,t)=>{t.status(405).set("Allow","POST").send("Method Not Allowed")}),e.delete("/mcp",async(o,t)=>{console.log("Received DELETE MCP request"),t.writeHead(405).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}))}),e.get("/",(o,t)=>{t.json({name:"AEM MCP Gateway Server",description:"A Model Context Protocol server for Adobe Experience Manager",version:c.APP_VERSION||"1.0.0",endpoints:{health:{method:"GET",path:"/health",description:"Health check for all services"},mcp:{method:"POST",path:"/mcp",description:"JSON-RPC endpoint for MCP calls"},mcpMethods:{method:"GET",path:"/mcp/methods",description:"List all available MCP methods"}},architecture:"MCP integration",timestamp:new Date().toISOString()})}),e};export const startServer=(s={})=>{const{mcpPort:e=3e3}=s||{};d(s).listen(e,o=>{o&&(console.error("Failed to start server:",o),process.exit(1)),console.log(`AEM MCP Server listening on port ${e}`)})};process.on("SIGINT",async()=>{console.log("Shutting down server..."),process.exit(0)});