Skip to main content
Glama
YasogaN

Math MCP Server

by YasogaN

@yasogan/math-mcp

npm version License: MIT Node.js >=18

A comprehensive Model Context Protocol server that exposes 8 mathematical tools to any MCP-compatible AI agent. Provides arithmetic, symbolic algebra, calculus, matrix operations, statistics, probability distributions, and unit conversions — no code required from the agent side.

Contents


Related MCP server: MCP Calculator Server

Installation

No installation required — run directly:

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": ["-y", "@yasogan/math-mcp"]
    }
  }
}

Local installation

npm install -g @yasogan/math-mcp
# or
pnpm add -g @yasogan/math-mcp

Then use directly:

{
  "mcpServers": {
    "math": {
      "command": "@yasogan/math-mcp"
    }
  }
}

Client configuration

Client

Config Location

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

OpenCode

~/.opencode/settings.json

Zed

~/.config/zed/settings.json

Cursor

~/.cursor/settings.json


Quick Start

Example prompt to an AI agent:

"What's the determinant of a 3x3 matrix [[1,2,3],[4,5,6],[7,8,9]]?"

The agent will call:

matrix({ op: "determinant", a: [[1,2,3],[4,5,6],[7,8,9]] })

→ Returns 0


Tool Reference

evaluate

Purpose: Evaluate mathematical expressions using either numeric (mathjs) or symbolic (Algebrite) computation.

Parameter

Type

Required

Description

expression

string

Yes

The mathematical expression to evaluate

mode

'numeric' | 'symbolic'

No

Default: 'numeric' — numeric uses mathjs for floating-point, symbolic uses Algebrite for exact results

Numeric mode examples:

// Arithmetic
evaluate({ expression: "2^10 + sqrt(144)" }); // → 1036
evaluate({ expression: "factorial(10)" }); // → 3628800
evaluate({ expression: "gcd(48, 18)" }); // → 6

// Trigonometry
evaluate({ expression: "sin(pi/6)" }); // → 0.5
evaluate({ expression: "cos(45 deg)" }); // → 0.70710678
evaluate({ expression: "atan2(1, 1)" }); // → 0.78539816

// Complex numbers
evaluate({ expression: "(2+3i)*(1-i)" }); // → 5+i
evaluate({ expression: "abs(3+4i)" }); // → 5

// Matrices
evaluate({ expression: "det([[1,2],[3,4]])" }); // → -2
evaluate({ expression: "inv([[2,0],[0,4]])" }); // → [[0.5,0],[0,0.25]]

// BigNumber precision
evaluate({ expression: "bignumber(2)^100" }); // → 1.2676506002282294e30 (exact)

// Units
evaluate({ expression: "180 km/h to m/s" }); // → 50 m/s

Symbolic mode examples:

// Derivatives (symbolic)
evaluate({ expression: "diff(x^3 + 2*x, x)", mode: "symbolic" }); // → 3*x^2+2

// Integrals (symbolic)
evaluate({ expression: "integrate(x^2, x)", mode: "symbolic" }); // → 1/3*x^3

// Simplification
evaluate({ expression: "expand((x+1)*(x-1))", mode: "symbolic" }); // → x^2-1

solve

Purpose: Solve algebraic equations for a specified variable. Returns all roots including complex ones.

Parameter

Type

Required

Description

equation

string

Yes

Equation containing exactly one = (e.g., "x^2 - 5x + 6 = 0")

variable

string

Yes

Variable to solve for (e.g., "x")

Examples:

// Quadratic equation — returns both roots
solve({ equation: "x^2 - 5x + 6 = 0", variable: "x" });
// → { result: "2, 3", numeric: 2, latex: "x = 2, x = 3" }

// Cubic with complex roots
solve({ equation: "x^3 - 1 = 0", variable: "x" });
// → { result: "1, (-0.5)+(-0.8660254037844386*i), (-0.5)+(0.8660254037844386*i)", ... }

// Find specific root
solve({ equation: "x^2 - 4 = 0", variable: "x" });
// → { result: "2, -2", numeric: 2, latex: "x = 2, x = -2" }

Constraints:

  • Only polynomial equations supported

  • Exactly one = required

  • No inequalities (<, >, <=, >=)


simplify

Purpose: Simplify algebraic expressions using mathematical rules (combine like terms, evaluate constants, apply trig identities).

Parameter

Type

Required

Description

expression

string

Yes

Expression to simplify

Examples:

