Math MCP Learning
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Educational MCP server with 17 math/stats tools, visualizations, and persistent workspace
| Author | io.github.clouatre-labs |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 321 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Math MCP Learning": {
"url": "https://math-mcp.fastmcp.app/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (17)
calc_expressionread-onlySafely evaluate mathematical expressions with support for basic operations and math functions. Supported operations: +, -, *, /, **, () Supported functions: sin, cos, tan, log, sqrt, abs, pow
Parameters:
expression(required) — string — Mathematical expression to evaluate. Supports +, -, *, /, **, and math functions (sin, cos, sqrt, log, etc.). Example: '2 * sin(pi/4) + sqrt(16)'
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
calc_statisticsread-onlyPerform statistical calculations on a list of numbers. Available operations: mean, median, mode, std_dev, variance
Parameters:
numbers(required) — array — List of numbers to compute descriptive statistics on. Example: [1.0, 2.5, 3.0, 4.5, 5.0]operation(required) — string — Statistical operation to perform. Allowed values: mean, median, mode, std_dev, variance
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
calc_interestread-onlyCalculate compound interest for investments. Formula: A = P(1 + r/n)^(nt) Where: - P = principal amount - r = annual interest rate (as decimal) - n = number of times interest compounds per year - t = time in years
Parameters:
principal(required) — number — Initial investment amount in dollars (must be > 0), e.g. 1000.0rate(required) — number — Annual interest rate as decimal 0.0-1.0 (e.g. 0.05 = 5%). If entering a percentage, divide by 100 first.time(required) — number — Investment time in years (must be > 0), e.g. 10.0compounds_per_year— integer — Compounding frequency per year (must be > 0): 12=monthly, 365=daily
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
calc_unitsread-onlyConvert between different units of measurement. Supported unit types: - length: mm, cm, m, km, in, ft, yd, mi - weight: g, kg, oz, lb - temperature: c, f, k (Celsius, Fahrenheit, Kelvin)
Parameters:
value(required) — number — Numeric value to convert, e.g., 100.0from_unit(required) — string — Source unit abbreviation. Valid units depend on unit_type: length (mm, cm, m, km, in, ft, yd, mi), weight (g, kg, oz, lb), temperature (c, f, k)to_unit(required) — string — Target unit abbreviation. Valid units depend on unit_type: length (mm, cm, m, km, in, ft, yd, mi), weight (g, kg, oz, lb), temperature (c, f, k)unit_type(required) — string — Unit category: length, weight, or temperature
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
matrix_multiplyread-onlyMultiply two matrices (A × B).
Parameters:
matrix_a(required) — array — 2D list of numbers representing the first matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]matrix_b(required) — array — 2D list of numbers representing the second matrix. Each inner list is a row. Example: [[5, 6], [7, 8]]
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
matrix_transposeread-onlyTranspose a matrix (swap rows and columns).
Parameters:
matrix(required) — array — 2D list of numbers representing the matrix. Each inner list is a row. Example: [[1, 2, 3], [4, 5, 6]]
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
matrix_determinantread-onlyCalculate the determinant of a square matrix.
Parameters:
matrix(required) — array — 2D list of numbers representing a square matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
matrix_inverseread-onlyCalculate the inverse of a square matrix.
Parameters:
matrix(required) — array — 2D list of numbers representing a square matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
matrix_eigenvaluesread-onlyCalculate the eigenvalues of a square matrix.
Parameters:
matrix(required) — array — 2D list of numbers representing a square matrix. Each inner list is a row. Example: [[4, 2], [1, 3]]
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
workspace_saveSave calculation to persistent workspace (survives restarts).
Parameters:
name(required) — string — Variable name for the saved calculation. Used to retrieve it later. Example: 'circle_area'expression(required) — string — The mathematical expression that was evaluated. Example: 'pi * r**2'result(required) — number — Numeric result of evaluating the expression, e.g., 78.54
Hints: read-only no · destructive not declared · idempotent no · open-world not declared
workspace_loadread-onlyLoad previously saved calculation result from workspace.
Parameters:
name(required) — string — Name of the variable to load from workspace, e.g., 'circle_area'
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
plot_functionread-onlyGenerate mathematical function plots (requires matplotlib).
Parameters:
expression(required) — string — Mathematical expression to plot, e.g., "x**2" or "sin(x)". Must be <= MAX_EXPRESSION_LENGTH characters. Example: "x**2"x_range(required) — array — X-axis range as (min, max), e.g., (-5.0, 5.0)num_points— integer — Number of sample points to plot along x_range, e.g., 100
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
plot_histogramread-onlyCreate statistical histograms (requires matplotlib).
Parameters:
data(required) — array — List of numeric values to bin, e.g., [1.0, 2.0, 2.5, 3.0]bins— integer — Number of histogram bins, e.g., 20title— string — Chart title string, e.g., 'Data Distribution'
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
plot_line_chartread-onlyCreate a line chart from data points (requires matplotlib).
Parameters:
x_data(required) — array — X-axis data points, e.g., [1, 2, 3, 4]y_data(required) — array — Y-axis data points, e.g., [1, 4, 9, 16]color— Line color (name or hex code, e.g., 'blue', '#2E86AB')title— string — Chart title string, e.g., 'Squares'x_label— string — X-axis label, e.g., 'Time'y_label— string — Y-axis label, e.g., 'Distance'show_grid— boolean — Whether to display grid lines
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
plot_scatterread-onlyCreate a scatter plot from data points (requires matplotlib).
Parameters:
x_data(required) — array — X-axis data points, e.g., [1, 2, 3, 4]y_data(required) — array — Y-axis data points, e.g., [1, 4, 9, 16]color— Point color (name or hex code, e.g., 'blue', '#2E86AB')title— string — Chart title string, e.g., 'Correlation Study'x_label— string — X-axis label, e.g., 'Variable X'y_label— string — Y-axis label, e.g., 'Variable Y'point_size— integer — Scatter point size in points^2, e.g., 50
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
plot_box_plotread-onlyCreate a box plot for comparing distributions (requires matplotlib).
Parameters:
data_groups(required) — array — List of data groups to compare, e.g., [[1, 2, 3], [4, 5, 6]]color— Box color (name or hex code, e.g., 'blue', '#2E86AB')title— string — Chart title string, e.g., 'Distribution Comparison'y_label— string — Y-axis label, e.g., 'Values'group_labels— Labels for each group, e.g., ['Group A', 'Group B']
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
plot_financial_lineread-onlyGenerate and plot synthetic financial price data (requires matplotlib). Creates realistic price movement patterns for educational purposes. Does not use real market data.
Parameters:
days— integer — Number of days to generate, e.g., 30color— Line color (name or hex code, e.g., 'blue', '#2E86AB')trend— string — Market trend directionstart_price— number — Starting price value, e.g., 100.0
Hints: read-only yes · destructive not declared · idempotent yes · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.