Simple MCP Server
A simple Model Context Protocol (MCP) server built with FastMCP, featuring three utility tools.
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)
Installation
Install dependencies using uv:
uv sync
Usage
Running the Server
Start the MCP server with HTTP transport:
uv run server.py
The server will start on http://localhost:8000/mcp by default.
Testing with FastMCP Client
Run the FastMCP-based client:
uv run client_fastmcp.py
Testing with httpx Client
Run the pure httpx client (no MCP libraries required):
uv run client_httpx.py
Testing with curl Client
Run the bash script using only curl and jq:
./client_curl.sh
Requirements for curl client:
curl(for HTTP requests)jq(for JSON parsing)- Standard Unix tools (
grep,sed,awk,tr)
Project Structure
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)
Example Output
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}
Technical Details
- 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
Client Implementations
-
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
Requirements
- Python 3.13+
- fastmcp
- httpx (included as fastmcp dependency)
Metadata
Release files for iflow-mcp_dataworkshop-simple-mcp-server 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iflow_mcp_dataworkshop_simple_mcp_server-0.1.0.tar.gz | 48.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| iflow_mcp_dataworkshop_simple_mcp_server-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 99.4 kB
Release files / iflow_mcp_dataworkshop_simple_mcp_server-0.1.0.tar.gz
| Download URL | iflow_mcp_dataworkshop_simple_mcp_server-0.1.0.tar.gz |
|---|---|
| Size | 48.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a0559e3f3cf701ddf0715df68002611c7774d48564aa0a583269b34e6067c683
|
|
BLAKE2b-256 checksum How to use checksums |
ab92dbb9efd450212a7a45dfa35bc1173753a541d471200bc3d96d6caf30dd8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.8
|
Release files / iflow_mcp_dataworkshop_simple_mcp_server-0.1.0-py3-none-any.whl
| Download URL | iflow_mcp_dataworkshop_simple_mcp_server-0.1.0-py3-none-any.whl |
|---|---|
| Size | 50.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cd95e642e3546a0a0b28bc0cfef6fb3943309a4e54f109465e615628e05fae2d
|
|
BLAKE2b-256 checksum How to use checksums |
115c3c5a7f5778fe8d2066e0376caa6dc6a2e0bf4eadadc369271a051c8280db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.8
|