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
JavaScript
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);
});