simplify({ expression: "sin(x)^2 + cos(x)^2" }); // → 1
simplify({ expression: "2*x + 3*x" }); // → 5*x
simplify({ expression: "3 + 4 * 2" }); // → 11
simplify({ expression: "(x+1)^2 - (x^2 + 2*x + 1)" }); // → 0
simplify({ expression: "exp(ln(x))" }); // → x

factor

Purpose: Factor polynomial expressions into irreducible components.

Parameter

Type

Required

Description

expression

string

Yes

Expression to factor

Examples:

factor({ expression: "x^2 - 4" }); // → (x+2)*(x-2)
factor({ expression: "x^3 - 6*x^2 + 11*x - 6" }); // → (x-1)*(x-2)*(x-3)
factor({ expression: "12" }); // → 2^2*3
factor({ expression: "x^2 + 5*x + 6" }); // → (x+2)*(x+3)
factor({ expression: "a^2 - b^2" }); // → (a+b)*(a-b)

expand

Purpose: Expand factored or compound expressions into polynomial form.

Parameter

Type

Required

Description

expression

string

Yes

Expression to expand

Examples:

expand({ expression: "(x+1)^3" }); // → x^3+3*x^2+3*x+1
expand({ expression: "(a+b)*(a-b)" }); // → a^2-b^2
expand({ expression: "(x+2)*(x-2)" }); // → x^2-4
expand({ expression: "2*(x+y)" }); // → 2*x+2*y

matrix

Purpose: Perform matrix and vector operations.

Parameter

Type

Required

Description

op

string

Yes

Operation name

a

number[][]

Yes

First matrix/vector

b

number[][]

No

Second matrix/vector (required for binary ops)

Supported operations:

Operation

Description

Requires b?

multiply

Matrix multiplication A × B

Yes

add

Matrix addition A + B

Yes

subtract

Matrix subtraction A - B

Yes

inverse

Matrix inverse A⁻¹

No

transpose

Matrix transpose Aᵀ

No

determinant

Determinant |A|

No

eigenvalues

Eigenvalues of A

No

eigenvectors

Eigenvectors of A

No

rank

Matrix rank

No

norm

Frobenius norm ‖A‖

No

trace

Matrix trace

No

dot

Dot product of vectors

Yes

cross

Cross product of 3D vectors

Yes

Examples:

// Determinant
matrix({
  op: "determinant",
  a: [
    [1, 2],
    [3, 4],
  ],
});
// → -2

// Inverse
matrix({
  op: "inverse",
  a: [
    [4, 7],
    [2, 6],
  ],
});
// → [[0.6,-0.7],[-0.2,0.4]]

// Eigenvalues
matrix({
  op: "eigenvalues",
  a: [
    [2, 1],
    [1, 2],
  ],
});
// → [3, 1]

// Matrix multiplication
matrix({
  op: "multiply",
  a: [
    [1, 2],
    [3, 4],
  ],
  b: [
    [5, 6],
    [7, 8],
  ],
});
// → [[19,22],[43,50]]

// Dot product
matrix({ op: "dot", a: [[1, 2, 3]], b: [[4, 5, 6]] });
// → 32

// Cross product (3D vectors)
matrix({ op: "cross", a: [[1, 0, 0]], b: [[0, 1, 0]] });
// → [0, 0, 1]

Note: SVD is not supported. Use eigenvalues for similar decomposition.


statistics

Purpose: Descriptive statistics, probability distributions, and linear regression.

Parameter

Type

Required

Description

op

string

Yes

Operation name

data

number[]

Conditional*

Array of numbers (required for descriptive stats & regression)

args

object

Conditional*

Distribution parameters (required for distributions)

Descriptive operations (use data):

Operation

Description

Notes

mean

Arithmetic mean

median

Median value

mode

Most frequent value

Returns first if multiple

std

Sample standard deviation

Uses n-1 denominator

variance

Sample variance

Uses n-1 denominator

min

Minimum value

max

Maximum value

sum

Sum of all values

quantile

Quantile value

Requires args.prob (default 0.5)

mad

Median absolute deviation

skewness

Sample skewness

Requires n ≥ 3

kurtosis

Sample kurtosis

Requires n ≥ 4

Distribution operations (use args):

Operation

Parameters

Description

normal_pdf

x, mean, std

Probability density

normal_cdf

x, mean, std

Cumulative distribution

normal_inv

p, mean, std

Inverse CDF (quantile)

binomial_pmf

k, n, p

Probability mass

binomial_cdf

k, n, p

