Skip to main content
Glama

mcp-sympy

MCP server that exposes SymPy's symbolic mathematics functionality

PyPI Python Coverage Ruff

Install

pip install mcp-sympy

Related MCP server: Symath-MCP

MCP Server

mcp-name: io.github.daedalus/mcp-sympy

Usage

As MCP Server

Configure in your MCP client:

{
  "mcpServers": {
    "mcp-sympy": {
      "command": "mcp-sympy",
      "env": {}
    }
  }
}

Python API

from mcp_sympy import tools

# Simplify expressions
result = tools.sympy_simplify("sin(x)**2 + cos(x)**2")
print(result)  # "1"

# Solve equations
result = tools.sympy_solve("x**2 - 4", "x")
print(result)  # "[2, -2]"

# Differentiate
result = tools.sympy_diff("x**2", "x")
print(result)  # "2*x"

# Integrate
result = tools.sympy_integrate("x**2", "x")
print(result)  # "x**3/3"

# Create matrices
result = tools.sympy_matrix("1,2; 3,4")
print(result)  # "Matrix([[1, 2], [3, 4]])"

# Number theory
result = tools.sympy_isprime("7")
print(result)  # "True"

Available Tools

The MCP server exposes comprehensive SymPy functionality including:

  • Symbolic Expressions: symbols, sympify, simplify, expand, factor

  • Calculus: diff, integrate, limit, series, Derivative, Integral

  • Solving: solve, solveset, nsolve, diophantine, dsolve

  • Matrices: Matrix operations, inverse, determinant, eigenvalues

  • Trigonometry: sin, cos, tan, and their inverses

  • Special Functions: gamma, zeta, erf, fibonacci, etc.

  • Number Theory: isprime, prime, gcd, lcm, totient

  • Sets: FiniteSet, Interval, Union, Intersection

  • Logic: And, Or, Not, Xor

  • Printing: LaTeX, MathML, Python code

Development

git clone https://github.com/daedalus/mcp-sympy.git
cd mcp-sympy
pip install -e ".[test]"

# run tests
pytest

# format
ruff format src/ tests/

# lint
ruff check src/ tests/

# type check
mypy src/

License

MIT License - see LICENSE file.

Available Tools

171 tools
sympy_absC

Absolute value.

Inputs: expr (required). Returns: result

sympy_acosC

Arc cosine.

Inputs: expr (required). Returns: result

sympy_AndC

Logical AND.

Inputs: args (required). Returns: result

sympy_apartB

Perform partial fraction decomposition.

Inputs: expr (required). Returns: result

sympy_argC

Argument of complex number.

Inputs: expr (required). Returns: result

sympy_argsC

Get arguments of expression.

Inputs: expr (required). Returns: result

sympy_asinC

Arc sine.

Inputs: expr (required). Returns: result

sympy_as_numer_denomD

As numerator and denominator.

Inputs: expr (required). Returns: result

sympy_as_real_imagD

As real and imaginary parts.

Inputs: expr (required). Returns: result

sympy_atanC

Arc tangent.

Inputs: expr (required). Returns: result

sympy_atomsB

Get atoms (atomic components) of expression.

Inputs: expr (required). Returns: result

sympy_binomialC

Binomial coefficient.

Inputs: n (required), k (required). Returns: result

sympy_cancelC

Cancel common factors in rational expression.

Inputs: expr (required). Returns: result

sympy_catalanC

Catalan number.

Inputs: n (required). Returns: result

sympy_cbrtC

Cube root.

Inputs: expr (required). Returns: result

sympy_ceilingC

Ceiling function.

Inputs: expr (required). Returns: result

sympy_checkodesolC

Check ODE solution.

Inputs: eq (required), sol (required). Returns: result

sympy_CircleC

Create a circle.

Inputs: center (required), radius (required). Returns: result

sympy_classify_odeC

Classify ODE.

Inputs: eq (required), func (required). Returns: result

