Mathematica MCP Server
# Mathematica MCP Server
This project provides a Model Context Protocol (MCP) server for interacting with a Wolfram Mathematica kernel. It allows Large Language Models (LLMs) to execute Wolfram Language code in a secure, session-based environment.
The `animalid` folder contains a simple tool for generating unique, animal-based identifiers. Since LLMs often fail to copy UUIDs correctly, this tool replaces them with animal-themed IDs that are more likely to be transcribed accurately.
## Tools Provided
1. `create_mathematica_session`: Initializes a new Wolfram Language session and returns a unique session ID.
2. `execute_mathematica_code`: Executes Wolfram Language code within a specified session.
3. `close_mathematica_session`: Terminates a session and releases its resources.
## Prerequisites
- Python 3.10 or higher.
- `uv` Python package manager. ([Installation guide](https://astral.sh/uv/install.sh))
- A local installation of the Wolfram Engine or Mathematica. The `wolframclient` library requires this to function.
## Installation & Setup
1. **Set the Security Key:**
This server uses a secret key to generate secure session IDs. You **must** set this as an environment variable.
```bash
export ANIMALID_SECRET_KEY='your-super-secret-and-long-key-here'
```
**Note:** Do not use a weak key or hardcode it in the script.
## Usage
To use this server, you need to connect it to an MCP-compatible client, such as Claude for Desktop.
1. **Configure the MCP Client:**
Open your client's MCP configuration file (e.g., `claude_desktop_config.json` for Claude for Desktop) and add the following server configuration.
**Important:** Replace `/path/to/your/project/my_mcp` with the absolute path to this project's directory on your system.
```json
{
"mcpServers": {
"mathematica": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/project/my_mcp",
"run",
"wolfram_mathematica.py"
],
"env": {
"ANIMALID_SECRET_KEY": "default-secret-key-for-dev"
}
}
}
}
```
You may need to use the full path to the `uv` executable in the `command` field if it's not in your system's PATH. You can find it by running `which uv` (macOS/Linux) or `where uv` (Windows).
## screenshot
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose with no overlap: create_mathematica_session initiates sessions, execute_mathematica_code runs code within them, and close_mathematica_session terminates them. The descriptions reinforce these distinct roles, making misselection unlikely.
All tools follow a consistent verb_noun pattern with 'mathematica' as a prefix (create_mathematica_session, execute_mathematica_code, close_mathematica_session). The naming is predictable and enhances readability across the set.
With 3 tools, this server is well-scoped for its purpose of managing Mathematica sessions and code execution. Each tool earns its place by covering the essential lifecycle: create, execute, and close, without unnecessary bloat or gaps.
The tool set provides complete CRUD/lifecycle coverage for the domain of Wolfram Language sessions: creation, execution, and termination. There are no obvious gaps, as agents can manage sessions end-to-end without dead ends.