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