sympy_coeffD

Get coefficient.

Inputs: expr (required), x (required), n. Returns: result

sympy_complementB

Compute complement of set1 in set2.

Inputs: set1 (required), set2 (required). Returns: result

sympy_complexesC

The set of complex numbers.

Inputs: no named parameters. Returns: result

sympy_conjugateC

Complex conjugate.

Inputs: expr (required). Returns: result

sympy_cosC

Cosine function.

Inputs: expr (required). Returns: result

sympy_coshC

Hyperbolic cosine.

Inputs: expr (required). Returns: result

sympy_count_opsC

Count operations.

Inputs: expr (required). Returns: result

sympy_degreeC

Degree of polynomial.

Inputs: expr (required), variable. Returns: result

sympy_derivativeA

Create a Derivative object (unevaluated).

Inputs: expr (required), variable (required), order. Returns: result

sympy_diagB

Create a diagonal matrix.

Inputs: elements (required). Returns: result

sympy_diffC

Differentiate an expression.

Inputs: expr (required), variable, order. Returns: result

sympy_diohypC

Solve a Diophantine equation.

Inputs: expr (required). Returns: result

sympy_dirichlet_etaD

Dirichlet eta function.

Inputs: s (required). Returns: result

sympy_divisorsC

Return divisors of n.

Inputs: n (required). Returns: result

sympy_divisor_sigmaD

Divisor function.

Inputs: k (required), n (required). Returns: result

sympy_dsolveC

Solve ordinary differential equation.

Inputs: eq (required), func (required). Returns: result

sympy_emptysetC

Empty set.

Inputs: no named parameters. Returns: result

sympy_eqC

Create equality.

Inputs: lhs (required), rhs (required). Returns: result

sympy_erfD

Error function.

Inputs: expr (required). Returns: result

sympy_evalfB

Evaluate expression to floating point.

Inputs: expr (required), n. Returns: result

sympy_evaluateC

Toggle evaluation globally.

Inputs: flag. Returns: result

sympy_expC

Exponential function.

Inputs: expr (required). Returns: result

sympy_expandC

Expand an expression.

Inputs: expr (required). Returns: result

sympy_expand_complexD

Expand complex.

Inputs: expr (required). Returns: result

sympy_expand_logB

Expand logarithmic expressions.

Inputs: expr (required). Returns: result

sympy_expand_trigC

Expand trigonometric expressions.

Inputs: expr (required). Returns: result

sympy_expr_typeC

Get type of expression.

Inputs: expr (required). Returns: result

sympy_eyeB

Create an identity matrix.

Inputs: n (required). Returns: result

sympy_factorC

Factor an expression.

Inputs: expr (required). Returns: result

sympy_factorialC

Factorial.

Inputs: n (required). Returns: result

sympy_factorintC

Integer factorization.

Inputs: n (required). Returns: result

sympy_fibonacciD

Fibonacci number.

Inputs: n (required). Returns: result

sympy_finite_setC

Create a finite set.

Inputs: elements (required). Returns: result

sympy_finitesetC

Create finite set (comma-separated).

Inputs: elements (required). Returns: result

sympy_floatC

Create Float.

Inputs: n (required). Returns: result

sympy_floorD

Floor function.

Inputs: expr (required). Returns: result

sympy_free_symbolsB

Get free symbols in expression.

Inputs: expr (required). Returns: result

sympy_fresnelcD

Fresnel C.

Inputs: expr (required). Returns: result

sympy_fresnelsD

Fresnel S.

Inputs: expr (required). Returns: result

sympy_funcB

Get head function of expression.

Inputs: expr (required). Returns: result

sympy_gammaC

Gamma function.

Inputs: expr (required). Returns: result

sympy_gcdB

Greatest common divisor.

Inputs: a (required), b (required). Returns: result

sympy_geC

Create greater than or equal.

Inputs: lhs (required), rhs (required). Returns: result

sympy_groebnerD

Groebner basis.