Cumulative distribution

poisson_pmf

k, lambda

Probability mass

poisson_cdf

k, lambda

Cumulative distribution

t_pdf

x, df

Student's t PDF

t_cdf

x, df

Student's t CDF

chi2_pdf

x, df

Chi-squared PDF

chi2_cdf

x, df

Chi-squared CDF

Regression operations (use data):

Operation

Description

linear_regression

Simple linear regression (y = mx + b), x auto-indexed as [0,1,2,...]

Examples:

// Descriptive statistics
statistics({ op: "mean", data: [4, 8, 15, 16, 23, 42] }); // → 18

// Standard deviation
statistics({ op: "std", data: [2, 4, 4, 4, 5, 5, 7, 9] });
// → 2.138

// Quantile (75th percentile)
statistics({ op: "quantile", data: [1, 2, 3, 4, 5], args: { prob: 0.75 } });
// → 4

// Normal PDF
statistics({
  op: "normal_pdf",
  args: { x: 0, mean: 0, std: 1 },
});
// → 0.398942

// Normal CDF (probability below z-score)
statistics({
  op: "normal_cdf",
  args: { x: 1.96, mean: 0, std: 1 },
});
// → 0.975

// Inverse normal (find z-score for 97.5th percentile)
statistics({
  op: "normal_inv",
  args: { p: 0.975, mean: 0, std: 1 },
});
// → 1.959964

// Binomial probability (exactly 3 heads in 10 flips)
statistics({
  op: "binomial_pmf",
  args: { k: 3, n: 10, p: 0.5 },
});
// → 0.117188

// Poisson (events in time interval)
statistics({
  op: "poisson_pmf",
  args: { k: 3, lambda: 2 },
});
// → 0.180447

// Linear regression
statistics({
  op: "linear_regression",
  data: [2, 4, 6, 8, 10],
});
// → { slope: 2, intercept: 0 }

units

Purpose: Convert between physical units of the same dimension.

Parameter

Type

Required

Description

expression

string

Yes

Format: '<value> <unit> to <unit>'

Supported unit categories:

Category

Units

Length

km, m, cm, mm, mi, yards, ft, in, nmi

Mass

kg, g, mg, lb, oz, ton

Temperature

degC, degF, K, rank

Pressure

Pa, kPa, MPa, bar, atm, psi

Energy

J, kJ, cal, kcal, Wh, kWh

Speed

m/s, km/h, mph, knots, ft/s

Area

m2, km2, ha, acre, ft2, mi2

Volume

L, mL, gal, qt, pt, cup, fl oz

Time

s, min, h, day, week, year

Examples:

units({ expression: "5 km to miles" }); // → 3.10686 miles
units({ expression: "100 degF to degC" }); // → 37.7778 degC
units({ expression: "1 atm to Pa" }); // → 101325 Pa
units({ expression: "60 mph to km/h" }); // → 96.5606 km/h
units({ expression: "1000 kg to lb" }); // → 2204.62 lb
units({ expression: "1 year to days" }); // → 365.242 days

Expression Syntax Guide

Arithmetic Operators

Symbol

Operation

Example

+

Addition

2 + 3 → 5

-

Subtraction

7 - 4 → 3

*

Multiplication

6 * 8 → 48

/

Division

15 / 3 → 5

^

Exponentiation

2^10 → 1024

%

Modulo

17 % 5 → 2

Functions

sqrt(x); // Square root
abs(x); // Absolute value
log(x); // Natural logarithm
log10(x); // Base-10 logarithm
exp(x); // e^x
factorial(n); // n!
gcd(a, b); // Greatest common divisor
lcm(a, b); // Least common multiple
floor(x); // Round down
ceil(x); // Round up
round(x); // Round to nearest

Trigonometry

(sin(x), cos(x), tan(x)); // Standard functions
(asin(x), acos(x), atan(x)); // Inverses
atan2(y, x); // Two-argument atan
(sinh(x), cosh(x), tanh(x)); // Hyperbolic
(deg, rad); // Unit conversion

Constants

pi; // 3.14159...
e; // 2.71828...
i; // Imaginary unit

Special Values

(Infinity, -Infinity);
NaN;

Development

# Install dependencies
pnpm install

# Build TypeScript
pnpm build

# Run tests
pnpm test

# Run in development (no build required)
pnpm dev

# Run in development with watch
pnpm test:watch

Tech stack: TypeScript, MCP SDK, mathjs, Algebrite, Vitest


License

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YasogaN/math-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server