UNPKG

@websolutespa/payload-plugin-bowl-llm

Version:

LLM plugin for Bowl PayloadCms plugin

46 lines (45 loc) 1.64 kB
import { createMcpHandler } from 'mcp-handler'; import { APIError } from 'payload'; import { buildMcpToolsForApp, executeTool } from './mcp.adapter'; export const getMCPHandler = async (req, app, config)=>{ const { payload } = req; // Build MCP tool descriptors for this app const mcpTools = await buildMcpToolsForApp(app); const mcpServer = { capabilities: { tools: {} } }; const mcpConfig = { basePath: payload.config.routes?.api || '/api', maxDuration: 60, verboseLogs: false, ...config, disableSse: config?.disableSse ?? true }; try { return createMcpHandler((server)=>{ mcpTools.forEach((tool)=>{ server.registerTool(tool.name, { title: tool.name, description: tool.description, inputSchema: tool.inputSchema }, async (params)=>{ const { name, arguments: args } = params; const result = await executeTool(req.payload, app, name, args || {}); return { content: [ { type: 'text', text: typeof result === 'string' ? result : JSON.stringify(result) } ] }; }); }); }, mcpServer, mcpConfig); } catch (error) { throw new APIError(`Error initializing MCP handler: ${String(error)}`, 500); } }; //# sourceMappingURL=mcp.handler.js.map