Token导航 LogoToken导航TokenDH.com
Symbolic Algebra MCP Server logo
开发工具stdio官方级别未说明来源级核验

Symbolic Algebra MCP Server

MCP Server

Sympy-MCP是一个模型上下文协议服务器,允许LLM自主执行符号数学和计算机代数运算,提供代数方程求解、积分微分、向量微积分、张量微积分及微分方程求解等功能。

工具数

31

提示词数

0

GitHub Stars

70

资源数

0
PythonVS Code开发工具Claude DesktopClaudeCursorClineVS CodeVS Code Insiders

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

sdiehl

提供方

sdiehl

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run mcp install server.py

详细介绍

符号代数MCP服务器

Sympy MCP是一个模型上下文协议服务器,允许LLM自主执行符号数学和计算机代数。它向MCP客户端展示了SymPy核心功能中的许多工具,用于操纵数学表达式和方程。

为什么?

语言模型在符号操纵方面绝对糟糕。他们幻想变量,组成随机常数,排列术语,通常会把事情弄得一团糟。但是我们有专门为符号操作构建的计算机代数系统,因此我们可以使用工具调用来编排一系列转换,以便符号内核完成所有繁重的工作。

虽然你当然可以让LLM生成Mathematica或Python代码,但如果你想将LLM用作代理或即时计算器,使用MCP服务器并直接公开符号工具会更好。

该服务器公开了符号数学功能的一个子集,包括代数方程求解、积分和微分、向量微积分、广义相对论的张量微积分,以及常微分方程和偏微分方程。

例如,你可以用自然语言问它求解微分方程:

求解带强迫项的阻尼谐振子:由微分方程描述的质量-弹簧-阻尼器系统,其中m是质量,c是阻尼系数,k是弹簧常数,F(t)是外力。

$$m\\frac{d^2x}{dt^2}+c\\frac{dx}{dt}+kx=F(t)$$

或者涉及广义相对论:

使用反德西特时空的逆度量$g^{\\mu\\nu}$计算Ricci张量$R\_{\\mu\\nu}$的轨迹,以确定其常数标量曲率$R$。

用法

你需要 紫外线 第一。

  • 家酿 : brew install uv
  • 卷曲 : curl -LsSf https://astral.sh/uv/install.sh | sh

然后,您可以使用以下命令安装并运行服务器:

# Setup the project
git clone https://github.com/sdiehl/sympy-mcp.git
cd sympy-mcp
uv sync

# Install the server to Claude Desktop
uv run mcp install server.py

# Run the server
uv run mcp run server.py

您现在应该可以在Claude Desktop应用程序中看到可用的服务器。其他客户请参阅下文。

如果你想要一个完全独立的版本,只需一个命令即可运行,你可以使用以下命令。 *请注意,这是从Github运行的任意代码,所以要小心。*

uv run --with https://github.com/sdiehl/sympy-mcp/releases/download/0.1/sympy_mcp-0.1.0-py3-none-any.whl python server.py

如果你想进行广义相对论计算,你需要安装 einsteinpy 图书馆。

uv sync --group relativity

可用工具

sympy-mcp服务器为符号数学提供了以下工具:

工具工具ID描述
变量介绍intro引入一个具有指定假设的变量并将其存储
多变量intro_many同时引入具有指定假设的多个变量
表达式解析器introduce_expression使用可用的局部变量解析表达式字符串并将其存储
LaTeX打印机print_latex_expression以LaTeX格式打印存储的表达式以及变量假设
代数求解器solve_algebraically在给定域上用代数方法求解给定变量的方程
线性求解器solve_linear_system求解线性方程组
非线性求解器solve_nonlinear_system求解非线性方程组
函数变量introduce_function引入一个用于微分方程的函数变量
ODE求解器dsolve_ode求解一个常微分方程
PDE求解器pdsolve_pde求解偏微分方程
标准公制create_predefined_metric创建预定义的时空度量(例如史瓦西、克尔、闵可夫斯基)
指标搜索search_predefined_metrics搜索可用的预定义指标
张量计算器calculate_tensor根据度量计算张量(Ricci、Einstein、Weyl张量)
自定义度量create_custom_metric根据提供的组件和符号创建自定义度量张量
张量LaTeXprint_latex_tensor以LaTeX格式打印存储的张量表达式
更简单simplify_expression使用SymPy的规范化函数简化数学表达式
替代品substitute_expression用另一个表达式中的表达式替换变量
集成integrate_expression将表达式与变量进行积分
差异化differentiate_expression将表达式与变量区分开来
坐标create_coordinate_system为向量演算操作创建三维坐标系
矢量场create_vector_field在指定坐标系中创建矢量场
卷发calculate_curl计算向量场的旋度
分歧calculate_divergence计算向量场的散度
坡度calculate_gradient计算标量场的梯度
单位转换器convert_to_units将数量转换为给定的目标单位
单位简化器quantity_simplify_units用单位简化数量
矩阵创建者create_matrix根据提供的数据创建SymPy矩阵
行列式matrix_determinant计算矩阵的行列式
矩阵求逆matrix_inverse计算矩阵的逆
特征值matrix_eigenvalues计算矩阵的特征值
特征向量matrix_eigenvectors计算矩阵的特征向量

默认情况下,变量是用假设预定义的(类似于 符号() 函数在SymPy中工作)。除非另有说明,否则defaut假设是变量在复数域$\\mathbb{C}$上是复数、可交换的项。

财产价值
commutative真的
complex真的
finite真的
infinite 错误的

Claude桌面设置

通常情况下 mcp install 命令将自动将服务器添加到 claude_desktop_config.json 文件。如果没有,你需要找到配置文件并添加以下内容:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json

将以下内容添加到 mcpServers 对象,替换 /ABSOLUTE_PATH_TO_SYMPY_MCP/server.py 具有通往sympy mcp的绝对路径 server.py 文件。

{
  "mcpServers": {
    "sympy-mcp": {
      "command": "/opt/homebrew/bin/uv",
      "args": [
        "run",
        "--with",
        "einsteinpy",
        "--with",
        "mcp[cli]",
        "--with",
        "pydantic",
        "--with",
        "sympy",
        "mcp",
        "run",
        "/ABSOLUTE_PATH_TO_SYMPY_MCP/server.py"
      ]
    }
  }
}

光标设置

在你的 ~/.cursor/mcp.json,添加以下内容,其中 ABSOLUTE_PATH_TO_SYMPY_MCP 是sympy mcp服务器.py文件的路径。

{
  "mcpServers": {
    "sympy-mcp": {
      "command": "/opt/homebrew/bin/uv",
      "args": [
        "run",
        "--with",
        "einsteinpy",
        "--with",
        "mcp[cli]",
        "--with",
        "pydantic",
        "--with",
        "sympy",
        "mcp",
        "run",
        "/ABSOLUTE_PATH_TO_SYMPY_MCP/server.py"
      ]
    }
  }
}

VS代码设置

VS Code和VS Code Insider现在支持MCP 代理模式。对于VS Code,您可能需要启用 Chat > Agent: Enable 在设置中。

  1. 一键设置:

![Install in VS Code](https://insiders.vscode.dev/redirect/mcp/install?name=sympy-mcp&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22-p%22%2C%228081%3A8081%22%2C%22--rm%22%2C%22ghcr.io%2Fsdiehl%2Fsympy-mcp%3Amain%22%5D%7D)

![Install in VS Code Insiders](https://insiders.vscode.dev/redirect/mcp/install?name=sympy-mcp&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22-p%22%2C%228081%3A8081%22%2C%22--rm%22%2C%22ghcr.io%2Fsdiehl%2Fsympy-mcp%3Amain%22%5D%7D&quality=insiders)

或者手动将配置添加到您的 settings.json (全球):

{
  "mcp": {
    "servers": {
      "sympy-mcp": {
        "command": "uv",
        "args": [
          "run",
          "--with",
          "einsteinpy",
          "--with",
          "mcp[cli]",
          "--with",
          "pydantic",
          "--with",
          "sympy",
          "mcp",
          "run",
          "/ABSOLUTE_PATH_TO_SYMPY_MCP/server.py"
        ]
      }
    }
  }
}
  1. 点击服务器配置上方的“开始”,在聊天中切换到代理模式,然后尝试“集成x^2”或“求解x^2=1”等命令开始。

临床设置

与一起使用 克莱恩,您需要首先使用“用法”部分中的命令手动运行MCP服务器。MCP服务器运行后,打开Cline并选择顶部的“MCP服务器”。

然后选择“远程服务器”并添加以下内容:

  • 服务器名称: sympy-mcp
  • 服务器URL: http://127.0.0.1:8081/sse

5ire设置

另一个在后端支持多种型号(o3、o4 mini、DeepSeek-R1等)的MCP客户端是5ire。

设置 5ire,打开5ire,进入工具->新建,设置以下配置:

  • 工具密钥: sympy-mcp
  • 产品名称:SymPy MCP
  • 命令: /opt/homebrew/bin/uv run --with einsteinpy --with mcp[cli] --with pydantic --with sympy mcp run /ABSOLUTE_PATH_TO/server.py

替换 /ABSOLUTE_PATH_TO/server.py 带有sympy mcp服务器.py文件的实际路径。

HTTP传输(流式HTTP/SSE)

服务器使用HTTP支持MCP 可流式传输http 在MCP规范2025-03-26中引入。这取代了传统的SSE传输,并公开了一个 /mcp 客户端通过HTTP连接到的端点。

当服务器作为独立进程或在容器中运行时,这是推荐的传输方式,因为它允许任何支持HTTP的MCP客户端连接,而无需将服务器作为子进程启动。

# Run locally with HTTP transport
uv run python server.py --transport streamable-http

# Override host/port
uv run python server.py --transport streamable-http --mcp-host 127.0.0.1 --mcp-port 9000

遗产 --transport sse 仍然支持标志以实现向后兼容性。

A. /healthcheck 还公开了运行完整MCP协议往返的端点(初始化→ 工具/列表→ 会话拆除)并返回 {"status": "ok", "tool_count": N}.

在容器中运行

您可以在本地使用Docker构建和运行服务器:

# Build the Docker image
docker build -t sympy-mcp .

# Run the Docker container
docker run -p 8081:8081 sympy-mcp

或者使用Docker Compose docker/ 目录:

cd docker
docker compose up -d --build

或者,您可以从GitHub容器注册表中提取预构建的映像:

# Pull the latest image
docker pull ghcr.io/sdiehl/sympy-mcp:main

# Run the container
docker run -p 8081:8081 --rm ghcr.io/sdiehl/sympy-mcp:main

要配置Claude Desktop以启动Docker容器,请编辑您的 claude_desktop_config.json 文件:

{
  "mcpServers": {
    "sympy-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "-p",
        "8081:8081",
        "--rm",
        "sympy-mcp"
      ]
    }
  }
}