Inputs: exprs (required), variable. Returns: result

sympy_gtD

Create greater than.

Inputs: lhs (required), rhs (required). Returns: result

sympy_hornerD

Horner form.

Inputs: expr (required), variable. Returns: result

sympy_IdentityD

Identity matrix.

Inputs: n (required). Returns: result

sympy_imD

Imaginary part.

Inputs: expr (required). Returns: result

sympy_image_setD

Image set.

Inputs: expr (required), variable (required). Returns: result

sympy_ImpliesD

Logical implication.

Inputs: lhs (required), rhs (required). Returns: result

sympy_integerD

Create Integer.

Inputs: n (required). Returns: result

sympy_integersB

The set of integers.

Inputs: no named parameters. Returns: result

sympy_integralA

Create an Integral object (unevaluated).

Inputs: expr (required), variable (required). Returns: result

sympy_integrateC

Integrate an expression.

Inputs: expr (required), variable. Returns: result

sympy_intersectionC

Compute intersection of two sets.

Inputs: set1 (required), set2 (required). Returns: result

sympy_intervalD

Create an interval.

Inputs: start (required), end (required), left_open, right_open. Returns: result

sympy_isprimeB

Check if n is prime.

Inputs: n (required). Returns: result

sympy_is_squareB

Check if n is a perfect square.

Inputs: n (required). Returns: result

sympy_latexB

Convert expression to LaTeX.

Inputs: expr (required). Returns: result

sympy_lcmB

Least common multiple.

Inputs: a (required), b (required). Returns: result

sympy_leC

Create less than or equal.

Inputs: lhs (required), rhs (required). Returns: result

sympy_limitC

Compute a limit.

Inputs: expr (required), variable (required), point (required), direction. Returns: result

sympy_LineC

Create a line through two points.

Inputs: point1 (required), point2 (required). Returns: result

sympy_logC

Natural logarithm.

Inputs: expr (required). Returns: result

sympy_log_baseC

Logarithm with specified base.

Inputs: expr (required), base (required). Returns: result

sympy_ltC

Create less than.

Inputs: lhs (required), rhs (required). Returns: result

sympy_lucasC

Lucas number.

Inputs: n (required). Returns: result

sympy_matchC

Match expression to pattern.

Inputs: expr (required), pattern (required). Returns: result

sympy_mathmlB

Convert expression to MathML.

Inputs: expr (required). Returns: result

sympy_matrixB

Create a matrix from rows.

Inputs: rows (required). Returns: result

sympy_matrix_addC

Add two matrices.

Inputs: matrix1 (required), matrix2 (required). Returns: result

sympy_matrix_determinantC

Compute matrix determinant.

Inputs: matrix (required). Returns: result

sympy_matrix_eigenvalsC

Compute eigenvalues of a matrix.

Inputs: matrix (required). Returns: result

sympy_matrix_eigenvectsC

Compute eigenvectors of a matrix.

Inputs: matrix (required). Returns: result

sympy_matrix_inverseB

Compute matrix inverse.

Inputs: matrix (required). Returns: result

sympy_matrix_LUC

LU decomposition.

Inputs: matrix (required). Returns: result

sympy_matrix_multiplyB

Multiply two matrices.

Inputs: matrix1 (required), matrix2 (required). Returns: result

sympy_matrix_nullspaceD

Nullspace.

Inputs: matrix (required). Returns: result

sympy_matrix_rankC

Matrix rank.

Inputs: matrix (required). Returns: result

sympy_matrix_transposeC

Transpose a matrix.

Inputs: matrix (required). Returns: result

sympy_nC

Evaluate expression numerically.

Inputs: expr (required), n. Returns: result

sympy_NandC

Logical NAND.

Inputs: args (required). Returns: result

sympy_naturalsA

The set of natural numbers.

Inputs: no named parameters. Returns: result

sympy_naturals0A

The set of natural numbers (including 0).

