Skip to main content

Full GUI control of Mathematica notebooks and kernel via Model Context Protocol

Project description

Mathematica MCP

Give your AI Agent the power of Wolfram Language.

License: MIT Python 3.10+ Mathematica 14+ CI Repo Published


Who This Is For

Audience Use Case
Researchers using LLM coding assistants Run Mathematica from Claude/Cursor/VS Code without leaving your editor
Data scientists Import, transform, and visualize data through natural language
Educators Create interactive Mathematica notebooks through AI conversation
Not for Production web services, untrusted multi-tenant environments

What is this?

An MCP Server that gives AI agents a direct interface to your local Wolfram Engine. ~79 tools across configurable profiles (varies by feature flags) for symbolic reasoning, visualization, and notebook control.

Watch it in action

Mathematica MCP Demo


Quick Start

Prerequisites

Before installing, you need:

  1. Mathematica 14.0+ with wolframscript in your PATH

    • Download Mathematica
    • macOS: Add to ~/.zshrc: export PATH="/Applications/Mathematica.app/Contents/MacOS:$PATH"
  2. uv package manager

    curl -LsSf https://astral.sh/uv/install.sh | sh
    

One-Command Setup (Recommended)

# For Claude Desktop
uvx mathematica-mcp-full setup claude-desktop

# For Cursor
uvx mathematica-mcp-full setup cursor

# For VS Code (requires GitHub Copilot Chat extension)
uvx mathematica-mcp-full setup vscode

# For OpenAI Codex CLI
uvx mathematica-mcp-full setup codex

# For Google Gemini CLI
uvx mathematica-mcp-full setup gemini

# For Claude Code CLI
uvx mathematica-mcp-full setup claude-code

# Optional: select a tool profile (default is "full")
uvx mathematica-mcp-full setup claude-desktop --profile notebook

Then restart Mathematica and your editor. Done!

VS Code: Alternative setup via Command Palette

Prerequisite: GitHub Copilot Chat extension must be installed - MCP support is built into Copilot.

  1. Press Cmd+Shift+P (Mac) / Ctrl+Shift+P (Windows)
  2. Type "MCP" → Select "MCP: Add Server"
  3. Choose "Command (stdio)"not "pip"
  4. Enter command: uvx
  5. Enter args: mathematica-mcp-full
  6. Name it: mathematica
  7. Choose scope: Workspace or User

Alternative: Interactive Installer

bash <(curl -sSL https://raw.githubusercontent.com/AbhiRawat4841/mathematica-mcp/main/install.sh)

Verify Installation

uvx mathematica-mcp-full doctor

Tip: If you encounter errors after updating, clear the cache:

uv cache clean mathematica-mcp-full && uvx mathematica-mcp-full setup <client>

Tool Profiles

Choose how many tools to expose: math (~25 tools), notebook (~45), or full (~79, default). Pass --profile during setup or set MATHEMATICA_PROFILE env var. See the Technical Reference for details.

Routing Memory (opt-in)

Enable MATHEMATICA_ROUTING_MEMORY=observe to collect aggregate routing statistics from execute_code calls — transport success rates, latency histograms, and recurring error families. No Mathematica code or expressions are stored. This improves observability today and lays the groundwork for future adaptive routing hints. See the Technical Reference for details.


Manual Installation

For full details, troubleshooting, and advanced configuration, see the Installation Guide.

Click to expand quick manual setup
  1. Clone & Install:

    git clone https://github.com/AbhiRawat4841/mathematica-mcp.git
    cd mathematica-mcp
    uv sync
    
  2. Install Mathematica Addon:

    wolframscript -file addon/install.wl
    

    Restart Mathematica after this step.

  3. Configure your editor — add the MCP server to your client's config file. See the Installation Guide for Claude Desktop, Cursor, VS Code, and other client configs.

📖 See the Installation Guide for troubleshooting and advanced setup.


What You Can Do

1. Solve and Verify a Calculus Problem

"Integrate x^2 sin(x) from 0 to pi, then verify by differentiating."

Agent calls: execute_code("Integrate[x^2 Sin[x], {x, 0, Pi}]")
=> -4 + Pi^2

Agent calls: verify_derivation(
  steps=["Integrate[x^2 Sin[x], {x, 0, Pi}]", "-4 + Pi^2"]
)
=> {"success": true, "report": "Step 1 → 2: ✓ VALID\n...\n**Summary**: All steps are valid!", "raw_data": {...}, "format": "text"}

2. Generate a 3D Plot

"Plot the sombrero function and export it."

Agent calls: execute_code("Plot3D[Sinc[Sqrt[x^2 + y^2]], {x, -4, 4}, {y, -4, 4}]")
=> [3D surface plot rendered as image]

Agent calls: export_graphics("Plot3D[Sinc[Sqrt[x^2+y^2]], {x,-4,4}, {y,-4,4}]", "/tmp/sombrero.png", "PNG")

3. Read and Analyze a Notebook

"Show me the outline of SinPlot.nb, then extract the code cells."

Agent calls: read_notebook("SinPlot.nb", output_format="outline")
=> {"success": true, "format": "outline", "section_count": 0, "sections": []}

Agent calls: read_notebook("SinPlot.nb", output_format="json")
=> {"success": true, "cell_count": 2, "code_cells": 1, "cells": [{"style": "Input", "content": "Plot[Sin[x], {x, 0, 2 Pi}]"}, ...]}

Beyond these workflows: symbolic computation, 2D/3D visualization, notebook operations, Wolfram Alpha queries, data import/export (hundreds of Wolfram-supported formats), and debugging tools. See the Technical Reference for the full tool list.


Execution Styles

For chat users — use keywords in your prompt

Say this... What happens
"calculate ...", "compute ...", "what is ..." Result appears as text in chat
"plot ...", "show ...", "in notebook ..." Executes in the current Mathematica notebook
"in new notebook: ..." Creates a fresh notebook, then executes there
"interactive ...", "manipulate ...", "dynamic ..." Live front-end evaluation (sliders, animations)

For tool callers — use the style parameter

style= output_target mode Best for
"compute" cli kernel Math, algebra, parsing results
"notebook" notebook kernel Plots, visual artifacts
"interactive" notebook frontend Manipulate, Dynamic, animations

style is a high-level shortcut for output_target + mode. Individual params still work and override style.

Note: There is no style="new_notebook". Creating a fresh notebook is a two-step workflow: create_notebook(title="...") then execute_code(style="notebook").

Examples

"Calculate the integral of x^3 from 0 to 1"
  → Result appears inline in chat

"Plot Sin[x] from 0 to 2π"
  → Plot appears in current Mathematica notebook

"In new notebook: integrate 1/x^5 + x^7 and plot the integration region"
  → Fresh notebook is created with the work

"Interactive: Manipulate a slider for Plot[Sin[n x], {x, 0, 2π}]"
  → Dynamic UI with sliders in notebook

If you don't include a keyword, the default mode depends on your tool profile: notebook profiles default to notebook output, math profile defaults to inline.

Built-in MCP Prompts

This server exposes several MCP prompts, including calculate, notebook, new_notebook, interactive, and quickstart (plus mathematica_expert). Some MCP clients may surface these prompts in their UI, but support varies by client and version. If your client does not expose prompt selection, use the style keywords directly in your message instead.


Documentation


License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mathematica_mcp_full-0.8.5.tar.gz (102.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mathematica_mcp_full-0.8.5-py3-none-any.whl (115.1 kB view details)

Uploaded Python 3

File details

Details for the file mathematica_mcp_full-0.8.5.tar.gz.

File metadata

  • Download URL: mathematica_mcp_full-0.8.5.tar.gz
  • Upload date:
  • Size: 102.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mathematica_mcp_full-0.8.5.tar.gz
Algorithm Hash digest
SHA256 1e9ea89604d989706eb5194523ad62194614dd18975ad81569bc9ecc3e042403
MD5 a38452c53889f0bc210af1554491f5e2
BLAKE2b-256 360d2c7ee0f6ed643e94a9ba6ce1a12d33f660224ea1d0a7d0ca2158648e887e

See more details on using hashes here.

File details

Details for the file mathematica_mcp_full-0.8.5-py3-none-any.whl.

File metadata

  • Download URL: mathematica_mcp_full-0.8.5-py3-none-any.whl
  • Upload date:
  • Size: 115.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mathematica_mcp_full-0.8.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5e8818a01bab693c5f661b39e23c6e747d4358c7d2c9ba6321848cd26affa2f1
MD5 e861123994ab20ca7add6cb2e652dee1
BLAKE2b-256 5096fb2a27d3847790080b89cc437766fcf7ac1d74bbad2b7c0a5413f10170f7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page