Math MCP Learning
Educational MCP server with 17 math/stats tools, visualizations, and persistent workspace
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"math-mcp-learning-server": {
"command": "uvx",
"args": [
"math-mcp-learning-server"
]
}
}
}実行可能なパッケージ
0.12.5stdioリモートエンドポイント
https://math-mcp.fastmcp.app/mcpstreamable-httpできること
ツール一覧
ツール(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
入力スキーマ
{
"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
}出力スキーマ
{
"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
入力スキーマ
{
"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
}出力スキーマ
{
"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
入力スキーマ
{
"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
}出力スキーマ
{
"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
入力スキーマ
{
"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
}出力スキーマ
{
"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]])
入力スキーマ
{
"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
}出力スキーマ
{
"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]])
入力スキーマ
{
"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
}出力スキーマ
{
"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
入力スキーマ
{
"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
}出力スキーマ
{
"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
入力スキーマ
{
"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
}出力スキーマ
{
"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
入力スキーマ
{
"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
}出力スキーマ
{
"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)
入力スキーマ
{
"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
}出力スキーマ
{
"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
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"description": "Name of the variable to load from workspace, e.g., 'circle_area'",
"type": "string"
}
},
"required": [
"name"
],
"additionalProperties": false
}出力スキーマ
{
"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))
入力スキーマ
{
"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")
入力スキーマ
{
"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')
入力スキーマ
{
"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)
入力スキーマ
{
"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")
入力スキーマ
{
"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')
入力スキーマ
{
"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
}コミュニティ
エビデンス