Skip to main content
Glama
halfords-pro

@halfords-pro/calculator

by halfords-pro
README.md
# @halfords-pro/calculator

An MCP (Model Context Protocol) server providing calculator tools with precise decimal arithmetic, suitable for accounting and tax calculations.

## Features

- **Precise decimal arithmetic** — uses [decimal.js](https://github.com/MikeMcl/decimal.js) to avoid floating-point errors
- **Excel-style rounding** — round half away from zero (ROUND_HALF_UP), the standard for accounting and tax
- **MCP protocol** — integrates with any MCP-compatible client (Claude Desktop, Claude Code, etc.)

## Installation

```bash
npm install -g @halfords-pro/calculator
```

## Usage

### Claude Desktop

Add to your Claude Desktop configuration (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "calculator": {
      "command": "npx",
      "args": ["-y", "@halfords-pro/calculator"]
    }
  }
}
```

### Claude Code

```bash
claude mcp add calculator -- npx -y @halfords-pro/calculator
```

## Tools

### sum

Sum an array of signed decimal numbers and round the result to a specified number of decimal places.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `values` | `number[]` | Yes | Array of signed decimal numbers to sum |
| `decimalPlaces` | `number` | Yes | Number of decimal places to round the result to |

**Examples:**

```
sum({ values: [1.00, -2.50, 3.89], decimalPlaces: 2 })
→ "2.39"

sum({ values: [1.00, -2.50, 3.89283829, -539.38390293], decimalPlaces: 4 })
→ "-536.9911"

sum({ values: [0.1, 0.2], decimalPlaces: 2 })
→ "0.30"  (not 0.30000000000000004)
```

**Rounding behaviour:**

Uses "round half away from zero" (equivalent to Excel `ROUND()`):

| Value | Rounded to 2dp |
|-------|---------------|
| 2.125 | 2.13 |
| -2.125 | -2.13 |
| 2.124 | 2.12 |

## Development

```bash
# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Launch MCP Inspector
npm run inspector
```

## License

ISC

TDQS

A4.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is zero ambiguity—the 'sum' tool has a clear, singular purpose that cannot be confused with anything else.

Naming Consistency5/5

The single tool name 'sum' is simple, descriptive, and perfectly aligned with its operation, presenting no inconsistency issues.

Tool Count2/5

A calculator server exposing only one tool is too sparse for its apparent domain; even a minimal arithmetic toolkit would include multiple basic operations.

Completeness1/5

The server covers only addition, missing essential operations like subtraction, multiplication, division, or more advanced calculator functions, making the surface severely incomplete.

Maintenance

ActivityInactive
ResponsivenessNo issues