# Reported issues for calculator-mcp-server

Pod holds 15 of 15 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [calculator-mcp-server](/mcp/calculator-mcp-server).

## Most discussed

### bug(calculate): a function used as a value gets a unit-mismatch recovery hint (5 min to s)

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0 (via `runToolContract`)

### Transport

stdio

### Description

When implicit multiplication puts a function next to a value, math.js throws a type error from `multiplyScalar`. The call fails with `type_mismatch`, and the recovery tells the caller to attach or strip units. That points the wrong way. `5 min to s` reads `min` as the minimum function, not minutes. `(f(x) = x^2)(3)`…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/38) · 2026-09-24 · closed · 1 comment

### bug(calculate): custom units (knot, lightyear) hijack unit simplification of SI results

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0 (via `runToolContract`)

### Transport

stdio

### Description

The custom units the server registers (`mph`, `knot`, `lightyear`) take over math.js's automatic unit simplification. A velocity computed from SI units comes back in knots, and a product involving a length can come back in light-years. The values are numerically right but unreadable, and they aren't in the units the caller…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/37) · 2026-09-24 · closed · 1 comment

### bug(calculate): Fraction mode rejects whole-number dimension arguments with fraction_unsupported

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0 (via `runToolContract`)

### Transport

stdio

### Description

Under `numericType: "Fraction"`, the dimension argument of matrix reductions and `concat` parses as a Fraction, and those functions accept only a number there. The call fails with `fraction_unsupported`, whose message says the result has no exact rational value or the function can't be computed in Fraction mode. Both are…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/36) · 2026-09-24 · closed · 1 comment

### bug(calculate): Fraction mode returns inexact floats without error and rejects integer indexes

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0 (via `runToolContract`)

### Transport

stdio

### Description

Under `numericType: "Fraction"`, constants and non-integer powers fall back to a 64-bit float, and the call succeeds with resultType `number`. The caller asked for exact arithmetic and gets a rounded value with no error, which is the case `fraction_unsupported` exists to flag. Separately, integer indexes parse as Fractions,…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/35) · 2026-09-24 · closed · 1 comment

### bug(calculate): assignments in an expression leak into scopeVars

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0 (via `runToolContract`)

### Transport

stdio

### Description

`evaluate` passes the caller's `scope` object to math.js, and an assignment inside the expression writes into that object. The handler builds `scopeVars` from `Object.keys(scope)` after evaluation, so the output lists names the caller never sent.

Related: #12 (`scopeVars` echo).

### Steps to reproduce

1. `calculate` with…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/34) · 2026-09-24 · closed · 1 comment

### bug(calculate): Fraction mode misreports matrix size arguments and exponent literals

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0 (via `runToolContract`)

### Transport

stdio

### Description

Under `numericType: "Fraction"`, two failures carry messages that point the caller the wrong way. Size arguments to matrix constructors parse as Fractions, and those functions have no Fraction signature, so `zeros(2)` fails with `fraction_unsupported`, whose message blames an irrational result. Exponent literals are…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/33) · 2026-09-24 · closed · 1 comment

### bug(calculate): multiple-expression scan ignores single-quoted strings

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Node.js

### Runtime version

Bun 1.4.0 (via the tool handler)

### Transport

stdio

### Description

