Skip to main content

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

Project description

Mathematica MCP

A front-end / notebook automation layer for Mathematica, built for AI agents.

A local MCP server that lets an AI agent drive a live Mathematica session: run code, create and edit notebooks, capture screenshots, verify derivations, and read .nb files without a kernel. Works with Claude, Cursor, VS Code, Codex, and Gemini.

It is designed to run beside the official Wolfram Local MCP, not to replace it: Wolfram's server is the reference Wolfram-Language evaluator and documentation surface; this one is the notebook / front-end automation layer. See How it compares.

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

v1.0 is a breaking release. The default profile is now lean (12 tools) instead of full (82 tools). Set MATHEMATICA_PROFILE=classic (or full) to keep the old surface, and reinstall the Mathematica addon. See the Migration Guide. v1.1 bumps the addon protocol to 4 (honest evaluation_pending status for front-end evaluations): re-run setup or wolframscript -file addon/install.wl after upgrading, then restart Mathematica.


Watch it in action

Mathematica MCP Demo

An AI agent solving math, generating plots, and controlling a live Mathematica notebook. Errors are returned directly to the agent, no copy-pasting notebook output back into chat.


Why This Exists

LLMs can write Mathematica code, but they can't run it, control a live notebook, or verify their own results. This MCP server bridges that gap:

  • Live notebook control: create, edit, evaluate, and screenshot Mathematica notebooks directly from your AI agent.
  • License-free notebook reading: read_notebook_file reads .nb files even when no kernel or Mathematica license is available (Python-native fallback parser; a kernel is used for higher fidelity when present, and is required for .wl scripts).
  • Warm execution: computation runs on a persistent headless kernel session that starts warming in the background the moment the server launches, so the agent's calls return in sub-second time instead of paying a cold wolframscript start-up on every request.
  • Error-aware execution: Mathematica messages are fed back to the agent with a suggested_fix and, where a correction can be derived, a concrete retry_with call, so it can debug without you copying notebook output into chat.
  • Local and private: core execution runs on your machine. Optional tools like wolfram_alpha and repository search contact Wolfram's cloud services only when invoked.

The lean default

v1.0 ships a consolidated 12-tool surface as the default profile: status, notebooks, cells, edit_cells, evaluate, screenshot, verify_derivation, kernel, vars, read_notebook_file, guide, and batch. It exposes ~11.5 KB of tool schema (~2.9k tokens) versus ~61 KB / ~15k tokens for the old 82-tool surface - roughly a 5x cut in the context the agent pays before it does any work. Each tool is a thin wrapper over the exact internals the classic surface uses.

Prefer the old surface? classic (alias full) keeps all 82 legacy tools byte-identical to pre-1.0, and MATHEMATICA_TOOLSETS adds opt-in extras (data I/O, cloud, graphics, ...) to lean without switching profiles.


How it compares

This server runs alongside the official Wolfram Local MCP (tool names per the MCPServer paclet docs) - setup <client> --with-official writes the official server's config next to this one so they run side by side. Overlap is deliberate where it helps agents; the differentiator is notebook / front-end automation that runs without a license round trip.

Capability Official Wolfram Local MCP This MCP
Wolfram-Language evaluation WolframLanguageEvaluator evaluate (warm persistent kernel)
Wolfram Alpha WolframAlpha wolfram_alpha (opt-in cloud)
Symbol docs / definitions SymbolDefinition, CreateSymbolDoc kernel(action="inspect"), symbols extra
Read a notebook file ReadNotebook (needs kernel) read_notebook_file - works with no kernel / license (Python fallback)
Write a notebook file WriteNotebook notebooks, edit_cells (live front-end)
Live notebook control (create/edit/eval/screenshot) No Yes
Interactive UIs (sliders, Manipulate) No Yes, in the live front-end
Derivation verification No verify_derivation
Doc search / code inspection / test reports CodeInspector, TestReport Deliberately not duplicated - use the official server

ReadNotebook / WriteNotebook overlap the notebook tools here, but the official ReadNotebook runs through a kernel; read_notebook_file parses the .nb directly in Python, so an agent can read notebooks with no license consumed and no kernel start-up.


Quick Start

From install to first working notebook plot in under 2 minutes.

Prerequisites

  1. Mathematica 14.0+ (15+ recommended) 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

The PyPI package and CLI are named mathematica-mcp-full (unchanged in 1.0 - the name predates the lean default).

# 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: pick a profile (default is "lean")
uvx mathematica-mcp-full setup claude-desktop --profile classic

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>

What You Can Ask For

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

evaluate("Integrate[x^2 Sin[x], {x, 0, Pi}]")   =>  -4 + Pi^2
verify_derivation(steps=["Integrate[x^2 Sin[x], {x, 0, Pi}]", "-4 + Pi^2"])
=> Step 1 → 2: ✓ VALID
   All steps are valid!

"Plot the sombrero function in a new notebook."

notebooks(action="create", title="Sombrero")
evaluate("Plot3D[Sinc[Sqrt[x^2+y^2]], {x,-4,4}, {y,-4,4}]", target="notebook")
=> [3D surface plot rendered in the live notebook]

"Read the derivation in this notebook without opening Mathematica."

read_notebook_file("paper/derivation.nb", mode="markdown")
=> [structured markdown; works even with no kernel or license available]

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

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.


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-1.1.1.tar.gz (144.2 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-1.1.1-py3-none-any.whl (159.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mathematica_mcp_full-1.1.1.tar.gz
  • Upload date:
  • Size: 144.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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-1.1.1.tar.gz
Algorithm Hash digest
SHA256 db5f887824938e9826fe86adc0b321828aad6dfe190b80f166678f6dc19925b3
MD5 ade0db2a4fbb52c4e15195a5c7a7c748
BLAKE2b-256 f8fefbcef82146e81b1586226486a78c293e86f438aaa5297be3cfd5a711a051

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mathematica_mcp_full-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 159.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5bf43410d938e976885710e8f3ba0fdff80d345efaba921669f828f92c6bd3ff
MD5 de04e1ca778bea8bfd24d7e859e7f552
BLAKE2b-256 20e97271ec28283eb2e621654b740b9ff14e9cacc20063eceefad5f1c207d791

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