A simple Model Context Protocol (MCP) server built with FastMCP, featuring three utility tools.
- generate_uuid - Generates a random UUID (version 4 or 1)
- convert_temperature - Converts temperature between Celsius and Fahrenheit
- text_statistics - Calculates basic text statistics (characters, words, lines)
Install dependencies using uv:
uv syncStart the MCP server with HTTP transport:
uv run server.pyThe server will start on http://localhost:8000/mcp by default.
Run the FastMCP-based client:
uv run client_fastmcp.pyRun the pure httpx client (no MCP libraries required):
uv run client_httpx.pyRun the bash script using only curl and jq:
./client_curl.shRequirements for curl client:
curl(for HTTP requests)jq(for JSON parsing)- Standard Unix tools (
grep,sed,awk,tr)
server.py- MCP server with three utility toolsclient_fastmcp.py- Client using FastMCP libraryclient_httpx.py- Client using only httpx for direct HTTP requestsclient_curl.sh- Bash script client using curl and jqmain.py- Original template file (not used)
All three clients will:
- Connect to the server
- List available tools
- Test generate_uuid (generates a UUID v4)
- Test convert_temperature (converts 0°C to Fahrenheit → 32.0°F)
- Test text_statistics (counts characters, words, and lines in sample text)
Example:
Test 1: Generate UUID
Result: 98f99e94-7357-4dd4-85eb-76819fad3ada
Test 2: Convert temperature (0°C to Fahrenheit)
Result: 32.0
Test 3: Text statistics
Result: {"characters":47,"words":9,"lines":3}
- Transport: Streamable HTTP (MCP protocol over HTTP)
- Endpoint:
/mcp - Response Format: Server-Sent Events (SSE)
- Session Management: Server assigns session ID via
Mcp-Session-Idheader
-
FastMCP Client (
client_fastmcp.py):- Uses official MCP Python SDK
- Handles SSE automatically
- Full protocol support
-
httpx Client (
client_httpx.py):- Pure Python with only httpx dependency
- Manual JSON-RPC implementation
- Custom SSE parsing
-
curl Client (
client_curl.sh):- Bash script using curl and jq
- Demonstrates raw HTTP requests
- No Python dependencies required
- Python 3.13+
- fastmcp
- httpx (included as fastmcp dependency)