UNPKG

@snahrup/notion-hero-image-mcp

Version:

AI-powered animated hero banner generator for Notion pages. Integrates DALL-E 3, Google Veo 3, Cloudinary CDN, and Notion API.

48 lines 1.75 kB
#!/usr/bin/env node import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'; import generateImageTool from './tools/generate-image.js'; import generateVideoTool from './tools/generate-video.js'; import mp4ToGifTool from './tools/mp4-to-gif.js'; import uploadCloudinaryTool from './tools/upload-cloudinary.js'; import setNotionCoverTool from './tools/set-notion-cover.js'; import createNotionBannerTool from './tools/create-notion-banner.js'; import previewBannerTool from './tools/preview-banner-creation.js'; const server = new Server({ name: 'notion-hero-image-mcp', version: '1.0.0', }, { capabilities: { tools: {}, }, }); // Register tool handlers const tools = [ generateImageTool, generateVideoTool, mp4ToGifTool, uploadCloudinaryTool, setNotionCoverTool, createNotionBannerTool, previewBannerTool ]; // List available tools server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: tools.map(tool => tool.definition) })); // Handle tool calls server.setRequestHandler(CallToolRequestSchema, async (request) => { const toolName = request.params.name; const tool = tools.find(t => t.definition.name === toolName); if (!tool) { throw new Error(`Tool not found: ${toolName}`); } // Call the appropriate handler const response = await tool.handler['tools/call'](request); return response || { content: [] }; }); // Start server const transport = new StdioServerTransport(); server.connect(transport).catch(console.error); //# sourceMappingURL=index.js.map