`hasExpressionSeparator()` (#16) treats only `"` as a string delimiter; its comment says `'` is only the transpose operator. [math.js](https://mathjs.org/) 15 also parses `'…'` as a string literal (`'a;b'` → `"a;b"`). A `;` or newline inside a single-quoted string is therefore rejected as `multiple_expressions`. A `"` or…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/32) · 2026-09-24 · closed · 1 comment

### bug(calculate): help() in an expression escapes the typed-error mapping as an internal error

### Server version

0.4.3

### mcp-ts-core version

^0.13.6

### Runtime

Node.js

### Runtime version

Bun 1.4.0 (via `runToolContract`)

### Transport

stdio

### Description

Calling math.js [`help`](https://mathjs.org/docs/reference/functions/help.html) inside an expression fails with an uncontracted internal error. `help` is not in `DISABLED_FUNCTIONS`, so it returns a `Help` object that passes `validateResultType`; `inst.format(raw)` then renders the object's examples by calling the…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/31) · 2026-09-24 · closed · 1 comment

## Most recent

### bug(calculate): evaluation-time math.js errors (unit/type mismatch, domain, dimension) surface as parse_failed with a syntax hint

### Server version

0.4.1

### mcp-ts-core version

^0.12.3

### Runtime

Bun

### Runtime version

Bun 1.3.x

### Transport

HTTP (Streamable HTTP)

### Description

`MathService.runWithTimeout` maps every non-timeout error to `parse_failed` (#19 carved out only Fraction conversion), with a recovery about balanced parentheses and function names. Most of those errors come from [math.js](https://mathjs.org/) evaluating an expression that already parsed — argument types, unit mismatches, arity,…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/29) · 2026-08-22 · closed · 1 comment

### feat(config): default MCP_SESSION_MODE to stateless across env, Docker, and src

`Dockerfile` sets `ENV MCP_SESSION_MODE="stateless"`, but `.env.example` carries a commented `# MCP_SESSION_MODE=stateful`, whose comment documents the value set as `stateful | stateless (default: stateful)`. The container and the same code run via `bunx`, `npm start`, or from source therefore resolve to different session modes — stateless in Docker, stateful everywhere else, since the framework schema defaults to `auto` and `auto` resolves to `stateful`.

The hosted deployment runs stateless…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/28) · 2026-08-22 · closed · 1 comment

### bug(calculate): evaluate()/simplify()/derivative() inside an expression misdirect instead of pointing at the operation parameter

### Server version

0.4.0

### mcp-ts-core version

0.10.10

### Runtime

Bun

### Runtime version

Bun 1.3.x (hosted Docker image)

### Transport

HTTP (Streamable HTTP)

### OS

Linux (Docker)

### Description

All three `operation` values — `evaluate`, `simplify`, `derivative` — are also blocked function names inside expressions (#18). A caller who writes the operation as a function call is misdirected:

- Under `operation: "evaluate"`, the stub throws `Function "derivative" is disabled for…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/27) · 2026-08-21 · closed · 1 comment

### bug(calculate): format() renders expression, result, and scope-key text as live Markdown

### Server version

0.4.0

### mcp-ts-core version

^0.10.10

### Runtime

Node.js

### Runtime version

Node v26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

`calculate`'s `format()` interpolates caller-controlled text into `content[]` Markdown as-is: the expression in a fixed single-backtick span, the result and scope-variable names as raw text. String, string-matrix, and object results render as links and HTML, a backtick closes the expression span early, and a multi-line…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/26) · 2026-08-11 · closed · 1 comment

### bug(calculate): number-mode config stub breaks eigs, schur, intersect and skews tolerance comparisons

### Server version

0.4.0

### mcp-ts-core version

^0.10.10

### Runtime

Node.js

### Runtime version

Node v26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

`eigs`, advertised in `calculator://help`, fails for valid matrices in default `number` mode, and the same cause breaks or skews other functions. The hardened `number` instance replaces `config` with a throwing stub that carries none of math.js's config properties. math.js injects `config` into each factory when it is…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/25) · 2026-08-11 · closed · 1 comment

### bug(calculate): notation aliases rewrite quoted string literals

### Server version

0.4.0

### mcp-ts-core version

^0.10.10

### Runtime

Node.js

### Runtime version

Node v26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

`calculate` rewrites standard-notation aliases inside quoted string literals. `normalizeNotation()` (#13) applies `NOTATION_ALIAS_PATTERN` to the raw expression, so `ln(` or an `arc*(` name inside a string changes before math.js parses it. Double- and single-quoted strings (math.js 15 accepts both) are affected, under…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/24) · 2026-08-11 · closed · 1 comment

### bug(calculate): non-finite BigNumber, Unit, and object results bypass undefined_result

### Server version

0.4.0

### mcp-ts-core version

^0.10.10

### Runtime

Node.js

### Runtime version

Node v26.3.1

### Transport

HTTP (Streamable HTTP)

### Description

`calculate` rejects non-finite results with `undefined_result`, but `containsNonFinite()` in `src/services/math/math-service.ts` only recognizes JS numbers, arrays, `Complex` (`re`/`im`), and matrices (`toArray()`). A non-finite value held in a `BigNumber` (scalar or matrix element), a `Unit`, or a plain object passes the…

[Read the thread](https://github.com/cyanheads/calculator-mcp-server/issues/21) · 2026-07-02 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/calculator-mcp-server/issues).
