Skip to main content
Glama
Jackdrakes

hello-mcp

by Jackdrakes
README.md
# Hello MCP Server

A simple Model Context Protocol (MCP) server that provides a greeting tool.

## Features

- Simple MCP server using FastMCP
- Dockerized with Podman support
- Uses `uv` as the Python package manager

## Prerequisites

- Python 3.12+
- [uv](https://github.com/astral-sh/uv) - Python package manager
- [Podman](https://podman.io/) (optional, for containerized deployment)

## Local Development

### Install Dependencies

```bash
uv sync
```

### Run the Server

```bash
uv run mcp_server.py
```

The server will start and wait for MCP protocol messages via stdio.

## Docker/Podman Deployment

### Build the Image

```bash
podman build -t hello-mcp .
```

### Run the Container

**Interactive mode** (recommended for MCP servers):
```bash
podman run -it --name hello-mcp hello-mcp
```

**Using Docker Compose:**
```bash
podman-compose up
```

> **Note:** MCP servers communicate via stdio, so they must run in interactive mode (`-it`). Running in detached mode (`-d`) will cause the container to exit immediately.

## Connecting to Claude Desktop

To use this MCP server with Claude Desktop, you need to add it to your Claude Desktop configuration.

### Step 1: Locate Claude Desktop Config File

The configuration file location depends on your operating system:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`

### Step 2: Add Server Configuration

Open (or create) the `claude_desktop_config.json` file and add the following configuration:

**Option A: Local Development (using uv)**
```json
{
  "mcpServers": {
    "hello-mcp": {
      "command": "uv",
      "args": ["run", "mcp_server.py"],
      "cwd": "/absolute/path/to/hello-mcp"
    }
  }
}
```

Replace `/absolute/path/to/hello-mcp` with the absolute path to this project directory.

**Option B: Using Podman Container**
```json
{
  "mcpServers": {
    "hello-mcp": {
      "command": "podman",
      "args": [
        "run",
        "-i",
        "--rm",
        "hello-mcp"
      ]
    }
  }
}
```

> **Note:** Make sure the container image is built before using this configuration.

### Step 3: Restart Claude Desktop

After updating the configuration file, restart Claude Desktop to apply the changes.

### Step 4: Verify Connection

Once connected, you can ask Claude to use the `hello` tool. For example:
- "Use the hello tool from the hello-mcp server"
- "Call the hello function"

## Example Configuration File

See `claude-desktop-config.json.example` for a complete example configuration.

## Project Structure

```
hello-mcp/
├── mcp_server.py          # Main MCP server implementation
├── pyproject.toml         # Project dependencies and metadata
├── Dockerfile             # Container image definition
├── docker-compose.yml     # Docker Compose configuration
├── .dockerignore          # Files to exclude from Docker build
└── README.md             # This file
```

## Tools

### `hello`

Returns a greeting message.

**Example:**
```python
@server.tool()
def hello():
    """Returns a greeting"""
    return "Hello from MCP 👋"
```

## License

MIT

TDQS

A4.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or confusion between tools. The single tool has a distinct and clear purpose.

Naming Consistency5/5

With only one tool named 'hello', there is no inconsistent naming pattern to violate. The name directly reflects the server's purpose.

Tool Count4/5

The server has a single tool, which is on the lower end of typical tool counts but appropriate for the server's narrow purpose of returning a greeting. It is slightly under a typical 3-15 tool scope but not unreasonably so.

Completeness5/5

The tool surface is complete for the server's stated purpose: returning a greeting. There are no obvious missing operations or dead ends for this trivial domain.

Maintenance

ActivityInactive
ResponsivenessNo issues