UNPKG

greeting-mcp-server

Version:

🌟 Servidor MCP de saudação amistosa com suporte a múltiplos idiomas e dados dinâmicos de data/hora

100 lines (82 loc) 3.44 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"; // Criar instância do servidor const server = new McpServer({ name: "greeting-server", version: "1.0.0" }); // Registrar a ferramenta de saudação usando a API correta server.registerTool( "saudacao_amistosa", { title: "Saudação Amistosa", description: "Retorna uma saudação calorosa e amistosa com data e hora atual, podendo ser personalizada com nome e idioma", inputSchema: { nome: z.string().optional().describe("Nome da pessoa para personalizar a saudação"), idioma: z.enum(["pt", "en", "es"]).optional().default("pt").describe("Idioma da saudação (pt, en, es)") } }, async ({ nome, idioma = "pt" }) => { // Obter data e hora atual const agora = new Date(); const dataFormatada = agora.toLocaleDateString('pt-BR', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); const horaFormatada = agora.toLocaleTimeString('pt-BR'); // Determinar período do dia const hora = agora.getHours(); let periodo; if (hora >= 5 && hora < 12) { periodo = "manhã"; } else if (hora >= 12 && hora < 18) { periodo = "tarde"; } else { periodo = "noite"; } // Gerar saudação baseada no idioma let saudacao; switch (idioma) { case "en": const periodEn = hora >= 5 && hora < 12 ? "morning" : hora >= 12 && hora < 18 ? "afternoon" : "evening"; saudacao = `🌟 Hello${nome ? ` ${nome}` : ''}! Good ${periodEn}! 🕒 Today is ${agora.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })} and it's ${agora.toLocaleTimeString('en-US')}. ✨ Hope you're having a wonderful day! The possibilities are endless, and I'm here to help you achieve great things! 🚀`; break; case "es": const periodEs = hora >= 5 && hora < 12 ? "mañana" : hora >= 12 && hora < 18 ? "tarde" : "noche"; saudacao = `🌟 ¡Hola${nome ? ` ${nome}` : ''}! ¡Buenas ${periodEs}! 🕒 Hoy es ${agora.toLocaleDateString('es-ES', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })} y son las ${agora.toLocaleTimeString('es-ES')}. ✨ ¡Espero que tengas un día maravilloso! Las posibilidades son infinitas, ¡y estoy aquí para ayudarte a lograr grandes cosas! 🚀`; break; default: // pt saudacao = `🌟 Olá${nome ? ` ${nome}` : ''}! Boa ${periodo}! 🕒 Hoje é ${dataFormatada} e são ${horaFormatada}. ✨ Espero que você esteja tendo um dia maravilhoso! As possibilidades são infinitas, e estou aqui para te ajudar a conquistar grandes coisas! 🚀 🎯 Que tal começarmos algo incrível juntos?`; } return { content: [ { type: "text", text: saudacao } ] }; } ); // Função principal para iniciar o servidor async function main() { const transport = new StdioServerTransport(); await server.connect(transport); console.error("🎉 Servidor MCP de Saudação Amistosa está rodando via stdio!"); } // Tratamento de erros e inicialização main().catch((error) => { console.error("❌ Erro fatal no servidor:", error); process.exit(1); });