Skip to main content
Glama
gemyago

HelloWorld MCP Server

by gemyago
README.md
# HelloWorld MCP Server

A simple HelloWorld MCP (Model Context Protocol) server experiment built with TypeScript.

## Features

This MCP server provides two simple tools:
- **hello**: Say hello to someone (default: "World")
- **add**: Add two numbers together

## Prerequisites

- Node.js 22+ (LTS)
- npm
- nvm (recommended for Node.js version management)
- direnv (for environment management)

## Setup

1. **Node.js Version Management**
   ```bash
   # If you have nvm installed:
   nvm use
   
   # This will use Node.js version 22 as specified in .nvmrc
   ```

2. **Environment Setup with direnv**
   ```bash
   # Allow direnv for this directory
   direnv allow
   
   # This will automatically add node_modules/.bin to your PATH
   ```

3. **Install Dependencies**
   ```bash
   npm install
   ```

## Development

### Available Scripts

- `npm run dev` - Run the server in development mode using tsx
- `npm run build` - Compile TypeScript to JavaScript
- `npm start` - Run the compiled server
- `npm run lint` - Run ESLint on the source code
- `npm run lint:fix` - Run ESLint and automatically fix issues
- `npm run clean` - Remove the dist directory

### Running the Server

For development:
```bash
npm run dev
```

For production:
```bash
npm run build
npm start
```

## MCP Server Usage

This server communicates via stdio and implements the Model Context Protocol. It provides:

### Tools

1. **hello**
   - Description: Say hello to someone
   - Parameters: 
     - `name` (optional): The name of the person to greet (default: "World")
   - Example: `{"name": "Alice"}` → "Hello, Alice! šŸ‘‹ Welcome to the HelloWorld MCP server!"

2. **add**
   - Description: Add two numbers together
   - Parameters:
     - `a` (required): First number
     - `b` (required): Second number
   - Example: `{"a": 5, "b": 3}` → "5 + 3 = 8"

## Project Structure

```
ā”œā”€ā”€ src/
│   └── index.ts          # Main MCP server implementation
ā”œā”€ā”€ dist/                 # Compiled JavaScript (after build)
ā”œā”€ā”€ .nvmrc               # Node.js version specification
ā”œā”€ā”€ .envrc               # direnv configuration
ā”œā”€ā”€ eslint.config.js     # ESLint configuration
ā”œā”€ā”€ tsconfig.json        # TypeScript configuration
ā”œā”€ā”€ package.json         # Node.js project configuration
└── README.md           # This file
```

## Code Quality

This project uses:
- **TypeScript** for type safety
- **ESLint** with TypeScript support for code quality
- **Strict TypeScript configuration** for better type checking

## License

MIT

TDQS

B3.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: 'add' performs a mathematical operation on numbers, while 'hello' handles a greeting interaction. There is no overlap or ambiguity between these functions, making tool selection straightforward for an agent.

Naming Consistency5/5

Both tool names are simple, lowercase verbs ('add' and 'hello') that clearly indicate their actions. While they don't follow a strict verb_noun pattern, the naming is perfectly consistent in style and readability for this minimal set.

Tool Count2/5

With only two tools, this server feels extremely thin and under-scoped for any meaningful domain. The tools are trivial and unrelated, suggesting either a demo/test server or one with significant missing functionality for practical use.

Completeness1/5

The server lacks a coherent domain, making completeness impossible to assess meaningfully. The tools are isolated operations (math and greeting) with no logical connection or coverage of any workflow, representing a severely incomplete surface for any real-world purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues