MCP Calculate Server
The MCP Calculate Server is a mathematical calculation service powered by the SymPy library that evaluates expression strings for symbolic and numerical computations.
Capabilities include:
Basic Operations: Addition, subtraction, multiplication, division, and exponentiation
Algebraic Manipulation: Expand, factor, and simplify expressions
Calculus: Differentiate, integrate, and calculate limits
Equation Solving: Solve single equations and systems of equations
Matrix Operations: Inversion, eigenvalue/eigenvector calculation
Series Expansion: Taylor series computations
Special Functions: Evaluate trigonometric, logarithmic, and exponential functions
Symbolic Variables: Handle variables (x, y, z) and constants (pi, E, oo)
Utilized as the server framework to expose SymPy's mathematical computation capabilities through an API accessible via the MCP protocol.
Offers matrix operations including inversion and eigenvalue/eigenvector calculations through SymPy's Matrix implementation.
Provides access to SymPy's symbolic computation capabilities including basic operations, algebraic manipulations, calculus, equation solving, matrix operations, series expansion, and special functions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Calculate Serversolve x^2 - 5x + 6 = 0"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Calculate Server
A mathematical calculation service based on MCP protocol and SymPy library, providing powerful symbolic computation capabilities.
Security
As of version 0.1.1, the server parses expressions through a restricted SymPy-only evaluator. It does not execute arbitrary Python code, and only a curated set of mathematical symbols, functions, and matrix methods are supported.
This release also adds validation for oversized expressions and large results to reduce denial-of-service risk from expensive symbolic computations.
Related MCP server: mcp-sympy
Key Features
Basic Operations: Addition, subtraction, multiplication, division, exponentiation
Algebraic Operations: Expression expansion, factorization, simplification
Calculus: Differentiation, integration (definite/indefinite), limit calculation
Equation Solving: Algebraic equations, systems of equations
Matrix Operations: Matrix inversion, eigenvalues/eigenvectors calculation
Series Expansion: Taylor series expansion
Special Functions: Trigonometric, logarithmic, exponential functions
Usage Examples
# Basic operations
"2 + 3*5" → 17
# Algebraic operations
"expand((x + 1)**2)" → x² + 2x + 1
"factor(x**2 - 2*x - 15)" → (x - 5)(x + 3)
# Calculus
"diff(sin(x), x)" → cos(x)
"integrate(exp(x), (x, 0, 1))" → E - 1
"integrate(exp(-x**2)*sin(x), (x, -oo, oo))" → 0
"limit(tan(x)/x, x, 0)" → 1
# Equation solving
"solve(x**2 - 4, x)" → [-2, 2]
"solve([x**2 + y**2 - 1, x + y - 1], [x, y])" → [(0, 1), (1, 0)]
# Matrix operations
"Matrix([[1, 2], [3, 4]]).inv()" → [[-2, 1], [3/2, -1/2]]
"Matrix([[1, 2, 3], [4, 5, 6]]).eigenvals()" → {9/2 - sqrt(33)/2: 1, 9/2 + sqrt(33)/2: 1}
"Sum(k, (k, 1, 10)).doit()" → 55
"series(cos(x), x, 0, 4)" → 1 - x²/2 + O(x⁴)Installation
Installing via Smithery
To install Calculate Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @611711Dark/mcp_sympy_calculate_server --client claudeLocal Installation
Clone repository:
git clone https://github.com/611711Dark/mcp_calculate_server.git cd mcp_calculate_serverCreate virtual environment and install dependencies:
uv venv source .venv/bin/activate uv pip install -e .Configuration:
"calculate_expression1": { "isActive": false, "command": "python", "args": [ "server.py" ], "cwd": "/path/to/mcp_calculate_server" }
API Usage
Call calculate_expression tool via MCP protocol by passing a mathematical expression string. The parser accepts a restricted set of SymPy expressions such as arithmetic, expand, factor, simplify, diff, integrate, limit, series, solve, Matrix(...).det()/inv()/eigenvals()/eigenvects(), and Sum(...).doit().
Supported Names
Symbols: lowercase variables such as
x,y,z, andkConstants:
pi,E,oo,IFunctions:
Abs,sin,cos,tan,log,exp,sqrt,expand,factor,simplify,diff,integrate,limit,series,solve,Sum,MatrixMatrix methods:
.det(),.inv(),.eigenvals(),.eigenvects()SymPy method:
.doit()on supported objects such asSum(...)
Validation Rules
Expressions that rely on arbitrary Python features, imports, filesystem access, or other non-mathematical constructs are intentionally rejected. Very large expansions, high-complexity solves, and oversized results may also be rejected to reduce denial-of-service risk. Keyword arguments, private attributes, unsupported matrix methods, malformed matrices, and unsupported names are rejected with an error message.
Dependencies
mcp>=1.5.0
sympy>=1.13.3
Acknowledgements
Thanks to this blog post for the introduction, and to Stefano for his help and responsible disclosure.
License
This project is licensed under MIT License. See LICENSE file.
Available Tools
1 toolcalculate_expressionA
calculate mathematical expressions using the sympify function from sympy, parse and compute the input mathematical expression string, supports direct calls to SymPy functions (automatically recognizes x, y, z as symbolic variables)
Parameters:
expression (str): Mathematical expression, e.g., "223 - 344 * 6" or "sin(pi/2) + log(10)".Replace special symbols with approximate values, e.g., pi → 3.1415"
Example expressions:
"2 + 3*5" # Basic arithmetic → 17
"expand((x + 1)2)" # Expand → x² + 2x + 1
"diff(sin(x), x)" # Derivative → cos(x)
"integrate(exp(x), (x, 0, 1))" # Definite integral → E - 1
"solve(x2 - 4, x)" # Solve equation → [-2, 2]
"limit(tan(x)/x, x, 0)" # Limit → 1
"Sum(k, (k, 1, 10)).doit()" # Summation → 55
"Matrix([[1, 2], [3, 4]]).inv()" # Matrix inverse → [[-2, 1], [3/2, -1/2]]
"simplify((x2 - 1)/(x + 1))" # Simplify → x - 1
"factor(x2 - 2*x - 15)" # Factorize → (x - 5)(x + 3)
"series(cos(x), x, 0, 4)" # Taylor series → 1 - x²/2 + x⁴/24 + O(x⁴)
"integrate(exp(-x*2)*sin(x), (x, -oo, oo))" # Complex integral
"solve([x**2 + y*2 - 1, x + y - 1], [x, y])" # Solve system of equations
"Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]).eigenvals()" # Matrix eigenvalues
Returns:
str: Calculation result. If the expression cannot be parsed or computed, returns an error message (str).
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it uses sympify from sympy, supports symbolic variables (x, y, z), handles special symbols (e.g., pi → 3.1415), and returns a string result or error message. It also lists many example behaviors (e.g., derivatives, integrals). However, it doesn't mention potential limitations like performance, complexity bounds, or specific error conditions beyond 'cannot be parsed or computed.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and parameter explanation, but it includes a lengthy list of 14 example expressions. While these examples are informative, they make the description verbose and could be trimmed or summarized. The structure is logical but not optimally concise, as some examples might be redundant for conveying the tool's capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mathematical computation with sympy), the description is highly complete. It explains the purpose, parameter semantics in detail, behavioral traits, and includes an output schema (returns str or error). With no annotations, it covers all necessary aspects: how to use it, what it does, and what to expect, making it sufficient for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must fully compensate. It adds rich semantics: it defines the 'expression' parameter as a 'Mathematical expression' with examples (e.g., '2 + 3*5'), explains special symbol handling (pi → 3.1415), and provides numerous detailed examples showing syntax and usage. This goes far beyond the basic schema, making the parameter's meaning and format clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'calculate mathematical expressions using the `sympify` function from `sympy`, parse and compute the input mathematical expression string.' It specifies the exact method (sympify from sympy) and scope (mathematical expressions), making it highly specific. With no sibling tools, differentiation isn't needed, but the description is precise about what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through extensive examples (e.g., 'Example expressions:') that show various mathematical operations, suggesting when to use it for different types of calculations. However, it lacks explicit guidance on when not to use it or alternatives, and there are no sibling tools to compare against. The examples serve as implicit guidance but aren't structured as explicit rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
With only one tool, there is no possibility of ambiguity or confusion between tools. The single tool 'calculate_expression' has a clearly defined purpose that cannot be mistaken for any other tool in this server.
The single tool name 'calculate_expression' follows a clear verb_noun pattern. With only one tool, naming consistency is inherently perfect as there are no other tools to compare against or create inconsistencies with.
A single tool server is generally too minimal for most practical purposes, even for a focused domain like mathematical calculation. While the tool is powerful, having only one tool feels thin and limiting for what appears to be a comprehensive mathematical computation server.
The single tool covers a wide range of mathematical operations through expression parsing, but there are notable gaps in the surface area. For a calculation server, one might expect separate tools for different mathematical domains (algebra, calculus, matrix operations) or at least tools for common specific operations beyond general expression evaluation.
Maintenance
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
This MCP server enables users to perform scientific computations regarding linear algebra and vect…
Math.js MCP — wraps the mathjs.org API (free, no auth)
Calculators accessible via MCP with real-time collaborative sessions and shareable URLs.
MCPCalc gives agents access to a comprehensive library of calculators spanning finance, math, health, construction, engineering, food, automotive, and more. It includes a full Computer Algebra System (CAS) and a grid-based Spreadsheet calculator.
Related MCP Servers
- AlicenseCqualityCmaintenanceA Mathematical Computation Protocol server providing 286 mathematical functions across multiple domains with flexible transport options (STDIO/HTTP) and streaming capabilities.1004Apache 2.0
- AlicenseCqualityCmaintenanceAn MCP server that provides access to SymPy's symbolic mathematics library for advanced algebraic computations. It enables users to perform complex tasks such as symbolic simplification, calculus, equation solving, matrix operations, and number theory.100MIT
- AlicenseAqualityDmaintenanceA symbolic mathematics MCP server supporting calculus, linear algebra, number theory, statistics, and unit conversion via natural language.8MIT
- AlicenseBqualityDmaintenanceA 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.225MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/611711Dark/mcp_calculate_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server