Skip to main content
Glama
Jackdrakes

hello-mcp

by Jackdrakes

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

Related MCP server: Hello World MCP Server

Prerequisites

  • Python 3.12+

  • uv - Python package manager

  • Podman (optional, for containerized deployment)

Local Development

Install Dependencies

uv sync

Run the Server

uv run mcp_server.py

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

Docker/Podman Deployment

Build the Image

podman build -t hello-mcp .

Run the Container

Interactive mode (recommended for MCP servers):

podman run -it --name hello-mcp hello-mcp

Using Docker Compose:

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)

{
  "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

{
  "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:

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

License

MIT

Available Tools

1 tool
helloA

Returns a greeting

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the core behavior of returning a greeting, but does not disclose whether the greeting is static, random, or context-dependent. While this is likely sufficient for a simple tool, it adds no context beyond the name itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no extraneous words. It is front-loaded and fully earns its place. Conciseness is ideal for such a trivial tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's extreme simplicity—no parameters, no output schema—the description is complete enough to convey the function. A minor omission is not specifying the format of the greeting (e.g., plain text), but this is not essential for a greeting tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to describe. The description correctly avoids any mention of parameters, and nothing is missing from a parameter standpoint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Returns a greeting' clearly identifies the action (returns) and the resource (a greeting), making the tool's purpose immediately understandable. There are no sibling tools to differentiate from, so the simplicity is appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool or what alternatives exist. However, the tool's trivial nature makes the use case self-evident, and with no siblings, there is no competing tool to differentiate from. The usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.0
    • First observedhello

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

Related MCP Connectors

Related MCP Servers

  • -
    license
    C
    quality
    Not graded
    maintenance
    A simple boilerplate MCP server that provides a basic greeting tool for demonstration purposes. Serves as a starting template for developers to quickly create and deploy custom MCP servers.
    1
    6 npm
    -
  • A
    license
    C
    quality
    D
    maintenance
    A simple MCP server that provides a basic greeting tool for saying hello with customizable names. Serves as a boilerplate template for developers to quickly create and deploy new MCP servers.
    1
    6 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A demonstration MCP server that runs over HTTP with streamable transport, providing a simple greeting tool for testing MCP client-server communication. Built with FastMCP framework for educational purposes in learning MCP server development.
    -