Inputs: no named parameters. Returns: result

sympy_neB

Create inequality (not equal).

Inputs: lhs (required), rhs (required). Returns: result

sympy_nextprimeA

Return the next prime after n.

Inputs: n (required). Returns: result

sympy_NorC

Logical NOR.

Inputs: args (required). Returns: result

sympy_NotC

Logical NOT.

Inputs: expr (required). Returns: result

sympy_nsimplifyC

Numerical simplification.

Inputs: expr (required). Returns: result

sympy_nsolveB

Numerically solve an equation.

Inputs: equation (required), variables (required), guesses (required). Returns: result

sympy_onesB

Create a matrix of ones.

Inputs: rows (required), cols. Returns: result

sympy_OrC

Logical OR.

Inputs: args (required). Returns: result

sympy_perfect_powerC

Check if n is a perfect power.

Inputs: n (required). Returns: result

sympy_piecewiseA

Create piecewise function (format: "expr,condition; expr2,condition2").

Inputs: pairs (required). Returns: result

sympy_PointB

Create a 2D point.

Inputs: x (required), y (required). Returns: result

sympy_Point3DB

Create a 3D point.

Inputs: x (required), y (required), z (required). Returns: result

sympy_polyC

Create a polynomial.

Inputs: expr (required), variable. Returns: result

sympy_PolygonB

Create a polygon (comma-separated points).

Inputs: points (required). Returns: result

sympy_polylogD

Polylogarithm.

Inputs: s (required), z (required). Returns: result

sympy_powsimpC

Simplify powers in an expression.

Inputs: expr (required). Returns: result

sympy_prevprimeA

Return the previous prime before n.

Inputs: n (required). Returns: result

sympy_primeB

Return the n-th prime.

Inputs: n (required). Returns: result

sympy_primepiC

Prime counting function.

Inputs: n (required). Returns: result

sympy_productC

Compute a product.

Inputs: expr (required), variable (required), lower (required), upper (required). Returns: result

sympy_product_exprC

Compute an unevaluated product (Product object).

Inputs: expr (required), variable (required), bounds (required). Returns: result

sympy_product_setB

Product of sets (comma-separated).

Inputs: sets (required). Returns: result

sympy_python_codeC

Convert expression to Python code.

Inputs: expr (required). Returns: result

sympy_radsimpB

Simplify radicals.

Inputs: expr (required). Returns: result

sympy_randMatrixD

Random matrix.

Inputs: n (required). Returns: result

sympy_RangeD

Range.

Inputs: start (required), stop. Returns: result

sympy_rationalC

Create Rational.

Inputs: num (required), den (required). Returns: result

sympy_rationalizeC

Rationalize denominator.

Inputs: expr (required). Returns: result

sympy_ratsimpC

Simplify rational expressions.

Inputs: expr (required). Returns: result

sympy_reC

Real part.

Inputs: expr (required). Returns: result

sympy_realsB

The set of real numbers.

Inputs: no named parameters. Returns: result

sympy_replaceB

Replace in expression (format: "old,new").

Inputs: expr (required), old_new (required). Returns: result

sympy_repr_exprC

Get repr of expression.

Inputs: expr (required). Returns: result

sympy_rootC

N-th root.

Inputs: expr (required), n. Returns: result

sympy_rootsC

Find roots of polynomial.

Inputs: expr (required), variable. Returns: result

sympy_satisfiableB

Check if expression is satisfiable.

Inputs: expr (required). Returns: result

sympy_seriesC

Compute series expansion.

Inputs: expr (required), variable, point, order. Returns: result

sympy_simplifyC

Simplify an expression.

Inputs: expr (required). Returns: result

sympy_sinC

Sine function.

Inputs: expr (required). Returns: result

sympy_sinhC

Hyperbolic sine.

Inputs: expr (required). Returns: result

sympy_solveC

Solve an equation or system of equations.

Inputs: equation (required), variables. Returns: result

sympy_solvesetC

