hello-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hello-mcpuse the hello tool"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
uvas the Python package manager
Related MCP server: Hello World MCP Server
Prerequisites
Local Development
Install Dependencies
uv syncRun the Server
uv run mcp_server.pyThe 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-mcpUsing Docker Compose:
podman-compose upNote: 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.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.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 fileTools
hello
Returns a greeting message.
Example:
@server.tool()
def hello():
"""Returns a greeting"""
return "Hello from MCP 👋"License
MIT
Available Tools
1 toolhelloA
Returns a greeting
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 tool update
v0.1.0- First observed
hello
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or confusion between tools. The single tool has a distinct and clear purpose.
With only one tool named 'hello', there is no inconsistent naming pattern to violate. The name directly reflects the server's purpose.
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.
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
Related MCP Connectors
A simple MCP server built with FastMCP and python
POC MCP server. Tool say_hello returns 'Welcome' (agent -> MCP -> API path).
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA simple MCP server that generates multi-language greetings and provides server information using the FastMCP framework.MIT
- -licenseCqualityNot gradedmaintenanceA 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.16 npm-
- AlicenseCqualityDmaintenanceA 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.16 npmMIT
- FlicenseNot gradedqualityDmaintenanceA 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.-