@websolutespa/payload-plugin-bowl-llm
Version:
LLM plugin for Bowl PayloadCms plugin
46 lines (45 loc) • 1.64 kB
JavaScript
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