关于 Mathematica MCP Server
Mathematica MCP Server 是一个通过本地 wolframscript 执行 Mathematica 代码并验证数学推导的 MCP 服务。适合需要在 MCP 客户端中调用本地 Mathematica 计算的用户。
主要功能
- 01通过 wolframscript 执行 Mathematica 代码
- 02返回结果可选 LaTeX 或 Mathematica 字符串格式
- 03逐步验证数学推导的每一步
- 04基于标准输入输出(stdio)运行
适用场景
- 01在 MCP 客户端中完成复杂数学计算
- 02检查人工或 AI 模型给出的推导步骤
MCP 相关
该服务以 MCP 服务形式向客户端暴露 execute_mathematica 与 verify_derivation 两个工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Mathematica MCP 服务
此仓库包含一个模型上下文协议(MCP)服务,可让 MCP 客户端(如 Cursor)通过 wolframscript 执行 Mathematica 代码并验证数学推导。
概述
此服务充当桥梁,使支持 MCP 的应用能够利用本地 Mathematica 安装的强大功能来完成以下任务:
- 执行复杂的数学计算。
- 验证人类或 AI 模型提供的数学推导步骤。
- 生成表达式的 LaTeX 或 Mathematica 字符串表示。
先决条件
- 系统必须安装 Mathematica。
- 系统 PATH 中必须包含
wolframscript命令行工具。可在终端中运行wolframscript -help进行测试。 - Node.js(建议使用 v16 或更高版本,依据是
tsconfig.json中的目标版本ES2022)。
安装
- 克隆仓库:
git clone <repository-url> cd <repository-directory> - 安装依赖:
npm install - 构建服务:
此命令会将npm run buildsrc/中的 TypeScript 源代码编译为build/目录中的 JavaScript,并使主脚本可执行。
运行服务
要启动 MCP 服务,请在终端中运行以下命令:
node build/index.js
服务将启动,并通过标准输入/输出(stdio)侦听来自 MCP 客户端的连接。使用服务期间,请保持此终端窗口打开。
如需更稳健的部署,可考虑使用 pm2 等进程管理器在后台运行服务并管理重启。
与 MCP 客户端集成(例如 Cursor、Cline、Claude Desktop)
MCP 客户端通常会发现并与正在运行的 MCP 服务通信。具体配置步骤可能因客户端应用而异。
常规步骤:
- 启动 Mathematica MCP 服务: 确保服务正在终端中运行:
node build/index.js - 配置 MCP 客户端: 将服务添加到客户端的配置中。这通常需要编辑 JSON 设置文件。请参阅下方针对具体客户端的说明。
- 重启 MCP 客户端: 启动服务或更改配置后,请重启客户端应用,确保其检测到 Mathematica 服务。
针对具体客户端的配置:
-
Cline: 根据 Cline MCP Server Development Protocol,通常需要在设置文件中配置服务(该文件通常是 Cline 配置目录中的
settings.json)。添加类似以下内容的条目:{ "mcpServers": { "mathematica-server": { "command": "node", "args": ["/full/path/to/mcp-server-mathematica/build/index.js"], // Replace with the actual absolute path "disabled": false, "autoApprove": [] // Optional: Add tool names to auto-approve } // ... other servers ... } }请将
/full/path/to/mcp-server-mathematica/build/index.js替换为系统中构建后的index.js文件的绝对路径。 -
Cursor: Cursor 可能需要编辑特定的设置文件,例如
~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json(不过此路径可能会发生变化)。其结构与上面的 Cline 示例类似。 -
其他客户端(例如 Claude Desktop): 请查阅特定 MCP 客户端的文档。查找有关“MCP Servers”“Tool Configuration”或“External Tools”的章节。配置通常需要指定命令(
node)、服务脚本路径(build/index.js),以及可能需要的环境变量。
可用工具
该服务向 MCP 客户端提供以下工具:
1. execute_mathematica
执行任意 Mathematica 代码并返回结果。
输入架构:
{
type: "object",
properties: {
code: {
type: "string",
description: "Mathematica code to execute"
},
format: {
type: "string",
description: "Output format (text, latex, or mathematica)",
enum: ["text", "latex", "mathematica"],
default: "text"
}
},
required: ["code"]
}
使用示例(客户端请求):
- 自然语言:“使用 Mathematica 计算 x^2 从 0 到 1 的积分,并格式化为 LaTeX”
- 直接调用工具:
{ "tool_name": "execute_mathematica", "arguments": { "code": "Integrate[x^2, {x, 0, 1}]", "format": "latex" } }
2. verify_derivation
使用 Simplify[prev == current] 验证一系列数学表达式,检查每一步是否在逻辑上由前一步推导得出。
输入架构:
{
type: "object",
properties: {
steps: {
type: "array",
description: "Array of mathematical expressions (as strings) representing steps in a derivation. Requires at least two steps.",
items: {
type: "string"
}
},
format: {
type: "string",
description: "Output format for the verification report (text, latex, or mathematica)",
enum: ["text", "latex", "mathematica"],
default: "text"
}
},
required: ["steps"]
}
使用示例(客户端请求):
- 自然语言:“验证此推导:['x^2 - y^2', '(x-y)(x+y)']”
- 直接调用工具:
{ "tool_name": "verify_derivation", "arguments": { "steps": [ "x^2 - y^2", "(x-y)*(x+y)" ], "format": "text" } }
故障排除
- 找不到服务/服务无响应:
- 确保服务正在终端中运行(
node build/index.js)。 - 检查是否已安装
wolframscript,且可通过 PATH 访问(wolframscript -help)。 - 重启 MCP 客户端应用程序。
- 检查客户端的 MCP 配置。
- 确保服务正在终端中运行(
- 工具错误:
- 检查服务的终端输出(stderr),查看
wolframscript的日志和错误消息。 - 检查所提供的 Mathematica
code或steps语法是否正确。 - 确保
verify_derivation的steps数组至少包含两个元素。
- 检查服务的终端输出(stderr),查看
- **Mathematica 问题:**确保 Mathematica 安装已获得许可且运行正常。
项目结构
src/:服务的 TypeScript 源代码。build/:编译后的 JavaScript 输出(由npm run build生成)。package.json:项目元数据和依赖项。tsconfig.json:TypeScript 编译器配置。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。