winner12-copywriter-mcp
Version:
MCP tool for generating social media content for winner12 AI football prediction website
246 lines • 10 kB
JavaScript
#!/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