Skip to main content
Glama
Abhinav140203

Math Operations MCP Server

README.md
# Math Operations MCP Server

A simple Model Context Protocol (MCP) server with HTTP SSE (Server-Sent Events) transport that performs basic math operations on two numbers.

## Features

- **6 Math Operations**: add, subtract, multiply, divide, power, modulo
- **HTTP SSE Transport**: Connect from anywhere via HTTP streaming
- **Easy Deployment**: Deploy to Railway, Render, Heroku, or any platform
- **Claude Integration**: Connect directly to Claude for AI-powered calculations

## Available Operations

1. **add** - Add two numbers together
2. **subtract** - Subtract the second number from the first
3. **multiply** - Multiply two numbers together
4. **divide** - Divide the first number by the second
5. **power** - Raise the first number to the power of the second
6. **modulo** - Calculate the remainder when dividing

## Quick Start

### Local Development

1. **Install dependencies**:
```bash
pip install -r requirements.txt
```

2. **Run the server**:
```bash
python server.py
```

The server will start on `http://localhost:3000`

3. **Test the server**:
```bash
# Health check
curl http://localhost:3000/

# SSE endpoint (for MCP connection)
curl http://localhost:3000/sse
```

## Deployment Options

### Option 1: Railway (Recommended)

1. Install Railway CLI:
```bash
npm i -g @railway/cli
```

2. Login and deploy:
```bash
railway login
railway init
railway up
```

3. Get your deployment URL from Railway dashboard

### Option 2: Render

1. Create account at [render.com](https://render.com)
2. Click "New +" → "Web Service"
3. Connect your GitHub repository
4. Render will auto-detect the `render.yaml` configuration
5. Click "Create Web Service"
6. Copy your deployment URL (e.g., `https://your-app.onrender.com`)

### Option 3: Heroku

1. Install Heroku CLI and login:
```bash
heroku login
```

2. Create and deploy:
```bash
heroku create your-app-name
git push heroku main
```

3. Get your URL:
```bash
heroku open
```

### Option 4: Docker

1. Build the image:
```bash
docker build -t math-mcp-server .
```

2. Run the container:
```bash
docker run -p 3000:3000 math-mcp-server
```

## Connecting to Claude

Once deployed, you can connect this MCP server to Claude Desktop or Claude Code.

### Claude Desktop Configuration

Edit your Claude Desktop config file:

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

Add your server:

```json
{
  "mcpServers": {
    "math-operations": {
      "url": "https://your-deployed-url.com/sse"
    }
  }
}
```

Replace `https://your-deployed-url.com` with your actual deployment URL.

### Claude Code Configuration

Add to your `mcp_config.json`:

```json
{
  "mcpServers": {
    "math-operations": {
      "url": "https://your-deployed-url.com/sse"
    }
  }
}
```

## Testing the Connection

After connecting to Claude, try asking:

- "What's 25 + 17?"
- "Calculate 144 divided by 12"
- "What's 2 to the power of 10?"
- "What's 100 modulo 7?"

Claude will use your deployed MCP server to perform these calculations!

## API Endpoints

- `GET /` - Health check and server info
- `GET /sse` - SSE endpoint for MCP connections
- `POST /messages` - Message handling endpoint

## Environment Variables

- `PORT` - Server port (default: 3000)

## Development

The server is built with:
- **mcp** - Model Context Protocol SDK
- **starlette** - Lightweight ASGI framework
- **uvicorn** - ASGI server

## Troubleshooting

### Connection Issues

1. **Check server is running**: Visit `https://your-url.com/` to see the health check
2. **Verify SSE endpoint**: The SSE endpoint should be at `/sse`
3. **Check logs**: View deployment logs in your platform dashboard
4. **CORS issues**: The server accepts all origins for SSE connections

### Claude Can't Connect

1. Verify the URL in your config is correct
2. Make sure it ends with `/sse`
3. Restart Claude Desktop/Code after config changes
4. Check that your deployment is publicly accessible

## License

MIT

## Contributing

Feel free to open issues or submit pull requests!