Math MCP Learning
Educational MCP server with 17 math/stats tools, visualizations, and persistent workspace
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"math-mcp-learning-server": {
"command": "uvx",
"args": [
"math-mcp-learning-server"
]
}
}
}Paquetes ejecutables
0.12.5stdioPuntos de conexión remotos
https://math-mcp.fastmcp.app/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (17)
🟢calc_expression(expression)
Safely evaluate mathematical expressions with support for basic operations and math functions. Supported operations: +, -, *, /, **, () Supported functions: sin, cos, tan, log, sqrt, abs, pow Note: Use this tool to evaluate a single mathematical expression. To compute descriptive statistics over a list of numbers, use the statistics tool instead. Examples: - "2 + 3 * 4" → 14 - "sqrt(16)" → 4.0 - "sin(3.14159/2)" → 1.0
Esquema de entrada
{
"type": "object",
"properties": {
"expression": {
"description": "Mathematical expression to evaluate. Supports +, -, *, /, **, and math functions (sin, cos, sqrt, log, etc.). Example: '2 * sin(pi/4) + sqrt(16)'",
"maxLength": 500,
"type": "string"
}
},
"required": [
"expression"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"expression": {
"type": "string"
},
"result": {
"type": "number"
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"expression",
"result",
"difficulty",
"topic"
],
"description": "Result of a mathematical expression evaluation."
}🟢calc_statistics(numbers, operation)
Perform statistical calculations on a list of numbers. Available operations: mean, median, mode, std_dev, variance Note: Use this tool to compute descriptive statistics over a list of numbers. To evaluate a single mathematical expression, use the calculate tool instead. Examples: statistics([1.0, 2.5, 3.0, 4.5, 5.0], "mean") # Returns 3.2 statistics([1.0, 2.5, 3.0, 4.5, 5.0], "std_dev") # Returns ~1.58
Esquema de entrada
{
"type": "object",
"properties": {
"numbers": {
"description": "List of numbers to compute descriptive statistics on. Example: [1.0, 2.5, 3.0, 4.5, 5.0]",
"items": {
"type": "number"
},
"maxItems": 10000,
"type": "array"
},
"operation": {
"description": "Statistical operation to perform. Allowed values: mean, median, mode, std_dev, variance",
"examples": [
"mean",
"median",
"mode",
"std_dev",
"variance"
],
"type": "string"
}
},
"required": [
"numbers",
"operation"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"result": {
"type": "number"
},
"sample_size": {
"type": "integer"
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"operation",
"result",
"sample_size",
"difficulty",
"topic"
],
"description": "Result of statistical calculation."
}🟢calc_interest(principal, rate, time, compounds_per_year)
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 Examples: compound_interest(10000, 0.05, 5) # $10,000 at 5% for 5 years → $12,762.82 compound_interest(5000, 0.03, 10, 12) # $5,000 at 3% compounded monthly → $6,744.25
Esquema de entrada
{
"type": "object",
"properties": {
"principal": {
"description": "Initial investment amount in dollars (must be > 0), e.g. 1000.0",
"exclusiveMinimum": 0,
"type": "number"
},
"rate": {
"description": "Annual interest rate as decimal 0.0-1.0 (e.g. 0.05 = 5%). If entering a percentage, divide by 100 first.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"time": {
"description": "Investment time in years (must be > 0), e.g. 10.0",
"exclusiveMinimum": 0,
"type": "number"
},
"compounds_per_year": {
"default": 12,
"description": "Compounding frequency per year (must be > 0): 12=monthly, 365=daily",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"required": [
"principal",
"rate",
"time"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"principal": {
"type": "number"
},
"final_amount": {
"type": "number"
},
"total_interest": {
"type": "number"
},
"rate": {
"type": "number"
},
"time": {
"type": "number"
},
"compounds_per_year": {
"type": "integer"
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
},
"formula": {
"type": "string"
}
},
"required": [
"principal",
"final_amount",
"total_interest",
"rate",
"time",
"compounds_per_year",
"difficulty",
"topic",
"formula"
],
"description": "Result of compound interest calculation."
}🟢calc_units(value, from_unit, to_unit, unit_type)
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) Examples: convert_units(5, "km", "mi", "length") # 5 kilometers → 3.11 miles convert_units(150, "lb", "kg", "weight") # 150 pounds → 68.04 kilograms
Esquema de entrada
{
"type": "object",
"properties": {
"value": {
"description": "Numeric value to convert, e.g., 100.0",
"type": "number"
},
"from_unit": {
"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)",
"examples": [
"m",
"kg",
"c"
],
"type": "string"
},
"to_unit": {
"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)",
"examples": [
"ft",
"lb",
"f"
],
"type": "string"
},
"unit_type": {
"description": "Unit category: length, weight, or temperature",
"examples": [
"length",
"weight",
"temperature"
],
"type": "string"
}
},
"required": [
"value",
"from_unit",
"to_unit",
"unit_type"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"value": {
"type": "number"
},
"from_unit": {
"type": "string"
},
"to_unit": {
"type": "string"
},
"converted_value": {
"type": "number"
},
"unit_type": {
"type": "string"
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"value",
"from_unit",
"to_unit",
"converted_value",
"unit_type",
"difficulty",
"topic"
],
"description": "Result of unit conversion."
}🟢matrix_multiply(matrix_a, matrix_b)
Multiply two matrices (A × B). Note: Requires NumPy. Raises ValueError if NumPy is unavailable. Examples: matrix_multiply([[1, 2], [3, 4]], [[5, 6], [7, 8]]) matrix_multiply([[1, 2, 3]], [[1], [2], [3]])
Esquema de entrada
{
"type": "object",
"properties": {
"matrix_a": {
"description": "2D list of numbers representing the first matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]",
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"maxItems": 10000,
"type": "array"
},
"matrix_b": {
"description": "2D list of numbers representing the second matrix. Each inner list is a row. Example: [[5, 6], [7, 8]]",
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"maxItems": 10000,
"type": "array"
}
},
"required": [
"matrix_a",
"matrix_b"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"rows_a": {
"type": "integer"
},
"cols_a": {
"type": "integer"
},
"rows_b": {
"type": "integer"
},
"cols_b": {
"type": "integer"
},
"result_matrix": {
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"type": "array"
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"rows_a",
"cols_a",
"rows_b",
"cols_b",
"result_matrix",
"difficulty",
"topic"
],
"description": "Result of matrix multiplication operation."
}🟢matrix_transpose(matrix)
Transpose a matrix (swap rows and columns). Note: Requires NumPy. Raises ValueError if NumPy is unavailable. Examples: matrix_transpose([[1, 2, 3], [4, 5, 6]]) matrix_transpose([[1], [2], [3]])
Esquema de entrada
{
"type": "object",
"properties": {
"matrix": {
"description": "2D list of numbers representing the matrix. Each inner list is a row. Example: [[1, 2, 3], [4, 5, 6]]",
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"maxItems": 10000,
"type": "array"
}
},
"required": [
"matrix"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"original_rows": {
"type": "integer"
},
"original_cols": {
"type": "integer"
},
"result_matrix": {
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"type": "array"
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"original_rows",
"original_cols",
"result_matrix",
"difficulty",
"topic"
],
"description": "Result of matrix transpose operation."
}🟢matrix_determinant(matrix)
Calculate the determinant of a square matrix. Note: Requires NumPy. Raises ValueError if NumPy is unavailable. Examples: matrix_determinant([[1, 2], [3, 4]]) matrix_determinant([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) # Identity matrix
Esquema de entrada
{
"type": "object",
"properties": {
"matrix": {
"description": "2D list of numbers representing a square matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]",
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"maxItems": 10000,
"type": "array"
}
},
"required": [
"matrix"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"size": {
"type": "integer"
},
"determinant": {
"type": "number"
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"size",
"determinant",
"difficulty",
"topic"
],
"description": "Result of matrix determinant calculation."
}🟢matrix_inverse(matrix)
Calculate the inverse of a square matrix. Note: Requires NumPy. Raises ValueError if NumPy is unavailable. Examples: matrix_inverse([[1, 2], [3, 4]]) matrix_inverse([[2, 0], [0, 2]]) # Diagonal matrix
Esquema de entrada
{
"type": "object",
"properties": {
"matrix": {
"description": "2D list of numbers representing a square matrix. Each inner list is a row. Example: [[1, 2], [3, 4]]",
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"maxItems": 10000,
"type": "array"
}
},
"required": [
"matrix"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"size": {
"type": "integer"
},
"success": {
"type": "boolean"
},
"result_matrix": {
"anyOf": [
{
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"size",
"success",
"difficulty",
"topic"
],
"description": "Result of matrix inverse calculation."
}🟢matrix_eigenvalues(matrix)
Calculate the eigenvalues of a square matrix. Note: Requires NumPy. Raises ValueError if NumPy is unavailable. Examples: matrix_eigenvalues([[4, 2], [1, 3]]) matrix_eigenvalues([[3, 0, 0], [0, 5, 0], [0, 0, 7]]) # Diagonal matrix
Esquema de entrada
{
"type": "object",
"properties": {
"matrix": {
"description": "2D list of numbers representing a square matrix. Each inner list is a row. Example: [[4, 2], [1, 3]]",
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"maxItems": 10000,
"type": "array"
}
},
"required": [
"matrix"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"size": {
"type": "integer"
},
"success": {
"type": "boolean"
},
"eigenvalues": {
"anyOf": [
{
"items": {
"type": "number"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"eigenvectors": {
"anyOf": [
{
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"complex_eigenvalues_warning": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"complex_values": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
}
},
"required": [
"size",
"success",
"difficulty",
"topic"
],
"description": "Result of matrix eigenvalues calculation."
}🟡workspace_save(name, expression, result)
Save calculation to persistent workspace (survives restarts). Examples: save_calculation("portfolio_return", "10000 * 1.07^5", 14025.52) save_calculation("circle_area", "pi * 5^2", 78.54)
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"description": "Variable name for the saved calculation. Used to retrieve it later. Example: 'circle_area'",
"maxLength": 50,
"type": "string"
},
"expression": {
"description": "The mathematical expression that was evaluated. Example: 'pi * r**2'",
"maxLength": 500,
"type": "string"
},
"result": {
"description": "Numeric result of evaluating the expression, e.g., 78.54",
"type": "number"
}
},
"required": [
"name",
"expression",
"result"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"expression": {
"type": "string"
},
"result": {
"type": "number"
},
"success": {
"type": "boolean"
},
"is_new": {
"type": "boolean"
},
"total_variables": {
"type": "integer"
},
"difficulty": {
"type": "string"
},
"topic": {
"type": "string"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"action": {
"default": "save_calculation",
"type": "string"
}
},
"required": [
"name",
"expression",
"result",
"success",
"is_new",
"total_variables",
"difficulty",
"topic"
],
"description": "Result of saving a calculation to the workspace."
}🟢workspace_load(name)
Load previously saved calculation result from workspace. Examples: load_variable("portfolio_return") # Returns saved calculation load_variable("circle_area") # Access across sessions
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"description": "Name of the variable to load from workspace, e.g., 'circle_area'",
"type": "string"
}
},
"required": [
"name"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"name": {
"type": "string"
},
"action": {
"type": "string"
},
"result": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null
},
"expression": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"timestamp": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"available_variables": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"difficulty": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"topic": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"success",
"name",
"action"
],
"description": "Result of loading a variable from the workspace."
}🟢plot_function(expression, x_range, num_points)
Generate mathematical function plots (requires matplotlib). Examples: plot_function("x**2", (-5, 5)) plot_function("sin(x)", (-3.14, 3.14))
Esquema de entrada
{
"type": "object",
"properties": {
"expression": {
"description": "Mathematical expression to plot, e.g., \"x**2\" or \"sin(x)\". Must be <= MAX_EXPRESSION_LENGTH characters. Example: \"x**2\"",
"maxLength": 500,
"type": "string"
},
"x_range": {
"description": "X-axis range as (min, max), e.g., (-5.0, 5.0)",
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "number"
},
{
"type": "number"
}
],
"type": "array"
},
"num_points": {
"default": 100,
"description": "Number of sample points to plot along x_range, e.g., 100",
"maximum": 10000,
"minimum": 2,
"type": "integer"
}
},
"required": [
"expression",
"x_range"
],
"additionalProperties": false
}🟢plot_histogram(data, bins, title)
Create statistical histograms (requires matplotlib). Examples: plot_histogram([1.0, 2.0, 2.5, 3.0, 3.5, 4.0, 5.0]) plot_histogram([10, 20, 30, 40, 50], bins=5, title="Test Scores")
Esquema de entrada
{
"type": "object",
"properties": {
"data": {
"description": "List of numeric values to bin, e.g., [1.0, 2.0, 2.5, 3.0]",
"items": {
"type": "number"
},
"maxItems": 10000,
"type": "array"
},
"bins": {
"default": 20,
"description": "Number of histogram bins, e.g., 20",
"type": "integer"
},
"title": {
"default": "Data Distribution",
"description": "Chart title string, e.g., 'Data Distribution'",
"maxLength": 100,
"type": "string"
}
},
"required": [
"data"
],
"additionalProperties": false
}🟢plot_line_chart(x_data, y_data, title, x_label, y_label, ...)
Create a line chart from data points (requires matplotlib). Note: Use for general XY data. For time-series price data with optional moving average, use plot_financial_line instead. Examples: plot_line_chart([1, 2, 3, 4], [1, 4, 9, 16], title="Squares") plot_line_chart([0, 1, 2], [0, 1, 4], color='red', x_label='Time', y_label='Distance')
Esquema de entrada
{
"type": "object",
"properties": {
"x_data": {
"description": "X-axis data points, e.g., [1, 2, 3, 4]",
"items": {
"type": "number"
},
"maxItems": 10000,
"type": "array"
},
"y_data": {
"description": "Y-axis data points, e.g., [1, 4, 9, 16]",
"items": {
"type": "number"
},
"maxItems": 10000,
"type": "array"
},
"title": {
"default": "Line Chart",
"description": "Chart title string, e.g., 'Squares'",
"maxLength": 100,
"type": "string"
},
"x_label": {
"default": "X",
"description": "X-axis label, e.g., 'Time'",
"maxLength": 100,
"type": "string"
},
"y_label": {
"default": "Y",
"description": "Y-axis label, e.g., 'Distance'",
"maxLength": 100,
"type": "string"
},
"color": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Line color (name or hex code, e.g., 'blue', '#2E86AB')"
},
"show_grid": {
"default": true,
"description": "Whether to display grid lines",
"type": "boolean"
}
},
"required": [
"x_data",
"y_data"
],
"additionalProperties": false
}🟢plot_scatter(x_data, y_data, title, x_label, y_label, ...)
Create a scatter plot from data points (requires matplotlib). Examples: plot_scatter([1, 2, 3, 4], [1, 4, 9, 16], title="Correlation Study") plot_scatter([1, 2, 3], [2, 4, 5], color='purple', point_size=100)
Esquema de entrada
{
"type": "object",
"properties": {
"x_data": {
"description": "X-axis data points, e.g., [1, 2, 3, 4]",
"items": {
"type": "number"
},
"maxItems": 10000,
"type": "array"
},
"y_data": {
"description": "Y-axis data points, e.g., [1, 4, 9, 16]",
"items": {
"type": "number"
},
"maxItems": 10000,
"type": "array"
},
"title": {
"default": "Scatter Plot",
"description": "Chart title string, e.g., 'Correlation Study'",
"maxLength": 100,
"type": "string"
},
"x_label": {
"default": "X",
"description": "X-axis label, e.g., 'Variable X'",
"maxLength": 100,
"type": "string"
},
"y_label": {
"default": "Y",
"description": "Y-axis label, e.g., 'Variable Y'",
"maxLength": 100,
"type": "string"
},
"color": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Point color (name or hex code, e.g., 'blue', '#2E86AB')"
},
"point_size": {
"default": 50,
"description": "Scatter point size in points^2, e.g., 50",
"type": "integer"
}
},
"required": [
"x_data",
"y_data"
],
"additionalProperties": false
}🟢plot_box_plot(data_groups, group_labels, title, y_label, color)
Create a box plot for comparing distributions (requires matplotlib). Examples: plot_box_plot([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], group_labels=["A", "B"]) plot_box_plot([[10, 20, 30], [15, 25, 35], [5, 15, 25]], title="Comparison")
Esquema de entrada
{
"type": "object",
"properties": {
"data_groups": {
"description": "List of data groups to compare, e.g., [[1, 2, 3], [4, 5, 6]]",
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"maxItems": 100,
"type": "array"
},
"group_labels": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 100,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Labels for each group, e.g., ['Group A', 'Group B']"
},
"title": {
"default": "Box Plot",
"description": "Chart title string, e.g., 'Distribution Comparison'",
"maxLength": 100,
"type": "string"
},
"y_label": {
"default": "Values",
"description": "Y-axis label, e.g., 'Values'",
"maxLength": 100,
"type": "string"
},
"color": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Box color (name or hex code, e.g., 'blue', '#2E86AB')"
}
},
"required": [
"data_groups"
],
"additionalProperties": false
}🟢plot_financial_line(days, trend, start_price, color)
Generate and plot synthetic financial price data (requires matplotlib). Creates realistic price movement patterns for educational purposes. Does not use real market data. Note: Use for time-series price data with optional moving average overlay. For general XY data, use plot_line_chart instead. Examples: plot_financial_line(days=60, trend='bullish') plot_financial_line(days=90, trend='volatile', start_price=150.0, color='orange')
Esquema de entrada
{
"type": "object",
"properties": {
"days": {
"default": 30,
"description": "Number of days to generate, e.g., 30",
"maximum": 1000,
"minimum": 2,
"type": "integer"
},
"trend": {
"default": "bullish",
"description": "Market trend direction",
"examples": [
"bullish",
"bearish",
"volatile"
],
"type": "string"
},
"start_price": {
"default": 100,
"description": "Starting price value, e.g., 100.0",
"type": "number"
},
"color": {
"anyOf": [
{
"maxLength": 100,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Line color (name or hex code, e.g., 'blue', '#2E86AB')"
}
},
"additionalProperties": false
}Comunidad
Evidencia