Solve an equation using solveset.

Inputs: equation (required), variable. Returns: result

sympy_sqrtC

Square root.

Inputs: expr (required). Returns: result

sympy_strB

Convert expression to string.

Inputs: expr (required). Returns: result

sympy_subsC

Substitute in expression.

Inputs: expr (required), old_new (required). Returns: result

sympy_sumC

Compute a sum.

Inputs: expr (required), variable (required), lower (required), upper (required). Returns: result

sympy_summationB

Compute an unevaluated sum (Sum object).

Inputs: expr (required), variable (required), bounds (required). Returns: result

sympy_symbolB

Create a single symbolic variable.

Inputs: name (required). Returns: result

sympy_symbolic_addC

Symbolic addition (comma-separated).

Inputs: terms (required). Returns: result

sympy_symbolic_mulC

Symbolic multiplication (comma-separated).

Inputs: factors (required). Returns: result

sympy_symbolic_powerD

Symbolic power.

Inputs: expr (required), n (required). Returns: result

sympy_symbolsC

Create symbolic variables.

Inputs: names (required). Returns: result

sympy_symbols_createC

Create multiple symbols.

Inputs: names (required). Returns: result

sympy_sympifyB

Convert a string to a SymPy expression.

Inputs: expr (required). Returns: result

sympy_tanC

Tangent function.

Inputs: expr (required). Returns: result

sympy_tanhC

Hyperbolic tangent.

Inputs: expr (required). Returns: result

sympy_togetherB

Combine terms into a single fraction.

Inputs: expr (required). Returns: result

sympy_totientC

Euler's totient function.

Inputs: n (required). Returns: result

sympy_TriangleC

Create a triangle.

Inputs: point1 (required), point2 (required), point3 (required). Returns: result

sympy_trigsimpB

Simplify trigonometric expressions.

Inputs: expr (required). Returns: result

sympy_unionB

Compute union of two sets.

Inputs: set1 (required), set2 (required). Returns: result

sympy_universalsetC

Universal set.

Inputs: no named parameters. Returns: result

sympy_WildC

Create Wild pattern.

Inputs: pattern (required). Returns: result

sympy_WildFunctionD

Create Wild function.

Inputs: name (required). Returns: result

sympy_XorB

Logical XOR.

Inputs: args (required). Returns: result

sympy_xreplaceC

Exact replacement without simplification.

Inputs: expr (required), mapping (required). Returns: result

sympy_zerosB

Create a zero matrix.

Inputs: rows (required), cols. Returns: result

sympy_zetaC

Riemann zeta function.

Inputs: s (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    C2.6/5.0

    Scored across 171 tools

    Disambiguation5/5

    Each tool targets a distinct SymPy operation, with clear distinctions between similar ones (e.g., solve vs solveset vs nsolve, integrate vs integral, expand vs expand_trig). No two tools appear to do the same thing.

    Naming Consistency5/5

    All tools follow the 'sympy_' prefix with lowercase and underscores. Verb-first names are common (factor, solve, integrate, simplify), and a few noun-only names (e.g., sympy_sin, sympy_matrix) are consistent in style. No mixed conventions like camelCase.

    Tool Count1/5

    With 171 tools, this significantly exceeds the practical scale for an MCP server. The massive surface area makes it unwieldy and hard to navigate, even if each tool is individually well-defined.

    Completeness5/5

    The tool surface is extremely comprehensive, covering calculus, algebra, linear algebra, number theory, sets, geometry, logic, and more. It includes both evaluated and unevaluated operations, plus supporting utilities like substitution and simplification.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A Python-based MCP server providing mathematical computation tools and plotting utilities for a wide range of math topics including calculus, matrix operations, statistics, and more.
      22
      13 PyPI
      5
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      High-precision mathematics server for MCP clients, providing exact integer arithmetic, symbolic derivatives, and numerical calculus via LaTeX-style input.
      6
      5 npm
      2
      MIT