Skip to main content
Glama
yorifuji

MCP-WTIT

by yorifuji
README.md
# MCP-WTIT (What Time Is It?)

A Model Context Protocol (MCP) server that provides current time in ISO8601 format with timezone support.

## ๐Ÿš€ Features

- โฐ Get current time with detailed information (ISO8601, timestamp, timezone)
- ๐ŸŒ Support for all IANA timezones
- ๐ŸŽฏ Optional milliseconds precision
- ๐Ÿ—๏ธ Clean Architecture design
- ๐Ÿ“ฆ ESModules with TypeScript 5.6+
- โœ… Comprehensive test coverage
- ๐Ÿ”ง Type-safe with strict TypeScript configuration

## ๐Ÿ“‹ Requirements

- Node.js 18.0.0 or higher
- npm or yarn

## ๐Ÿ› ๏ธ Installation

### As a global package

```bash
# Install globally
npm install -g mcp-wtit

# Run the server
mcp-wtit
```

### As a dependency

```bash
# Install as a dependency
npm install mcp-wtit
```

### From source

```bash
# Clone the repository
git clone https://github.com/yorifuji/mcp-wtit.git
cd mcp-wtit

# Install dependencies
npm install

# Build the project
npm run build

# Run the server
npm start
```

## ๐Ÿšฆ Quick Start

### For MCP Clients (Claude Desktop, etc.)

Add to your MCP client configuration:

#### If installed globally:
```json
{
  "mcpServers": {
    "mcp-wtit": {
      "command": "mcp-wtit"
    }
  }
}
```

#### If installed locally:
```json
{
  "mcpServers": {
    "mcp-wtit": {
      "command": "node",
      "args": ["./node_modules/mcp-wtit/dist/index.js"]
    }
  }
}
```

#### From source:
```json
{
  "mcpServers": {
    "mcp-wtit": {
      "command": "node",
      "args": ["/path/to/mcp-wtit/dist/index.js"]
    }
  }
}
```

### Debug with MCP Inspector

MCP Inspector provides a web-based interface to test and debug your MCP server:

```bash
# Build the project first
npm run build

# Run with MCP Inspector
npm run inspect
```

This will:
1. Start the MCP Inspector on http://localhost:6274
2. Automatically open your browser
3. Connect to the MCP server with debug capabilities

In the Inspector, you can:
- View available tools and their schemas
- Test tool calls with different parameters
- Monitor request/response communication
- Debug server behavior in real-time

### For Development

```bash
# Run in development mode
npm run dev

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Lint code
npm run lint

# Type check
npm run typecheck
```

## ๐Ÿ“š API Documentation

### Tools

#### `get_current_time`

Get the current time with detailed information.

**Parameters:**
- `includeMilliseconds` (boolean, optional): Include milliseconds in ISO8601 format (default: true)
- `timezone` (string, optional): Timezone for the time (default: "UTC")

**Response:**
```json
{
  "iso8601": "2024-01-15T10:30:45.123Z",
  "timestamp": 1705315845123,
  "timezone": "UTC"
}
```

## ๐Ÿ›๏ธ Architecture

This project follows Clean Architecture principles:

```
src/
โ”œโ”€โ”€ domain/          # Business logic (no dependencies)
โ”œโ”€โ”€ application/     # Use cases
โ”œโ”€โ”€ infrastructure/  # External interfaces (MCP)
โ”œโ”€โ”€ shared/          # Shared types and utilities
โ””โ”€โ”€ di/              # Dependency injection
```

See [Architecture Documentation](docs/ARCHITECTURE.md) for details.

## ๐Ÿงช Testing

Tests are located in the `tests/` directory and use Vitest:

```bash
# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Generate coverage report
npm run test:coverage
```

## ๐Ÿ“ฆ Scripts

| Script | Description |
|--------|-------------|
| `npm run build` | Build the TypeScript project |
| `npm run dev` | Run in development mode |
| `npm start` | Run the built server |
| `npm run inspect` | Debug with MCP Inspector |
| `npm test` | Run tests |
| `npm run test:watch` | Run tests in watch mode |
| `npm run test:coverage` | Run tests with coverage report |
| `npm run lint` | Run ESLint |
| `npm run lint:fix` | Run ESLint and fix issues |
| `npm run typecheck` | Run TypeScript type checking |

## ๐Ÿค Contributing

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

## ๐Ÿ“„ License

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

## ๐Ÿ™ Acknowledgments

- Built for the [Model Context Protocol](https://modelcontextprotocol.io/)
- Inspired by Clean Architecture principles

## ๐Ÿ“ฆ NPM Package

[![npm version](https://badge.fury.io/js/mcp-wtit.svg)](https://www.npmjs.com/package/mcp-wtit)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Node.js Version](https://img.shields.io/node/v/mcp-wtit.svg)](https://nodejs.org/)

Published on npm: [mcp-wtit](https://www.npmjs.com/package/mcp-wtit)

TDQS

B3.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly distinct as it is the only one available.

Naming Consistency5/5

A single tool inherently has perfect naming consistency since there are no other tools to compare against. The name 'get_current_time' follows a clear verb_noun pattern.

Tool Count2/5

One tool is too few for most server purposes, as it severely limits functionality and scope. This feels thin and inadequate for handling time-related operations beyond just getting the current time.

Completeness2/5

The server's domain appears to be time-related, but with only a single tool for getting the current time, there are significant gaps. Missing operations like time conversion, scheduling, or date calculations make the surface severely incomplete.

Maintenance

ActivityInactive
ResponsivenessNo issues