Skip to main content
Glama
wapred

MCP Math Tools

by wapred
README.md
# MCP Math Tools (stdio)

This project demonstrates a complete Model Context Protocol (MCP) setup using:
- MCP Server
- MCP Client
- stdio transport
- Math calculation tools

## Requirements
- Python 3.10+
- pip

## Setup

```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Run the Client
python client/math_client.py
```

# Expected Output
Available tools: ['add', 'subtract', 'multiply', 'divide']
10 + 5 = 15
6 * 7 = 42
20 / 4 = 5


# Mental Model
Client (math_client.py)
  |
  |  spawn process
  v
Python server/math_server.py
  |
  |  MCP initialize
  |
  |  tools/list
  v
Tool registry (add, subtract, multiply, divide)
  |
  |  JSON-RPC response
  v
Client prints tool metadata


## How list_tools() actually works
tools_result = await session.list_tools()


This sends an MCP request:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}

On the server side

Your math_server.py probably has something like:

@mcp.tool()
def add(a: float, b: float) -> float:
    """Add two numbers"""
    return a + b


When the server starts:

It registers all tools in an internal registry

Each tool has:

name

description

inputSchema

outputSchema

When it receives tools/list:

It serializes this registry

Sends it back to the client