Skip to main content
Glama
Muhammad-Moin

FastMCP Calculator Server

README.md
# FastMCP Calculator Server

A Model Context Protocol (MCP) server providing calculator functionality with authentication options.

## Quick Start

### 1. Install Dependencies
```bash
pip install -r requirements.txt
```

### 2. Choose Authentication Mode

**No Authentication (Port 8000)**
```bash
python calculator_server.py
```

**JWT Authentication (Port 8001)**
```bash
python calculator_server_auth.py
# Copy the bearer token from output
```

**Google OAuth (Port 8002)**
```bash
# Setup: Get credentials from https://console.cloud.google.com/
# Create .env file with GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET
python calculator_server_google_oauth.py
```

## Calculator Tools

- `add(a, b)` - Add two numbers
- `subtract(a, b)` - Subtract numbers
- `multiply(a, b)` - Multiply numbers
- `divide(a, b)` - Divide numbers
- `power(base, exponent)` - Raise to power
- `modulo(a, b)` - Get remainder
- `square_root(n)` - Calculate square root
- `evaluate_expression(expr)` - Evaluate math expression
- `calculate_percentage(value, pct)` - Calculate percentage
- `average(numbers)` - Calculate average

## Google OAuth Setup

1. Go to https://console.cloud.google.com/
2. Create OAuth 2.0 Client ID
3. Add redirect URI: `http://localhost:8000/auth/callback`
4. Copy credentials to `.env`:
```
GOOGLE_CLIENT_ID=your-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-secret
SERVER_BASE_URL=http://localhost:8000
```

## Claude Desktop Setup

Edit your Claude config file:

**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "calculator": {
      "command": "python",
      "args": ["path/to/calculator_server.py"]
    }
  }
}
```

## Production

- Use HTTPS (required for Google OAuth)
- Store credentials securely
- Enable rate limiting
- Set up monitoring

## Resources

- [FastMCP Documentation](https://gofastmcp.com/)
- [MCP Specification](https://modelcontextprotocol.io/)