@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
JavaScript
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