Skip to main content
Glama
gustavorobertux

MCP Greeting Server

README.md
# 🌍 MCP Greeting Server

A Model Context Protocol (MCP) server that provides intelligent, time-aware greetings in multiple languages and timezones.

## ✨ Features

- 🕐 **Time-aware greetings** - Automatically says good morning, afternoon, or evening based on current time
- 🌍 **Multi-language support** - English, Portuguese, Spanish, and French
- 🌎 **Timezone flexibility** - Works with any timezone (defaults to Brazil/São Paulo)
- 👤 **Personalization** - Optional name parameter for personalized greetings
- 🎯 **MCP Compatible** - Ready to use with Claude and other MCP clients

## 🚀 Quick Start

### Prerequisites

- Node.js 18+ 
- npm or yarn

### Installation

```bash
# Clone the repository
git clone https://github.com/gustavorobertux/mcp-greeting-server.git
cd mcp-greeting-server

# Install dependencies
npm install

# Start the server
npm start
```

## 🔧 Claude Configuration

### Method 1: Claude Desktop App

1. **Install Claude Desktop** from [Claude.ai](https://claude.ai/download)

2. **Locate the configuration file:**
   ```bash
   # Windows
   %APPDATA%\Claude\claude_desktop_config.json
   
   # macOS
   ~/Library/Application Support/Claude/claude_desktop_config.json
   
   # Linux
   ~/.config/Claude/claude_desktop_config.json
   ```

3. **Add the MCP server configuration:**
   ```json
   {
     "mcpServers": {
       "greeting": {
         "command": "node",
         "args": ["/full/path/to/mcp-greeting-server/index.js"]
       }
     }
   }
   ```

4. **Restart Claude Desktop** and you'll see the greeting tool available!

### Method 2: Claude Web/API with MCP Client

```javascript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

// Connect to the greeting server
const transport = new StdioClientTransport({
  command: "node",
  args: ["/path/to/mcp-greeting-server/index.js"]
});

const client = new Client({
  name: "greeting-client",
  version: "1.0.0"
}, {
  capabilities: {}
});

await client.connect(transport);

// Use the greeting tool
const result = await client.request({
  method: "tools/call",
  params: {
    name: "greet",
    arguments: {
      name: "Alice",
      language: "en"
    }
  }
});

console.log(result.content[0].text);
```

### Method 3: NPX (Quick Test)

```bash
# Run directly with npx (after publishing to npm)
npx mcp-greeting-server

# Or clone and run locally
git clone https://github.com/gustavorobertux/mcp-greeting-server.git
cd mcp-greeting-server
npm install
npm start
```

### Troubleshooting

**Issue:** Claude Desktop doesn't show the greeting tool
- ✅ Check file path is absolute
- ✅ Verify Node.js is in PATH
- ✅ Restart Claude Desktop completely
- ✅ Check Claude Desktop logs for errors

**Issue:** Permission denied
```bash
# Make the script executable (Linux/macOS)
chmod +x index.js

# Or run with node explicitly
"command": "node"
```

**Issue:** Module not found
```bash
# Install dependencies in the project folder
cd /path/to/mcp-greeting-server
npm install
```

### MCP Configuration

Add to your MCP client configuration:

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

### 🧪 Testing with Claude

Once configured, you can test in Claude:

```
Hey Claude, can you greet me?
```

Claude will use the `greet` tool and respond with a time-appropriate greeting!

```
Hey Claude, greet me in Portuguese with my name "João"
```

Claude will call: `greet({ name: "João", language: "pt" })`

## 📖 Usage

### With Claude

Once configured with Claude, simply ask for greetings naturally:

```
User: "Hey Claude, can you greet me?"
Claude: Uses greet() → "🌅 Good morning! friend! 🤝 It's 09:30 now. Hope you're having a great time!"

User: "Greet me in Portuguese as João"  
Claude: Uses greet({name: "João", language: "pt"}) → "☀️ Boa tarde! João! 🤝 São 14:30 agora. Espero que esteja tendo um ótimo momento!"
```

### Direct API Usage

### Basic Greeting

```javascript
// Simple greeting (uses defaults: English, current timezone)
greet()
// Output: "🌅 Good morning! friend! 🤝\n\nIt's 09:30 now. Hope you're having a great time!"
```

### Personalized Greeting

```javascript
// With name
greet({ name: "Alice" })
// Output: "☀️ Good afternoon! Alice! 🤝\n\nIt's 14:30 now. Hope you're having a great time!"
```

### Multi-language Support

```javascript
// Portuguese
greet({ name: "João", language: "pt" })
// Output: "🌅 Bom dia! João! 🤝\n\nSão 09:30 agora. Espero que esteja tendo um ótimo momento!"

// Spanish
greet({ name: "María", language: "es" })
// Output: "🌙 ¡Buenas noches! María! 🤝\n\nSon las 21:30 ahora. ¡Espero que estés teniendo un gran momento!"

// French
greet({ name: "Pierre", language: "fr" })
// Output: "☀️ Bon après-midi! Pierre! 🤝\n\nIl est 15:30 maintenant. J'espère que vous passez un bon moment!"
```

### Different Timezones

```javascript
// New York time
greet({ timezone: "America/New_York" })

// London time
greet({ timezone: "Europe/London" })

// Tokyo time
greet({ timezone: "Asia/Tokyo" })
```

## ⚙️ API Reference

### Tool: `greet`

**Description:** Returns an appropriate greeting based on the current time

**Parameters:**

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `name` | string | No | - | Person's name for personalization |
| `timezone` | string | No | `America/Sao_Paulo` | Timezone for the greeting |
| `language` | string | No | `en` | Language code (`en`, `pt`, `es`, `fr`) |

**Example Response:**
```json
{
  "content": [
    {
      "type": "text",
      "text": "🌅 Good morning! Alice! 🤝\n\nIt's 09:30 now. Hope you're having a great time!"
    }
  ]
}
```

## 🌐 Supported Languages

| Language | Code | Example |
|----------|------|---------|
| English | `en` | "Good morning! friend!" |
| Portuguese | `pt` | "Bom dia! amigo!" |
| Spanish | `es` | "¡Buenos días! amigo!" |
| French | `fr` | "Bonjour! ami!" |

## 🕐 Time Periods

| Time Range | Greeting Type | Emoji |
|------------|---------------|-------|
| 05:00 - 11:59 | Morning | 🌅 |
| 12:00 - 17:59 | Afternoon | ☀️ |
| 18:00 - 04:59 | Evening/Night | 🌙 |

## 🛠️ Development

### Project Structure

```
mcp-greeting-server/
├── index.js          # Main server file
├── package.json       # Dependencies and scripts
├── README.md          # This file
└── .gitignore        # Git ignore rules
```

### Running in Development

```bash
# Install dependencies
npm install

# Start the server
node index.js

# Or with npm script
npm start
```

### Testing

```bash
# Test the greeting function
npm test
```

## 🤝 Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

### Adding New Languages

To add support for a new language:

1. Add the language to the `greetings` object in `handleGreet` method
2. Include translations for: `morning`, `afternoon`, `evening`, `friend`, `timeText`, `hopeText`
3. Update the README.md supported languages table
4. Add the language code to the schema enum

## 📝 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 🙏 Acknowledgments

- Built with [Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk)
- Inspired by the need for international, time-aware greetings
- Perfect for Claude integrations and other MCP clients

## 📞 Support

- 🐛 **Issues:** [GitHub Issues](https://github.com/gustavorobertux/mcp-greeting-server/issues)
- 💬 **Discussions:** [GitHub Discussions](https://github.com/gustavorobertux/mcp-greeting-server/discussions)
- 📧 **Email:** gustavorobertux@gmail.com

---

Made with ❤️ for the MCP community

TDQS

A4.3/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no possibility of confusion or overlap. The single 'greet' tool is unambiguous in its purpose.

Naming Consistency5/5

The tool name 'greet' is a clear, concise verb that directly matches the server's purpose. With only one tool, naming consistency is inherently maintained.

Tool Count5/5

The server's scope is limited to providing time-based greetings, and a single tool fully fulfills that purpose. The count is appropriate for the narrow, well-defined domain.

Completeness5/5

The tool covers the full range of greeting categories (morning, afternoon, evening) and requires no additional operations. The surface is completely sufficient for its stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues