Koskamo

Math MCP Learning

An educational MCP server providing 17 tools for mathematical calculations, matrix algebra, statistical analysis, and data visualization. It supports persistent workspaces to save and load calculations, offers unit conversions, and includes prompts for tutoring and formula explanations. Built with FastMCP and the official Model Context Protocol Python SDK.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Math MCP Learning logo, by clouatre-labsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by clouatre-labs
MCP endpoint (Streamable HTTP)
https://math-mcp.fastmcp.app/mcp
Vendor documentation

What its tools do

17 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

17 of 17 have a description · 17 of 17 declare behavior hints · 17 of 17 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Evaluate mathematical expressions and perform statistical analysis
  • Perform matrix operations like multiplication, determinant, and inverse
  • Visualize data with histograms, line charts, and scatter plots
  • Save and retrieve calculations in a persistent workspace

Source and maintenance

Community listingRegistry 0.12.5
Maintenance checked

Protocol and capabilities

Server
Math Learning Server 4.1.5
MCP protocol negotiated in check
2025-11-25
Tools
17 advertised
Resources
5 advertised
Resource templates
1 advertised
Prompts
2 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {},
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "subscribe": false,
    "listChanged": true
  },
  "completions": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Math Learning Server - use these tools for mathematical computation: CALCULATE: Use `calculate` for arithmetic/algebra, `statistics` for lists, `compound_interest` for finance (rate as decimal: 0.05 = 5%), `convert_units` for unit conversion (length/weight/temperature). MATRIX: Use `matrix_multiply`, `matrix_determinant`, `matrix_inverse`, `matrix_transpose`, `matrix_eigenvalues` for linear algebra. VISUALIZE: Use `plot_function`, `plot_histogram`, `plot_scatter`, `plot_line_chart`, `plot_box_plot`, `plot_financial_line` for charts. WORKSPACE: Use `save_calculation` to persist results, `load_variable` to retrieve. Results survive server restarts. View all via math://workspace resource. RESOURCES: math://functions (syntax reference), math://constants/{name} (pi/e/golden_ratio/euler_gamma/sqrt2/sqrt3), math://catalog/tools (tool index).

Tools

17 advertised

calc_expression — Mathematical Calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

Safely evaluate mathematical expressions with support for basic operations and math functions. Supported operations: +, -, *, /, **, () Supported functions: sin, cos, tan, log, sqrt, abs, pow

calc_expression input schema
{
  "type": "object",
  "required": [
    "expression"
  ],
  "properties": {
    "expression": {
      "type": "string",
      "maxLength": 500,
      "description": "Mathematical expression to evaluate. Supports +, -, *, /, **, and math functions (sin, cos, sqrt, log, etc.). Example: '2 * sin(pi/4) + sqrt(16)'"
    }
  },
  "additionalProperties": false
}
calc_expression output schema
{
  "type": "object",
  "required": [
    "expression",
    "result",
    "difficulty",
    "topic"
  ],
  "properties": {
    "topic": {
      "type": "string"
    },
    "result": {
      "type": "number"
    },
    "difficulty": {
      "type": "string"
    },
    "expression": {
      "type": "string"
    }
  },
  "description": "Result of a mathematical expression evaluation."
}
calc_expression annotations
{
  "title": "Mathematical Calculator",
  "readOnlyHint": true,
  "idempotentHint": true
}
calc_statistics — Statistical Analysis
Advertised by the server during the last successful anonymous check.
Advertised read-only

Perform statistical calculations on a list of numbers. Available operations: mean, median, mode, std_dev, variance

calc_statistics input schema
{
  "type": "object",
  "required": [
    "numbers",
    "operation"
  ],
  "properties": {
    "numbers": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 10000,
      "description": "List of numbers to compute descriptive statistics on. Example: [1.0, 2.5, 3.0, 4.5, 5.0]"
    },
    "operation": {
      "type": "string",
      "examples": [
        "mean",
        "median",
        "mode",
        "std_dev",
        "variance"
      ],
      "description": "Statistical operation to perform. Allowed values: mean, median, mode, std_dev, variance"
    }
  },
  "additionalProperties": false
}
calc_statistics output schema
{
  "type": "object",
  "required": [
    "operation",
    "result",
    "sample_size",
    "difficulty",
    "topic"
  ],
  "properties": {
    "topic": {
      "type": "string"
    },
    "result": {
      "type": "number"
    },
    "operation": {
      "type": "string"
    },
    "difficulty": {
      "type": "string"
    },
    "sample_size": {
      "type": "integer"
    }
  },
  "description": "Result of statistical calculation."
}
calc_statistics annotations
{
  "title": "Statistical Analysis",
  "readOnlyHint": true,
  "idempotentHint": true
}
calc_interest — Compound Interest Calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculate 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

calc_interest input schema
{
  "type": "object",
  "required": [
    "principal",
    "rate",
    "time"
  ],
  "properties": {
    "rate": {
      "type": "number",
      "maximum": 1,
      "minimum": 0,
      "description": "Annual interest rate as decimal 0.0-1.0 (e.g. 0.05 = 5%). If entering a percentage, divide by 100 first."
    },
    "time": {
      "type": "number",
      "description": "Investment time in years (must be > 0), e.g. 10.0",
      "exclusiveMinimum": 0
    },
    "principal": {
      "type": "number",
      "description": "Initial investment amount in dollars (must be > 0), e.g. 1000.0",
      "exclusiveMinimum": 0
    },
    "compounds_per_year": {
      "type": "integer",
      "default": 12,
      "description": "Compounding frequency per year (must be > 0): 12=monthly, 365=daily",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
calc_interest output schema
{
  "type": "object",
  "required": [
    "principal",
    "final_amount",
    "total_interest",
    "rate",
    "time",
    "compounds_per_year",
    "difficulty",
    "topic",
    "formula"
  ],
  "properties": {
    "rate": {
      "type": "number"
    },
    "time": {
      "type": "number"
    },
    "topic": {
      "type": "string"
    },
    "formula": {
      "type": "string"
    },
    "principal": {
      "type": "number"
    },
    "difficulty": {
      "type": "string"
    },
    "final_amount": {
      "type": "number"
    },
    "total_interest": {
      "type": "number"
    },
    "compounds_per_year": {
      "type": "integer"
    }
  },
  "description": "Result of compound interest calculation."
}
calc_interest annotations
{
  "title": "Compound Interest Calculator",
  "readOnlyHint": true,
  "idempotentHint": true
}
calc_units — Unit Converter
Advertised by the server during the last successful anonymous check.
Advertised read-only

Convert 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)

calc_units input schema
{
  "type": "object",
  "required": [
    "value",
    "from_unit",
    "to_unit",
    "unit_type"
  ],
  "properties": {
    "value": {
      "type": "number",
      "description": "Numeric value to convert, e.g., 100.0"
    },
    "to_unit": {
      "type": "string",
      "examples": [
        "ft",
        "lb",
        "f"
      ],
      "description": "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)"
    },
    "from_unit": {
      "type": "string",
      "examples": [
        "m",
        "kg",
        "c"
      ],
      "description": "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)"
    },
    "unit_type": {
      "type": "string",
      "examples": [
        "length",
        "weight",
        "temperature"
      ],
      "description": "Unit category: length, weight, or temperature"
    }
  },
  "additionalProperties": false
}
calc_units output schema
{
  "type": "object",
  "required": [
    "value",
    "from_unit",
    "to_unit",
    "converted_value",
    "unit_type",
    "difficulty",
    "topic"
  ],
  "properties": {
    "topic": {
      "type": "string"
    },
    "value": {
      "type": "number"
    },
    "to_unit": {
      "type": "string"
    },
    "from_unit": {
      "type": "string"
    },
    "unit_type": {
      "type": "string"
    },
    "difficulty": {
      "type": "string"
    },
    "converted_value": {
      "type": "number"
    }
  },
  "description": "Result of unit conversion."
}
calc_units annotations
{
  "title": "Unit Converter",
  "readOnlyHint": true,
  "idempotentHint": true
}
matrix_multiply — Matrix Multiplication
Advertised by the server during the last successful anonymous check.
Advertised read-only

Multiply two matrices (A × B).

matrix_multiply input schema
{
  "type": "object",
  "required": [
    "matrix_a",
    "matrix_b"
  ],
  "properties": {
    "matrix_a": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      "maxItems": 10000,
      "description": "2D list of numbers representing the first matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]"
    },
    "matrix_b": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      "maxItems": 10000,
      "description": "2D list of numbers representing the second matrix. Each inner list is a row. Example: [[5, 6], [7, 8]]"
    }
  },
  "additionalProperties": false
}
matrix_multiply output schema
{
  "type": "object",
  "required": [
    "rows_a",
    "cols_a",
    "rows_b",
    "cols_b",
    "result_matrix",
    "difficulty",
    "topic"
  ],
  "properties": {
    "topic": {
      "type": "string"
    },
    "cols_a": {
      "type": "integer"
    },
    "cols_b": {
      "type": "integer"
    },
    "rows_a": {
      "type": "integer"
    },
    "rows_b": {
      "type": "integer"
    },
    "difficulty": {
      "type": "string"
    },
    "result_matrix": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      }
    }
  },
  "description": "Result of matrix multiplication operation."
}
matrix_multiply annotations
{
  "title": "Matrix Multiplication",
  "readOnlyHint": true,
  "idempotentHint": true
}
matrix_transpose — Matrix Transpose
Advertised by the server during the last successful anonymous check.
Advertised read-only

Transpose a matrix (swap rows and columns).

matrix_transpose input schema
{
  "type": "object",
  "required": [
    "matrix"
  ],
  "properties": {
    "matrix": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      "maxItems": 10000,
      "description": "2D list of numbers representing the matrix. Each inner list is a row. Example: [[1, 2, 3], [4, 5, 6]]"
    }
  },
  "additionalProperties": false
}
matrix_transpose output schema
{
  "type": "object",
  "required": [
    "original_rows",
    "original_cols",
    "result_matrix",
    "difficulty",
    "topic"
  ],
  "properties": {
    "topic": {
      "type": "string"
    },
    "difficulty": {
      "type": "string"
    },
    "original_cols": {
      "type": "integer"
    },
    "original_rows": {
      "type": "integer"
    },
    "result_matrix": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      }
    }
  },
  "description": "Result of matrix transpose operation."
}
matrix_transpose annotations
{
  "title": "Matrix Transpose",
  "readOnlyHint": true,
  "idempotentHint": true
}
matrix_determinant — Matrix Determinant
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculate the determinant of a square matrix.

matrix_determinant input schema
{
  "type": "object",
  "required": [
    "matrix"
  ],
  "properties": {
    "matrix": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      "maxItems": 10000,
      "description": "2D list of numbers representing a square matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]"
    }
  },
  "additionalProperties": false
}
matrix_determinant output schema
{
  "type": "object",
  "required": [
    "size",
    "determinant",
    "difficulty",
    "topic"
  ],
  "properties": {
    "size": {
      "type": "integer"
    },
    "topic": {
      "type": "string"
    },
    "difficulty": {
      "type": "string"
    },
    "determinant": {
      "type": "number"
    }
  },
  "description": "Result of matrix determinant calculation."
}
matrix_determinant annotations
{
  "title": "Matrix Determinant",
  "readOnlyHint": true,
  "idempotentHint": true
}
matrix_inverse — Matrix Inverse
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculate the inverse of a square matrix.

matrix_inverse input schema
{
  "type": "object",
  "required": [
    "matrix"
  ],
  "properties": {
    "matrix": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      "maxItems": 10000,
      "description": "2D list of numbers representing a square matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]"
    }
  },
  "additionalProperties": false
}
matrix_inverse output schema
{
  "type": "object",
  "required": [
    "size",
    "success",
    "difficulty",
    "topic"
  ],
  "properties": {
    "size": {
      "type": "integer"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "topic": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "difficulty": {
      "type": "string"
    },
    "result_matrix": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "description": "Result of matrix inverse calculation."
}
matrix_inverse annotations
{
  "title": "Matrix Inverse",
  "readOnlyHint": true,
  "idempotentHint": true
}
matrix_eigenvalues — Matrix Eigenvalues
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculate the eigenvalues of a square matrix.

matrix_eigenvalues input schema
{
  "type": "object",
  "required": [
    "matrix"
  ],
  "properties": {
    "matrix": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      "maxItems": 10000,
      "description": "2D list of numbers representing a square matrix. Each inner list is a row. Example: [[4, 2], [1, 3]]"
    }
  },
  "additionalProperties": false
}
matrix_eigenvalues output schema
{
  "type": "object",
  "required": [
    "size",
    "success",
    "difficulty",
    "topic"
  ],
  "properties": {
    "size": {
      "type": "integer"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "topic": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "difficulty": {
      "type": "string"
    },
    "eigenvalues": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "eigenvectors": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "complex_values": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "complex_eigenvalues_warning": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "description": "Result of matrix eigenvalues calculation."
}
matrix_eigenvalues annotations
{
  "title": "Matrix Eigenvalues",
  "readOnlyHint": true,
  "idempotentHint": true
}
workspace_save — Save Calculation to Workspace
Advertised by the server during the last successful anonymous check.

Save calculation to persistent workspace (survives restarts).

workspace_save input schema
{
  "type": "object",
  "required": [
    "name",
    "expression",
    "result"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 50,
      "description": "Variable name for the saved calculation. Used to retrieve it later. Example: 'circle_area'"
    },
    "result": {
      "type": "number",
      "description": "Numeric result of evaluating the expression, e.g., 78.54"
    },
    "expression": {
      "type": "string",
      "maxLength": 500,
      "description": "The mathematical expression that was evaluated. Example: 'pi * r**2'"
    }
  },
  "additionalProperties": false
}
workspace_save output schema
{
  "type": "object",
  "required": [
    "name",
    "expression",
    "result",
    "success",
    "is_new",
    "total_variables",
    "difficulty",
    "topic"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "topic": {
      "type": "string"
    },
    "action": {
      "type": "string",
      "default": "save_calculation"
    },
    "is_new": {
      "type": "boolean"
    },
    "result": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "difficulty": {
      "type": "string"
    },
    "expression": {
      "type": "string"
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "total_variables": {
      "type": "integer"
    }
  },
  "description": "Result of saving a calculation to the workspace."
}
workspace_save annotations
{
  "title": "Save Calculation to Workspace",
  "readOnlyHint": false,
  "idempotentHint": false
}
workspace_load — Load Variable
Advertised by the server during the last successful anonymous check.
Advertised read-only

Load previously saved calculation result from workspace.

workspace_load input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the variable to load from workspace, e.g., 'circle_area'"
    }
  },
  "additionalProperties": false
}
workspace_load output schema
{
  "type": "object",
  "required": [
    "success",
    "name",
    "action"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "topic": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "action": {
      "type": "string"
    },
    "result": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "success": {
      "type": "boolean"
    },
    "timestamp": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "difficulty": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "expression": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "session_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "available_variables": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "description": "Result of loading a variable from the workspace."
}
workspace_load annotations
{
  "title": "Load Variable",
  "readOnlyHint": true,
  "idempotentHint": true
}
plot_function — Function Plotter
Advertised by the server during the last successful anonymous check.
Advertised read-only

Generate mathematical function plots (requires matplotlib).

plot_function input schema
{
  "type": "object",
  "required": [
    "expression",
    "x_range"
  ],
  "properties": {
    "x_range": {
      "type": "array",
      "maxItems": 2,
      "minItems": 2,
      "description": "X-axis range as (min, max), e.g., (-5.0, 5.0)",
      "prefixItems": [
        {
          "type": "number"
        },
        {
          "type": "number"
        }
      ]
    },
    "expression": {
      "type": "string",
      "maxLength": 500,
      "description": "Mathematical expression to plot, e.g., \"x**2\" or \"sin(x)\". Must be <= MAX_EXPRESSION_LENGTH characters. Example: \"x**2\""
    },
    "num_points": {
      "type": "integer",
      "default": 100,
      "maximum": 10000,
      "minimum": 2,
      "description": "Number of sample points to plot along x_range, e.g., 100"
    }
  },
  "additionalProperties": false
}
plot_function annotations
{
  "title": "Function Plotter",
  "readOnlyHint": true,
  "idempotentHint": true
}
plot_histogram — Statistical Histogram
Advertised by the server during the last successful anonymous check.
Advertised read-only

Create statistical histograms (requires matplotlib).

plot_histogram input schema
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "bins": {
      "type": "integer",
      "default": 20,
      "description": "Number of histogram bins, e.g., 20"
    },
    "data": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 10000,
      "description": "List of numeric values to bin, e.g., [1.0, 2.0, 2.5, 3.0]"
    },
    "title": {
      "type": "string",
      "default": "Data Distribution",
      "maxLength": 100,
      "description": "Chart title string, e.g., 'Data Distribution'"
    }
  },
  "additionalProperties": false
}
plot_histogram annotations
{
  "title": "Statistical Histogram",
  "readOnlyHint": true,
  "idempotentHint": true
}
plot_line_chart — Line Chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Create a line chart from data points (requires matplotlib).

plot_line_chart input schema
{
  "type": "object",
  "required": [
    "x_data",
    "y_data"
  ],
  "properties": {
    "color": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Line color (name or hex code, e.g., 'blue', '#2E86AB')"
    },
    "title": {
      "type": "string",
      "default": "Line Chart",
      "maxLength": 100,
      "description": "Chart title string, e.g., 'Squares'"
    },
    "x_data": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 10000,
      "description": "X-axis data points, e.g., [1, 2, 3, 4]"
    },
    "y_data": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 10000,
      "description": "Y-axis data points, e.g., [1, 4, 9, 16]"
    },
    "x_label": {
      "type": "string",
      "default": "X",
      "maxLength": 100,
      "description": "X-axis label, e.g., 'Time'"
    },
    "y_label": {
      "type": "string",
      "default": "Y",
      "maxLength": 100,
      "description": "Y-axis label, e.g., 'Distance'"
    },
    "show_grid": {
      "type": "boolean",
      "default": true,
      "description": "Whether to display grid lines"
    }
  },
  "additionalProperties": false
}
plot_line_chart annotations
{
  "title": "Line Chart",
  "readOnlyHint": true,
  "idempotentHint": true
}
plot_scatter — Scatter Plot
Advertised by the server during the last successful anonymous check.
Advertised read-only

Create a scatter plot from data points (requires matplotlib).

plot_scatter input schema
{
  "type": "object",
  "required": [
    "x_data",
    "y_data"
  ],
  "properties": {
    "color": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Point color (name or hex code, e.g., 'blue', '#2E86AB')"
    },
    "title": {
      "type": "string",
      "default": "Scatter Plot",
      "maxLength": 100,
      "description": "Chart title string, e.g., 'Correlation Study'"
    },
    "x_data": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 10000,
      "description": "X-axis data points, e.g., [1, 2, 3, 4]"
    },
    "y_data": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 10000,
      "description": "Y-axis data points, e.g., [1, 4, 9, 16]"
    },
    "x_label": {
      "type": "string",
      "default": "X",
      "maxLength": 100,
      "description": "X-axis label, e.g., 'Variable X'"
    },
    "y_label": {
      "type": "string",
      "default": "Y",
      "maxLength": 100,
      "description": "Y-axis label, e.g., 'Variable Y'"
    },
    "point_size": {
      "type": "integer",
      "default": 50,
      "description": "Scatter point size in points^2, e.g., 50"
    }
  },
  "additionalProperties": false
}
plot_scatter annotations
{
  "title": "Scatter Plot",
  "readOnlyHint": true,
  "idempotentHint": true
}
plot_box_plot — Box Plot
Advertised by the server during the last successful anonymous check.
Advertised read-only

Create a box plot for comparing distributions (requires matplotlib).

plot_box_plot input schema
{
  "type": "object",
  "required": [
    "data_groups"
  ],
  "properties": {
    "color": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Box color (name or hex code, e.g., 'blue', '#2E86AB')"
    },
    "title": {
      "type": "string",
      "default": "Box Plot",
      "maxLength": 100,
      "description": "Chart title string, e.g., 'Distribution Comparison'"
    },
    "y_label": {
      "type": "string",
      "default": "Values",
      "maxLength": 100,
      "description": "Y-axis label, e.g., 'Values'"
    },
    "data_groups": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      "maxItems": 100,
      "description": "List of data groups to compare, e.g., [[1, 2, 3], [4, 5, 6]]"
    },
    "group_labels": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 100
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Labels for each group, e.g., ['Group A', 'Group B']"
    }
  },
  "additionalProperties": false
}
plot_box_plot annotations
{
  "title": "Box Plot",
  "readOnlyHint": true,
  "idempotentHint": true
}
plot_financial_line — Financial Line Chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Generate and plot synthetic financial price data (requires matplotlib). Creates realistic price movement patterns for educational purposes. Does not use real market data.

