# 🌟 Servidor MCP de Saudação Amistosa

Um servidor Model Context Protocol (MCP) simples e amigável que oferece saudações personalizadas com informações dinâmicas de data e hora.

## 📋 Sobre

Este servidor MCP implementa uma única ferramenta chamada `saudacao_amistosa` que:
- 🕒 Mostra data e hora atual
- 🌍 Suporta múltiplos idiomas (Português, Inglês, Espanhol)
- 👤 Permite personalização com nome do usuário
- 🎯 Detecta automaticamente o período do dia (manhã, tarde, noite)
- ✨ Retorna saudações calorosas e motivacionais

## 🚀 Instalação e Uso

### 📦 Via NPX (Recomendado)

A forma mais fácil de usar o servidor é diretamente via npx, sem necessidade de instalação:

```bash
# Executar diretamente (sempre a versão mais recente)
npx greeting-mcp-server

# Ou instalar globalmente
npm install -g greeting-mcp-server
greeting-mcp-server
```

### 🔧 Instalação Local para Desenvolvimento

#### Pré-requisitos
- Node.js 18+ (recomendado) ou 16+ (com avisos)
- npm ou yarn

#### Passos

1. **Clone ou baixe o projeto:**
```bash
git clone <url-do-repositorio>
cd mcp-server
```

2. **Instale as dependências:**
```bash
npm install
```

3. **Execute o servidor:**
```bash
npm start
```

## 🛠️ Uso

### Como Servidor MCP Standalone

O servidor roda via STDIO e pode ser conectado a qualquer cliente MCP compatível:

```bash
node index.js
```

### Integração com Clientes MCP

#### Claude Desktop / Cursor (via NPX)
Adicione ao arquivo de configuração MCP:

```json
{
  "mcpServers": {
    "greeting-server": {
      "command": "npx",
      "args": ["greeting-mcp-server"]
    }
  }
}
```

#### Claude Desktop / Cursor (instalação local)
Para desenvolvimento local:

```json
{
  "mcpServers": {
    "greeting-server": {
      "command": "node",
      "args": ["/caminho/para/mcp-server/index.js"]
    }
  }
}
```

#### Cliente MCP Personalizado (via NPX)
```javascript
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "npx",
  args: ["greeting-mcp-server"]
});
```

#### Cliente MCP Personalizado (local)
```javascript
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "node",
  args: ["./index.js"]
});
```

## 🔧 Ferramenta Disponível

### `saudacao_amistosa`

**Descrição:** Retorna uma saudação calorosa e amistosa com data e hora atual

**Parâmetros:**
- `nome` (opcional): Nome da pessoa para personalizar a saudação
- `idioma` (opcional): Idioma da saudação
  - `"pt"` - Português (padrão)
  - `"en"` - Inglês  
  - `"es"` - Espanhol

**Exemplo de uso:**
```json
{
  "name": "saudacao_amistosa",
  "arguments": {
    "nome": "Maria",
    "idioma": "pt"
  }
}
```

**Exemplo de resposta:**
```
🌟 Olá Maria! Boa tarde! 

🕒 Hoje é quinta-feira, 21 de dezembro de 2023 e são 14:30:25.

✨ 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?
```

## 🌍 Exemplos por Idioma

### Português (pt)
```
🌟 Olá João! Boa manhã! 

🕒 Hoje é sexta-feira, 22 de dezembro de 2023 e são 09:15:30.

✨ 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?
```

### Inglês (en)
```
🌟 Hello Alice! Good morning! 

🕒 Today is Friday, December 22, 2023 and it's 9:15:30 AM.

✨ Hope you're having a wonderful day! The possibilities are endless, and I'm here to help you achieve great things! 🚀
```

### Espanhol (es)
```
🌟 ¡Hola Carlos! ¡Buenas tarde! 

🕒 Hoy es viernes, 22 de diciembre de 2023 y son las 14:15:30.

✨ ¡Espero que tengas un día maravilloso! Las posibilidades son infinitas, ¡y estoy aquí para ayudarte a lograr grandes cosas! 🚀
```

## 🏗️ Arquitetura

### Estrutura do Projeto
```
mcp-server/
├── index.js          # Servidor MCP principal
├── package.json       # Dependências e scripts
└── README.md          # Esta documentação
```