或者使用GitHub上的预构建容器:

{
  "mcpServers": {
    "sympy-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "-p",
        "8081:8081",
        "--rm",
        "ghcr.io/sdiehl/sympy-mcp:main"
      ]
    }
  }
}

此配置告诉会在需要时启动Docker容器。确保构建Docker镜像(docker build -t sympy-mcp .)在使用此配置的Claude Desktop之前。

如果您将uv命令更改为使用Docker run命令,则其他安装方法也可以适用于Docker。

示例交互1:微分方程

以下是一个使用此MCP服务器与AI助手对话时工具调用如何工作的示例:

用户:求解带强迫项的阻尼谐振子:由微分方程描述的质量-弹簧-阻尼器系统,其中m是质量,c是阻尼系数,k是弹簧常数,F(t)是外力。

$$m\\frac{d^2x}{dt^2}+c\\frac{dx}{dt}+kx=F(t)$$

助手:(内部工具调用) intro_many 引入变量:

{
  "variables": [
    {"var_name": "t", "pos_assumptions": ["real"], "neg_assumptions": []},
    {"var_name": "m", "pos_assumptions": ["real", "positive"], "neg_assumptions": []},
    {"var_name": "c", "pos_assumptions": ["real", "positive"], "neg_assumptions": []},
    {"var_name": "k", "pos_assumptions": ["real", "positive"], "neg_assumptions": []}
  ]
}

助手:(内部工具调用) introduce_function 定义x(t):

{
  "func_name": "x"
}

助手:(内部工具调用) introduce_expression 以创建微分方程:

{
  "expr_str": "Eq(m*Derivative(x(t), t, t) + c*Derivative(x(t), t) + k*x(t), F(t))"
}

助手:(内部工具调用) print_latex_expression 为了很好地显示方程式:

{
  "expr_key": "expr_12"
}

结果:

$$ c\\frac{d}{dt}x{\\left(t\\right)}+kx{\\left(t\\right)}+m\\frac{d^{2}{dt^{2}x{\\right(t\\left)}=F{\\left $$

助手:(内部工具调用) introduce_function 定义F(t):

{
  "func_name": "F"
}

助手:(内部工具调用) dsolve_ode 为了求解微分方程:

{
  "expr_key": "expr_12",
  "func_name": "x"
}

结果:

$$ x{\\left(t\\right)}=C\_{1}e^{\\frac{t\\left(-C+\\sqrt{C^{2}-4k m}\\right)}{2 m}}+C\_{2}e^{-\\frac{t=t\\left $$

示例交互2:广义相对论

用户:使用反德西特时空的逆度量$g^{\\mu\\nu}$计算Ricci张量$R\_{\\mu\\nu}$的轨迹,以确定其常数标量曲率$R$。

助手:(内部工具调用) create_predefined_metric 要创建反德西特指标:

{
  "metric_name": "AntiDeSitter"
}

助手:(内部工具调用) calculate_tensor 计算Ricci张量:

{
  "metric_key": "metric_AntiDeSitter",
  "tensor_type": "RICCI_TENSOR",
  "simplify_result": true
}

助手:(内部工具调用) print_latex_tensor 显示Ricci张量:

{
  "tensor_key": "riccitensor_metric_AntiDeSitter"
}

结果:

$$ \\左\ 文件以获取详细信息。

目录标签

目录标签

PythonVS Code开发工具符号计算本地部署计算机代数系统LLM工具集成数学求解微分方程

支持客户端

Claude DesktopClaudeCursorClineVS CodeVS Code Insiders

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

31

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononeremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP