Skip to main content
Glama
PsyWhat

advanced-math-mcp

by PsyWhat

advanced-math-mcp

MCP (Model Context Protocol) server for advanced mathematics — linear algebra, vector math, symbolic computation, and calculus. Designed for use with Claude and other MCP-compatible LLMs.

Quick Start

npm install -g advanced-math-mcp

Then add to your MCP client configuration (e.g., mcp_settings.json):

{
  "mcpServers": {
    "advanced-math-mcp": {
      "command": "advanced-math-mcp",
      "args": [],
      "alwaysAllow": [
        "evaluate",
        "set_variable",
        "get_variable",
        "list_variables",
        "clear_variables",
        "matrix_create",
        "matrix_identity",
        "matrix_zeros",
        "matrix_diagonal",
        "symbolic_simplify",
        "symbolic_substitute",
        "symbolic_derivative",
        "symbolic_expand",
        "symbolic_integrate",
        "symbolic_definite_integral",
        "symbolic_limit",
        "symbolic_partial_derivative"
      ]
    }
  }
}

Related MCP server: Math MCP Server

Tools (17 total)

Unified Expression Evaluator

Tool

Description

evaluate

Universal expression evaluator with natural math syntax. Supports matrices, vectors, scalars, decompositions, and custom functions.

set_variable

Define a named variable (matrix, vector, or scalar) for use in evaluate

get_variable

Retrieve a variable's value

list_variables

List all defined variables and their types

clear_variables

Reset all variables

Matrix Creation

Tool

Description

matrix_create

Create a matrix from a 2D array of strings

matrix_identity

Create an n×n identity matrix

matrix_zeros

Create an m×n matrix of zeros

matrix_diagonal

Create a diagonal matrix from a vector of values

Symbolic Math

Tool

Description

symbolic_simplify

Simplify algebraic expressions

symbolic_expand

Expand factored expressions

symbolic_substitute

Substitute variables with values or expressions

symbolic_derivative

Compute ordinary derivatives (single-variable)

symbolic_partial_derivative

Compute partial derivatives (multivariable)

symbolic_integrate

Compute indefinite integrals (antiderivatives)

symbolic_definite_integral

Compute definite integrals with bounds

symbolic_limit

Compute limits of expressions

evaluate — The Universal Evaluator

All matrix/vector operations use a single evaluate tool with natural expression syntax:

Matrix Operations

// Arithmetic
evaluate("A + B")           // addition
evaluate("A - B")           // subtraction
evaluate("A * B")           // matrix multiplication
evaluate("A ^ 3")           // matrix power

// Properties
evaluate("det(A)")          // determinant
evaluate("trace(A)")        // trace
evaluate("rank(A)")         // rank
evaluate("inv(A)")          // inverse
evaluate("transpose(A)")    // transpose

// Decompositions
evaluate("eig(A)")          // eigenvalues & eigenvectors
evaluate("charpoly(A)")     // characteristic polynomial (2×2, 3×3)
evaluate("lu(A)")           // LU decomposition
evaluate("qr(A)")           // QR decomposition
evaluate("svd(A)")          // singular value decomposition

// Linear systems
evaluate("solve(A, b)")     // solve Ax = b

Vector Operations

evaluate("dot([1,2,3], [4,5,6])")       // dot product → 32
evaluate("cross([1,2,3], [4,5,6])")     // cross product → [-3, 6, -3]
evaluate("norm([3,4])")                  // L2 norm → 5
evaluate("norm([3,4], \"1\")")           // L1 norm → 7
evaluate("project([3,4], [1,0])")        // vector projection → [3, 0]

Inline Literals

evaluate("[[1,2],[3,4]] * [[5,6],[7,8]]")  // → [[19,22],[43,50]]
evaluate("det([[4,1],[2,3]])")              // → 10
evaluate("inv([[4,7],[2,6]])")             // → [[0.6,-0.7],[-0.2,0.4]]

Variable Workflow

set_variable("A", "[[1,2],[3,4]]")
set_variable("B", "[[5,6],[7,8]]")
evaluate("A * B")          // uses stored variables
list_variables()           // see all defined variables
clear_variables()          // reset

Symbolic Math

Simplification & Expansion

symbolic_simplify("x^2 + 2*x + 1 - (x+1)^2")  // → 0
symbolic_expand("(x+1)*(x-1)*(x+2)")           // → x^3 + 2x^2 - x - 2

Substitution

// Single variable
symbolic_substitute("x^2 + 2*x", { x: "3" })      // → 15

// Multi-variable
symbolic_substitute("x^2 + y*x + z", { x: "3", y: "2", z: "1" })  // → 16

Calculus

// Derivatives
symbolic_derivative("x^3 + 2*x^2", "x")              // → 3x^2 + 4x
symbolic_partial_derivative("x^2*y + sin(z)", "x", 2) // → 2y (second partial)

// Integration
symbolic_integrate("x^2 + sin(x)", "x")               // → 0.333x^3 - cos(x) + C
symbolic_definite_integral("x^2", "x", "0", "2")      // → 2.667 (∫₀² x² dx)

// Limits
symbolic_limit("sin(x)/x", "x", "0")                  // → 1

Architecture

src/
├── index.ts              # Entry point, loads nerdamer plugins
├── server.ts             # MCP server setup, tool routing
├── types.ts              # Shared types and Zod schemas
├── engine/
│   ├── evaluator.ts      # Unified expression evaluator (mathjs + custom functions)
│   ├── symbolic.ts        # Symbolic engine (nerdamer + mathjs)
│   ├── math-engine.ts     # Low-level matrix operations
│   └── format.ts          # Output formatting utilities
└── tools/
    ├── evaluate.ts        # evaluate + variable management tools
    ├── matrix-create.ts   # matrix_create, identity, zeros, diagonal
    ├── symbolic.ts        # symbolic_simplify, substitute, derivative, expand
    └── calculus.ts        # symbolic_integrate, definite_integral, limit, partial_derivative

Dependencies

Package

Purpose

@modelcontextprotocol/sdk

MCP protocol implementation

mathjs v13

Numeric matrix operations, expression parsing

nerdamer

Symbolic algebra, calculus (integrals, limits)

zod

Runtime input validation

Custom Functions in evaluate

The evaluator extends mathjs with these custom functions:

Function

Implementation

rank(A)

Via eigenvalue count of AᵀA

solve(A, b)

Wraps math.lusolve()

eig(A) / eigs(A)

Wraps math.eigs() with formatted output

svd(A)

Via eigenvalue decomposition of AᵀA

charpoly(A)

Formula-based for 2×2 and 3×3

lu(A)

Alias for math.lup()

qr(A)

Alias for math.qr()

project(u, v)

Vector projection formula

norm(v, type)

L1, L2 (default), L∞

Development

git clone https://github.com/PsyWhat/advanced-math-mcp.git
cd advanced-math-mcp
npm install
npm run build        # compile TypeScript
npm run dev          # watch mode
npm link             # install globally for local testing

Testing

npm test             # run all tests (vitest)
npm run test:watch   # watch mode
npm run typecheck    # TypeScript validation only

Suite

Tests

Coverage

evaluator.test.ts

36

Matrix ops, vector ops, decompositions, eigenvalues, variable scope, error handling

symbolic.test.ts

15

Simplify, expand, substitute, ordinary derivatives

calculus.test.ts

17

Indefinite/definite integrals, limits, partial derivatives

All 68 tests pass.

Known Limitations

  • SVD: The rank-deficient SVD gives zero vectors for nullspace columns (computed via AᵀA eigen-decomposition, not full Golub-Reinsch)

  • Cholesky: Not available in mathjs v13; use lu() for general decomposition

  • norm(v, inf): Must use quoted "inf" (not bare inf) due to mathjs parsing

  • charpoly: Numeric only, supports 2×2 and 3×3 matrices

  • symbolic_limit: Some advanced limits (e.g., (1+1/x)^x as x→∞) may not fully resolve

License

MIT

Available Tools

8 tools
get_variableA

Get value of a stored variable. Example: get_variable({ name: 'A' }) sid — required session ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
sidYesSession ID (4-10 chars). Required — use set_variable or evaluate to create a session first.
nameYesVariable name

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries the full burden. It states it 'gets' a value, implying a read operation, but does not mention any side effects, state changes, or error conditions (e.g., variable not found).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one line plus example), but it repeats 'sid — required session ID' which is already in the schema. Could be more efficient by omitting redundancy, but not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter tool with 2 parameters and full schema coverage, the description is adequate but minimal. It does not explain what happens if the variable doesn't exist or the session is invalid, which would be helpful for agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description adds an example of usage but does not add semantic meaning beyond what the schema provides (e.g., format of 'name' or constraints). Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get value of a stored variable', which is a specific verb-resource pair. It distinguishes from siblings like list_variables (list all) and symbolic tools by focusing on retrieval of a single variable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when or when-not to use. The example and mention of 'required session ID' imply context, but no guidance on alternative tools like list_variables for enumerating variables.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_variablesA

List all defined variables with types/sizes in a session. sid — required session ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
sidYesSession ID (4-10 chars). Required — use set_variable or evaluate to create a session first.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only notes that variables are listed in a session. It does not disclose read-only nature, authentication needs, or any side effects beyond listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the purpose, the second lists the parameter. It is front-loaded and concise with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (one parameter, no output schema), the description covers the basic functionality. However, it lacks details on the return format or pagination, which would be helpful for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes the 'sid' parameter with constraints and usage hints (session ID, 4-10 chars). The description merely restates it, adding no new meaning beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the verb 'List' and the resource 'all defined variables with types/sizes in a session'. It clearly distinguishes from sibling tool 'get_variable' which retrieves a single variable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the required 'sid' parameter and implies the tool is for listing variables in an existing session, but does not explicitly state when not to use it or contrast with alternatives like 'get_variable'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

matrix_identityA

Create n×n identity matrix. Example: n: 3

ParametersJSON Schema
NameRequiredDescriptionDefault
nYesSize n

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states creation without any behavioral context (e.g., side effects, authentication, return format). Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no unnecessary words. Essential information is front-loaded and easily scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 1-parameter tool with no output schema, the description is adequate but lacks mention of return type or matrix properties. Could be more complete with minimal extra detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with 'Size n' clearly explaining the single parameter. The description adds an example that clarifies usage, providing additional value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Create' and specific resource 'n×n identity matrix', with a concrete example. It distinguishes from sibling tools which are symbolic operations, not matrix creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings or alternatives. Although siblings are different, there is no explicit context for when matrix creation is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

symbolic_definite_integralA

Definite integral ∫[lower,upper] f(x)dx. Returns antiderivative + numeric/symbolic result. Example: expression: "x^2", variable: "x", lower: "0", upper: "2"

ParametersJSON Schema
NameRequiredDescriptionDefault
lowerYesLower bound: '0', '-inf'
upperYesUpper bound: '2', 'inf'
variableYesIntegration variable
expressionYesExpression, e.g. 'x^2'

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool returns both antiderivative and numeric/symbolic result, which is informative. It does not detail edge cases like improper integrals or convergence, but the core behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: one sentence plus an example. No wasted words, well-structured, and front-loaded with the core definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (4 string parameters, no output schema), the description is adequately complete. It explains what the tool does, what it returns, and includes a representative example. No major gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% but parameter descriptions are minimal (e.g., 'Lower bound: '0', '-inf''). The description adds meaning via a concrete example showing how parameters combine, making the integration context clear beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it computes the definite integral ∫[lower,upper] f(x)dx, returns antiderivative and numeric/symbolic result, and provides an explicit example. It distinguishes from sibling tools like 'symbolic_integrate' (likely indefinite) by focusing on bounds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear example of usage but does not specify when to avoid this tool or explicitly name alternatives. However, the sibling list implies its niche for definite integrals, and the example serves as a sufficient guide for intended use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

symbolic_expandB

Expand factored expression. Example: expression: "(x+1)*(x-1)" → x^2 - 1

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesExpression, e.g. '(x+1)*(x-1)'

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the action and gives an example, but does not disclose error handling (e.g., non-factorable inputs), scope limitations, or whether it modifies any state. The behavior is unclear for edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no superfluous words. The first sentence states the purpose, and the second provides an illustrative example. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of output schema and annotations, the description is insufficient for safe usage. It does not explain what the tool returns, how it handles invalid expressions, or whether it side-effects. For a tool with one parameter and simple function, more detail is expected to ensure correct invocation in all cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter 'expression' already described as 'Expression, e.g. '(x+1)*(x-1)''. The description adds the same example, providing no additional semantic information beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Expand factored expression' and provides a concrete example. The verb 'expand' and resource 'factored expression' are specific and distinguish it from sibling tools like symbolic_integrate or symbolic_limit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as symbolic_integrate or symbolic_partial_derivative. There is no mention of prerequisites, constraints, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

symbolic_integrateB

Indefinite integral ∫f(x)dx. Example: expression: "x^2 + sin(x)", variable: "x"

ParametersJSON Schema
NameRequiredDescriptionDefault
variableYesIntegration variable
expressionYesExpression, e.g. 'x^2 + sin(x)'

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only states 'indefinite integral' but does not mention any limitations, assumptions about input, error conditions, or side effects. The agent has no insight into potential restrictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using two sentences to convey the core purpose and an example. It is front-loaded with the integral symbol. However, the example could be more structured or placed in a standardized format, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should cover the return value and behavior. It does not mention that the result is the integrated expression, nor does it address potential edge cases. Given the tool's simplicity, more completeness is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are documented in the input schema, so the baseline is 3. The description adds an example that illustrates parameter values ('x^2 + sin(x)', 'x') but does not provide additional semantic detail beyond what the schema already offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool computes an indefinite integral, using the mathematical notation ∫f(x)dx and providing a concrete example. It distinguishes itself from sibling tools like symbolic_definite_integral.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks guidance on when to use this tool versus alternatives. For example, it does not mention that this is for indefinite integrals only, nor does it exclude definite integrals, limits, or derivatives. No context for appropriate use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

symbolic_limitA

Limit lim[x→point] f(x). Supports L'Hôpital (0/0, ∞/∞). point: '0', 'inf', '+inf', '-inf'. Example: expression: "sin(x)/x", variable: "x", point: "0" → 1

ParametersJSON Schema
NameRequiredDescriptionDefault
pointYesLimit point: '0', 'inf', '+inf', '-inf'
variableYesVariable approaching limit
expressionYesExpression, e.g. 'sin(x)/x'

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It mentions L'Hôpital support for 0/0 and ∞/∞ forms, which is useful. However, it does not describe error handling, behavior for other indeterminate forms, or whether the returned value is a numeric or symbolic result. More details would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus an example. Every sentence contributes essential information (purpose, supported cases, parameter details, example). No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 3 parameters and no output schema. The description explains the calculation and provides an example output, but does not explicitly state the nature of the return value (numeric vs. expression) or what happens in edge cases (e.g., limit does not exist). For a simple tool, the description is functional but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter already has a description in the schema. The tool description adds a brief example and lists valid point values, but adds limited new semantic information beyond what the schema provides. The example helps illustrate usage, but the added value is marginal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it computes limits lim[x→point] f(x) and specifies supported forms like L'Hôpital. The name and example make the tool's purpose unambiguous, distinguishing it from sibling tools like integration or expansion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives (e.g., symbolic_integrate, symbolic_expand). The example and description imply usage for limit computation, but no exclusions or trade-offs are mentioned. Given the sibling list, the context is somewhat clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

symbolic_partial_derivativeA

Partial derivative ∂^n/∂var^n (multivariable). Treats other vars as constants. Example: expression: "x^2y + sin(z)", variable: "x", order: 2 → 2y

ParametersJSON Schema
NameRequiredDescriptionDefault
orderNoDerivative order (1=first, 2=second, etc.)
variableYesVariable to differentiate w.r.t.
expressionYesMultivariable expression, e.g. 'x^2*y + sin(z)'

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description carries burden. It discloses the key behavior of treating other variables as constants, but does not specify output format, error handling, or domain limitations (e.g., symbolic only). Example helps but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence plus an example. No wasted words. Front-loaded with the core definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters, no output schema, and a list of sibling tools, the description is fairly complete. Could mention return type (symbolic expression) or limitations, but the example covers common usage. Minor gap for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all three parameters with 100% coverage. Description adds an example but no additional semantic meaning beyond what schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States it computes partial derivatives of multivariable expressions with respect to a specified variable, treating other variables as constants. Example makes concrete. Distinct from siblings like symbolic_integrate and symbolic_limit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for partial derivatives when other variables are held constant, but does not explicitly state when not to use or provide alternatives among siblings. Lacks guidance on order or complex expressions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 8 tool updatesv1.0.0
    • First observedget_variable
    • First observedlist_variables
    • First observedmatrix_identity
    • First observedsymbolic_definite_integral
    • First observedsymbolic_expand
    • First observedsymbolic_integrate
    • First observedsymbolic_limit
    • First observedsymbolic_partial_derivative

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct mathematical operation: matrix creation, variable access, symbolic expansion, integration (indefinite and definite), limits, and partial derivatives. No two tools have overlapping purposes.

Naming Consistency3/5

Naming conventions are mixed: some tools use verb_noun (get_variable, list_variables), some use noun-like (matrix_identity), and others use symbolic_ prefix with varying verb forms (symbolic_integrate vs symbolic_definite_integral). This inconsistency could cause confusion.

Tool Count5/5

With 8 tools, the server covers a reasonable scope of advanced math operations without being bloated. The count is well-suited for the domain.

Completeness2/5

The tool set is missing critical operations: there is no way to create or set variables (only get and list), no ordinary derivative, and no equation-solving or matrix manipulation beyond identity creation. These gaps would hinder many common tasks.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive mathematical capabilities including basic arithmetic, advanced functions, statistical tools, and access to mathematical constants. It allows users to perform computations and generate math-related prompts through a standardized MCP interface.
    MIT
  • F
    license
    C
    quality
    D
    maintenance
    Exposes a broad mathematics toolkit including symbolic algebra, calculus, numerical methods, linear algebra, statistics, discrete math, graph theory, rendering, and optional GPU acceleration via MCP tools for use with Claude Desktop and other MCP hosts.
    51
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides a comprehensive set of mathematical functions as MCP tools, enabling language models to perform calculations including arithmetic, trigonometry, logarithms, and more.
    23
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server that exposes 8 mathematical tools (arithmetic, algebra, calculus, matrix operations, statistics, probability, unit conversions) to any MCP-compatible AI agent, enabling mathematical computations without code.
    8
    28
    1
    MIT

Appeared in Searches

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/PsyWhat/advanced-math-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server