Labsco
MCP SERVER

Vibe Math MCP

by apetta

21 calculation tools backed by SymPy, Polars, NumPy and SciPy — expressions, descriptive statistics, pivot tables, matrix decompositions, derivatives and integrals, and time-value-of-money — with batch_execute chaining a multi-step calculation into one request.

Physical Sciences & Scientific ComputingVerified
Summary
Every tool takes a context string and an output_mode, which is the design decision that matters: the caller says what the number is for and how much of the answer it wants back.

The library split is stated per tool rather than hidden — SymPy where an answer should stay symbolic, Polars where the data is columnar, NumPy BLAS and SciPy for linear algebra — so derivative returns 3*x^2 + 4*x rather than a float, and solve_linear_system takes an overdetermined system under method=least_squares instead of refusing it. The breadth is the trade: 21 tools that each carry context and output_mode on top of their own arguments is a wide surface to hold in front of a model, and batch_execute exists because walking a chained calculation one call at a time is the expensive path.

What it is

A calculation server that routes each kind of maths to an established library — SymPy for symbolic expressions, limits and series, Polars for array statistics, pivot tables and correlation, NumPy BLAS for matrix operations, SciPy for linear systems — across 21 tools that all take a context string and an output_mode.

What you get
  • Expression evaluation that keeps the variables: calculate runs an expression through SymPy with arithmetic, trigonometry, logarithms, sqrt, abs and the constants pi and e, and takes a variables argument so x^2 + 2*x + 1 is evaluated rather than left symbolic.
  • Everyday number work as named operations instead of formulas: percentage takes an operation of of, increase or decrease, or the change between values; round takes a method of round, floor, ceil or trunc with a decimals count; convert_units moves a value between degrees and radians.
  • Array work through Polars: array_operations applies an operation element-wise between arrays or between an array and a scalar, array_aggregate covers sumproduct, weighted_average with a weights list and dot_product, array_statistics computes along an axis for row-wise or column-wise results, and array_transform offers normalize, standardize, minmax_scale and log_transform.
  • Descriptive statistics and cross-tabulation: statistics runs describe for count, mean, std, min, max and median, quartiles for Q1 through Q3 and IQR, and outliers by IQR-based detection; correlation builds a pearson or spearman matrix; pivot_table reshapes records by index and columns with values aggregated by aggfunc.
  • Time value of money in the terms the question is asked in: financial_calcs solves for present value, future value, payment, rate, IRR or NPV given the others, under a sign convention where cash out is negative; compound_interest takes a frequency for discrete or continuous compounding; perpetuity prices level and growing perpetuities from payment, rate and growth_rate.
  • Linear algebra on NumPy BLAS and SciPy: matrix_operations covers multiply, inverse, transpose and determinant, solve_linear_system takes coefficients and constants with a method of direct or least_squares so an overdetermined system resolves to a best fit, and matrix_decomposition returns eigenvalues and eigenvectors, SVD, QR, Cholesky or LU.
  • Symbolic calculus rather than numeric approximation: derivative takes an order for higher derivatives and a point to evaluate at, integral takes lower_bound and upper_bound for a definite integral or neither for the antiderivative, and limits_series computes limits including one-sided limits by direction and limits at infinity.
  • Multi-step calculations as one call: batch_execute takes an operations list with automatic dependency chaining, so a step whose input is an earlier step's output runs in the same request, governed by execution_mode, max_concurrent and stop_on_error.
Requirements

Nothing — no account, no key.

Setup effort

One command — uvx vibe-math-mcp