UNPKG

winner12-copywriter-mcp

Version:

MCP tool for generating social media content for winner12 AI football prediction website

246 lines 10 kB
#!/usr/bin/env node import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { z } from 'zod'; import { TikTokGenerator } from './tools/tiktok-generator.js'; import { YouTubeGenerator } from './tools/youtube-generator.js'; import { TwitterGenerator } from './tools/twitter-generator.js'; import { InstagramGenerator } from './tools/instagram-generator.js'; import { FacebookGenerator } from './tools/facebook-generator.js'; // 创建 MCP 服务器实例 const server = new McpServer({ name: 'winner12-copywriter', version: '1.0.7' }); // 注册 TikTok 文案生成工具 server.registerTool('generate_tiktok_copy', { title: '生成 TikTok 短视频文案', description: '为足球比赛预测生成 TikTok 平台的短视频文案内容。工具将返回完整的文案内容,请在回答中直接展示生成的文案,包括所有格式和标签。', inputSchema: { homeTeam: z.string().describe('主队名称'), awayTeam: z.string().describe('客队名称'), prediction: z.string().describe('预测结果 (例如: 主胜, 客胜, 平局)'), confidence: z.number().min(0).max(100).describe('预测置信度 (0-100)'), matchDate: z.string().describe('比赛日期'), league: z.string().describe('联赛名称'), odds: z.object({ home: z.number().optional().describe('主队赔率'), away: z.number().optional().describe('客队赔率'), draw: z.number().optional().describe('平局赔率') }).optional().describe('赔率信息'), keyStats: z.array(z.string()).optional().describe('关键统计数据') } }, async (input) => { const typedInput = input; try { const content = await TikTokGenerator.generateContent(typedInput); // 返回简洁的文案内容,让 Claude 在主回答中展示 return { content: [ { type: 'text', text: content.content } ] }; } catch (error) { return { content: [ { type: 'text', text: `生成 TikTok 文案时出现错误:${error instanceof Error ? error.message : '未知错误'}` } ], isError: true }; } }); // 注册 YouTube 文案生成工具 server.registerTool('generate_youtube_copy', { title: '生成 YouTube 视频内容', description: '为足球比赛预测生成 YouTube 平台的视频标题和详细描述内容。工具将返回完整的内容,请在回答中直接展示生成的标题和描述。', inputSchema: { homeTeam: z.string().describe('主队名称'), awayTeam: z.string().describe('客队名称'), prediction: z.string().describe('预测结果 (例如: 主胜, 客胜, 平局)'), confidence: z.number().min(0).max(100).describe('预测置信度 (0-100)'), matchDate: z.string().describe('比赛日期'), league: z.string().describe('联赛名称'), odds: z.object({ home: z.number().optional().describe('主队赔率'), away: z.number().optional().describe('客队赔率'), draw: z.number().optional().describe('平局赔率') }).optional().describe('赔率信息'), keyStats: z.array(z.string()).optional().describe('关键统计数据') } }, async (input) => { const typedInput = input; try { const content = await YouTubeGenerator.generateContent(typedInput); // 返回简洁的内容,让 Claude 在主回答中展示 return { content: [ { type: 'text', text: content.content } ] }; } catch (error) { return { content: [ { type: 'text', text: `生成 YouTube 内容时出现错误:${error instanceof Error ? error.message : '未知错误'}` } ], isError: true }; } }); // 注册 Twitter 文案生成工具 server.registerTool('generate_twitter_copy', { title: '生成 Twitter 推文串', description: '为足球比赛预测生成 Twitter 平台的推文串内容,适合分条发布。工具将返回完整的推文串,请在回答中直接展示生成的内容。', inputSchema: { homeTeam: z.string().describe('主队名称'), awayTeam: z.string().describe('客队名称'), prediction: z.string().describe('预测结果 (例如: 主胜, 客胜, 平局)'), confidence: z.number().min(0).max(100).describe('预测置信度 (0-100)'), matchDate: z.string().describe('比赛日期'), league: z.string().describe('联赛名称'), odds: z.object({ home: z.number().optional().describe('主队赔率'), away: z.number().optional().describe('客队赔率'), draw: z.number().optional().describe('平局赔率') }).optional().describe('赔率信息'), keyStats: z.array(z.string()).optional().describe('关键统计数据') } }, async (input) => { const typedInput = input; try { const content = await TwitterGenerator.generateContent(typedInput); // 返回简洁的内容,让 Claude 在主回答中展示 return { content: [ { type: 'text', text: content.content } ] }; } catch (error) { return { content: [ { type: 'text', text: `生成 Twitter 内容时出现错误:${error instanceof Error ? error.message : '未知错误'}` } ], isError: true }; } }); // 注册 Instagram 文案生成工具 server.registerTool('generate_instagram_copy', { title: '生成 Instagram 帖子', description: '为足球比赛预测生成 Instagram 平台的帖子内容,包括视觉化表达和互动引导。工具将返回完整的帖子内容,请在回答中直接展示生成的内容。', inputSchema: { homeTeam: z.string().describe('主队名称'), awayTeam: z.string().describe('客队名称'), prediction: z.string().describe('预测结果 (例如: 主胜, 客胜, 平局)'), confidence: z.number().min(0).max(100).describe('预测置信度 (0-100)'), matchDate: z.string().describe('比赛日期'), league: z.string().describe('联赛名称'), odds: z.object({ home: z.number().optional().describe('主队赔率'), away: z.number().optional().describe('客队赔率'), draw: z.number().optional().describe('平局赔率') }).optional().describe('赔率信息'), keyStats: z.array(z.string()).optional().describe('关键统计数据') } }, async (input) => { const typedInput = input; try { const content = await InstagramGenerator.generateContent(typedInput); // 返回简洁的内容,让 Claude 在主回答中展示 return { content: [ { type: 'text', text: content.content } ] }; } catch (error) { return { content: [ { type: 'text', text: `生成 Instagram 内容时出现错误:${error instanceof Error ? error.message : '未知错误'}` } ], isError: true }; } }); // 注册 Facebook 文案生成工具 server.registerTool('generate_facebook_copy', { title: '生成 Facebook 帖子', description: '为足球比赛预测生成 Facebook 平台的详细帖子内容,包括分析说明和理性观球提醒。工具将返回完整的帖子内容,请在回答中直接展示生成的内容。', inputSchema: { homeTeam: z.string().describe('主队名称'), awayTeam: z.string().describe('客队名称'), prediction: z.string().describe('预测结果 (例如: 主胜, 客胜, 平局)'), confidence: z.number().min(0).max(100).describe('预测置信度 (0-100)'), matchDate: z.string().describe('比赛日期'), league: z.string().describe('联赛名称'), odds: z.object({ home: z.number().optional().describe('主队赔率'), away: z.number().optional().describe('客队赔率'), draw: z.number().optional().describe('平局赔率') }).optional().describe('赔率信息'), keyStats: z.array(z.string()).optional().describe('关键统计数据') } }, async (input) => { const typedInput = input; try { const content = await FacebookGenerator.generateContent(typedInput); // 返回简洁的内容,让 Claude 在主回答中展示 return { content: [ { type: 'text', text: content.content } ] }; } catch (error) { return { content: [ { type: 'text', text: `生成 Facebook 内容时出现错误:${error instanceof Error ? error.message : '未知错误'}` } ], isError: true }; } }); // 启动服务器 async function main() { const transport = new StdioServerTransport(); await server.connect(transport); console.error('Winner12 Copywriter MCP Server 已启动并运行中...'); } // 错误处理 main().catch((error) => { console.error('服务器启动失败:', error); process.exit(1); }); //# sourceMappingURL=server.js.map