io.github.justice8096/sagemath-mcp-server
MCP server wrapping SageMath's full computer algebra system — 10 symbolic-math tools for LLMs.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
@justice8096/sagemath-mcp-serverclaude mcp add sagemath-mcp-server -e 'SAGE_TIMEOUT=<SAGE_TIMEOUT>' -e 'SAGE_DOCKER_IMAGE=<SAGE_DOCKER_IMAGE>' -e 'TRANSPORT=<TRANSPORT>' -e 'PORT=<PORT>' -e 'API_KEY=<your api_key>' -- npx -y @justice8096/sagemath-mcp-server@1.0.1
{
"mcpServers": {
"sagemath-mcp-server": {
"command": "npx",
"args": [
"-y",
"@justice8096/sagemath-mcp-server@1.0.1"
],
"env": {
"SAGE_TIMEOUT": "<SAGE_TIMEOUT>",
"SAGE_DOCKER_IMAGE": "<SAGE_DOCKER_IMAGE>",
"TRANSPORT": "<TRANSPORT>",
"PORT": "<PORT>",
"API_KEY": "<your api_key>"
}
}
}
}
Environment variables
SAGE_TIMEOUTPer-call SageMath timeout in milliseconds. Default 30000.SAGE_DOCKER_IMAGEDocker image used when SageMath is not installed locally. Default sagemath/sagemath:latest.TRANSPORTTransport mode: 'stdio' (default) or 'http'.PORTHTTP port when TRANSPORT=http. Default 3000.API_KEYsecret If set, HTTP transport requires matching API_KEY header. Ignored for stdio.
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
SageMath MCP Server
A Model Context Protocol server that exposes SageMath — a 100+ package computer algebra system — to LLM clients such as Claude. Where most "math MCPs" wrap a single library (SymPy, mathjs), this one subprocess-wraps the entire SageMath stack so the model has access to genuine symbolic mathematics, not arithmetic.
Why
LLMs are bad at exact arithmetic, brittle with multi-step algebra, and unreliable when symbolic manipulation matters. The right pattern is to keep the conceptual reasoning in the model and delegate mechanical computation to a tool — the same trick a person with dyscalculia uses with a calculator. SageMath gives you the broadest tool surface for that delegation: factoring, integration, eigenvalues, number theory, LaTeX rendering, and plotting all behind one interface.
Tools
| Tool | Description |
|---|---|
sage_evaluate | Run an arbitrary SageMath expression. |
sage_solve_equation | Solve algebraic / transcendental equations symbolically. |
sage_differentiate | Compute derivatives (any order, any variable). |
sage_integrate | Indefinite and definite integrals. |
sage_simplify | Simplify expressions (default, full, trig, rational). |
sage_factor | Factor polynomials or integers. |
sage_matrix_ops | Determinant, inverse, eigenvalues, rank, RREF, transpose over QQ / RR / ZZ / CC. |
sage_plot | Plot an expression and return a base64 PNG. |
sage_latex_convert | Convert a SageMath expression to LaTeX. |
sage_number_theory | is_prime, next_prime, factor, euler_phi, gcd, lcm, prime_range, sigma, moebius. |
All tools follow the same schema pattern (see src/schemas/common.ts).
Installation
The server needs either a local SageMath install or Docker available on the host so it can spawn a SageMath process.
Option 1: npm + local SageMath
npm install -g @justice8096/sagemath-mcp-server
# requires `sage` on PATH — see https://doc.sagemath.org/html/en/installation/
sagemath-mcp
Option 2: Docker (no local SageMath required)
docker compose up
# uses the official sagemath/sagemath image; the server runs inside the container
Option 3: from source
git clone https://github.com/justice8096/sagemath-mcp-server.git
cd sagemath-mcp-server
npm install
npm run build
npm start
Configuring an MCP client
Claude Desktop / Claude Code (stdio transport)
Add to ~/.claude.json (or the equivalent Claude Desktop config):
{
"mcpServers": {
"sagemath": {
"command": "sagemath-mcp"
}
}
}
Remote / HTTP transport
TRANSPORT=http API_KEY=your-secret-key npm start
Then point an MCP HTTP client at http://<host>:3000/mcp with the matching API_KEY header.
Architecture
- TypeScript wrapper, runtime is Node.js ≥ 18.
- Subprocess wrapping — the wrapper code is CC0; SageMath remains GPL-3.0 and runs as a separate process, which is the canonical safe interaction model per the GNU GPL FAQ on aggregation. Embedding via FFI would propagate copyleft; subprocess execution does not.
- Dual transport — stdio (Claude Desktop, Claude Code, local MCP clients) and Streamable HTTP (remote deployment, optional
API_KEYenv var). - i18n — English, Spanish, French via
src/i18n.tsandlocales/. - Multi-format build —
build.tsemits Claude plugin, OpenAI function-calling, n8n node, MCP server descriptor, CLI tool, and YAML prompt-library outputs from the same source manifest.
Configuration
| Env var | Default | Purpose |
|---|---|---|
TRANSPORT | stdio | stdio or http. |
PORT | 3000 | HTTP port when TRANSPORT=http. |
API_KEY | (none) | If set, HTTP requests must include matching API_KEY header. |
SAGE_TIMEOUT | 30000 | Per-call SageMath timeout in milliseconds. |
SAGE_DOCKER_IMAGE | sagemath/sagemath:latest | Image used when SageMath isn't installed locally. |
Security
- All SageMath input is sanitized to strip shell metacharacters before subprocess execution; see
src/services/sage-executor.ts. - HTTP transport requires
API_KEYif set — there is no default credential. - See
SECURITY.mdandTHREAT_MODEL.mdfor the full posture. - Pre-commit audit suite under
audits/: SAST/DAST scan, supply-chain audit, CWE mapping, LLM-compliance report, contribution analysis.
License
This wrapper is released under CC0-1.0 (public domain). SageMath itself remains GPL-3.0; the subprocess execution model keeps the licenses independent. See SECURITY.md and the project's compliance analysis for the legal reasoning.
Status
v1.0.0 — public release. The wrapper layer is stable; the SageMath surface is feature-rich and stable upstream. File issues at https://github.com/justice8096/sagemath-mcp-server/issues.
Frequently asked questions
What is io.github.justice8096/sagemath-mcp-server?
MCP server wrapping SageMath's full computer algebra system — 10 symbolic-math tools for LLMs.
How do I install io.github.justice8096/sagemath-mcp-server?
It runs on your machine. In Claude Code: claude mcp add sagemath-mcp-server -e 'SAGE_TIMEOUT=<SAGE_TIMEOUT>' -e 'SAGE_DOCKER_IMAGE=<SAGE_DOCKER_IMAGE>' -e 'TRANSPORT=<TRANSPORT>' -e 'PORT=<PORT>' -e 'API_KEY=<your api_key>' -- npx -y @justice8096/sagemath-mcp-server@1.0.1. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.justice8096/sagemath-mcp-server need an API key?
Yes. It expects API_KEY, which you set in its configuration.
Is io.github.justice8096/sagemath-mcp-server open source?
Yes. Its code is on GitHub under the CC0-1.0 license.
Who maintains io.github.justice8096/sagemath-mcp-server?
It is published by justice8096. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.