plot_financial_line input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 1000,
      "minimum": 2,
      "description": "Number of days to generate, e.g., 30"
    },
    "color": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Line color (name or hex code, e.g., 'blue', '#2E86AB')"
    },
    "trend": {
      "type": "string",
      "default": "bullish",
      "examples": [
        "bullish",
        "bearish",
        "volatile"
      ],
      "description": "Market trend direction"
    },
    "start_price": {
      "type": "number",
      "default": 100,
      "description": "Starting price value, e.g., 100.0"
    }
  },
  "additionalProperties": false
}
plot_financial_line annotations
{
  "title": "Financial Line Chart",
  "readOnlyHint": true,
  "idempotentHint": true
}

Prompts

2 advertised

math_tutor — Math Tutor

Advertised by the server during the last successful anonymous check.

Generate a structured math tutoring prompt for a mathematical concept at a chosen difficulty level, optionally including step-by-step worked examples.

topic
Mathematical topic to explain (e.g., "derivatives", "statistics") (required)
level
Difficulty level (beginner, intermediate, advanced)
include_examples
Whether to include worked examples Provide a value matching the following JSON schema: {"type":"boolean"}. Encode non-string values as JSON.
formula_explainer — Formula Explainer

Advertised by the server during the last successful anonymous check.

Generate a comprehensive prompt for explaining a mathematical formula: variable definitions, contextual background, step-by-step breakdown, example calculation, real-world applications, and common mistakes.

formula
The mathematical formula to explain (e.g., "A = πr²") (required)
context
The mathematical context (e.g., "geometry", "calculus", "statistics")

Resources

5 advertised

list_available_functions

Advertised by the server during the last successful anonymous check.

List all available mathematical functions with examples and syntax help.

list_available_functions URI
math://functions

MIME type: text/plain

get_calculation_history

Advertised by the server during the last successful anonymous check.

Get the history of calculations performed across sessions.

get_calculation_history URI
math://history

MIME type: text/plain

get_workspace

Advertised by the server during the last successful anonymous check.

Get persistent calculation workspace showing all saved variables. This resource displays the complete state of the persistent workspace, including all saved calculations, metadata, and statistics. The workspace survives server restarts and is accessible across different transport modes.

get_workspace URI
math://workspace

MIME type: text/plain

get_workspace annotations
{}
list_tools_catalog

Advertised by the server during the last successful anonymous check.

Catalog of all available tools with category, description, and example.

list_tools_catalog URI
math://catalog/tools

MIME type: text/plain

list_variable_names

Advertised by the server during the last successful anonymous check.

List all variable names saved in the workspace (lightweight alternative to math://workspace).

list_variable_names URI
math://variables

MIME type: text/plain

get_math_constant

Advertised by the server during the last successful anonymous check.

Get mathematical constants like pi, e, golden ratio, etc.

get_math_constant URI template
math://constants/{constant}

MIME type: text/plain

get_math_constant annotations
{}

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
2397 ms
95th percentile latency
2397 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 2397 ms · metadata changed · 17 tool(s), 5 resource(s), 1 resource template(s), 2 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http math-mcp-learning https://math-mcp.fastmcp.app/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add math-mcp-learning --url https://math-mcp.fastmcp.app/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable math-mcp-learning in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "math-mcp-learning": {
      "url": "https://math-mcp.fastmcp.app/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "math-mcp-learning": {
      "type": "streamableHttp",
      "url": "https://math-mcp.fastmcp.app/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start math-mcp-learning and inspect its tools.
VS Code configuration
{
  "servers": {
    "math-mcp-learning": {
      "type": "http",
      "url": "https://math-mcp.fastmcp.app/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http math-mcp-learning https://math-mcp.fastmcp.app/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://math-mcp.fastmcp.app/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "math-mcp-learning": {
      "serverUrl": "https://math-mcp.fastmcp.app/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Math MCP Learning from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.