### Dependências
- `@modelcontextprotocol/sdk` - SDK oficial do MCP
- `zod` - Validação de schemas TypeScript-first

### Fluxo de Funcionamento
1. **Inicialização:** Servidor MCP é iniciado via STDIO
2. **Descoberta:** Cliente lista ferramentas disponíveis (`tools/list`)
3. **Execução:** Cliente chama `saudacao_amistosa` (`tools/call`)
4. **Processamento:** 
   - Validação dos parâmetros com Zod
   - Obtenção da data/hora atual
   - Detecção do período do dia
   - Geração da saudação no idioma escolhido
5. **Resposta:** Retorna saudação formatada

## 🎛️ Configuração

### Variáveis de Ambiente
Nenhuma variável de ambiente é necessária - o servidor funciona out-of-the-box.

### Customização
Para modificar as saudações ou adicionar novos idiomas, edite a seção `switch (idioma)` no arquivo `index.js`.

## 🧪 Teste Manual

### Teste via Node.js REPL
```bash
# Terminal 1: Iniciar servidor
node index.js

# Terminal 2: Testar com cliente MCP ou enviar JSON-RPC via stdin
```

### Teste com Cliente MCP de Exemplo
```javascript
// Exemplo de teste rápido
const result = await client.callTool("saudacao_amistosa", {
  nome: "Desenvolvedor",
  idioma: "pt"
});
console.log(result.content[0].text);
```

## 🚨 Solução de Problemas

### Erro: "Unsupported engine"
**Causa:** Versão do Node.js abaixo de 18
**Solução:** Atualize para Node.js 18+ ou ignore os avisos (funcionará com limitações)

### Erro: "Module not found"
**Causa:** Dependências não instaladas
**Solução:** Execute `npm install`

### Servidor não responde
**Causa:** Problema na comunicação STDIO
**Solução:** Verifique se o cliente MCP está configurado corretamente

## 📝 Scripts Disponíveis

```bash
npm start       # Inicia o servidor
npm run dev     # Inicia com auto-reload (Node 18+)
```

## 📦 Publicação no NPM

Para publicar seu servidor MCP no npm e disponibilizá-lo via npx:

### 1. Preparação
```bash
# Certifique-se de ter uma conta no npm
npm whoami

# Se não tiver, crie uma conta
npm adduser
```

### 2. Configuração
- Atualize as informações no `package.json`:
  - `name`: Nome único no npm
  - `version`: Versão semântica (1.0.0, 1.0.1, etc.)
  - `author.email`: Seu email
  - `homepage`, `repository`, `bugs`: URLs do seu repositório

### 3. Teste Local
```bash
# Teste o pacote localmente
npm pack
# Isso criará um arquivo .tgz para verificação

# Teste a instalação
npm install -g ./greeting-mcp-server-1.0.0.tgz
```

### 4. Publicação
```bash
# Primeiro login
npm login

# Publicar
npm publish
```

### 5. Verificação
```bash
# Teste via npx
npx greeting-mcp-server

# Ou instalar globalmente
npm install -g greeting-mcp-server
```

### 6. Atualizações
```bash
# Incrementar versão
npm version patch  # 1.0.0 -> 1.0.1
npm version minor  # 1.0.0 -> 1.1.0
npm version major  # 1.0.0 -> 2.0.0

# Publicar nova versão
npm publish
```

## 🤝 Contribuindo

1. Fork do projeto
2. Crie uma branch para sua feature (`git checkout -b feature/nova-saudacao`)
3. Commit suas mudanças (`git commit -am 'Adiciona nova saudação'`)
4. Push para a branch (`git push origin feature/nova-saudacao`)
5. Abra um Pull Request

## 📄 Licença

Este projeto está licenciado sob a MIT License - veja o arquivo [LICENSE](LICENSE) para detalhes.

## 🔗 Links Úteis

- [Model Context Protocol Specification](https://modelcontextprotocol.io/)
- [MCP SDK Documentation](https://github.com/modelcontextprotocol/typescript-sdk)
- [Claude MCP Integration](https://docs.anthropic.com/claude/docs/mcp)

---

**Feito com ❤️ e muito café ☕** 