Symbolic Algebra MCP Server

by sdiehl
Integrations
  • Enables containerized deployment of the MCP server through Docker images

  • Provides access to the server through GitHub Container Registry for easy deployment

  • Provides LaTeX rendering of mathematical expressions and tensors for clear visualization of symbolic mathematics

符号代数 MCP 服务器

Sympy-MCP 是一个模型上下文协议 (MCP) 服务器,允许 LLM 自主执行符号数学和计算机代数运算。它将 SymPy 核心功能中的众多工具开放给 MCP 客户端,用于操作数学表达式和方程式。

为什么?

语言模型在符号操作方面简直糟糕透顶。它们会幻化变量,制造随机常数,对术语进行置换,通常会造成混乱。但我们有专门为符号操作构建的计算机代数系统,因此我们可以使用工具调用来协调一系列转换,以便符号核完成所有繁重的工作。

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

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

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

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

Loading...

或者涉及广义相对论:

使用反德西特时空的逆度量 Loading... 计算里奇张量 Loading... 的迹,以确定其常数标量曲率 Loading...

用法

你首先需要紫外线

  • 自制- 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 桌面应用中看到服务器了。其他客户端请参见下文。

如果您想要一个完全独立的版本,只需一个命令即可运行,可以使用以下命令。请注意,这会运行来自 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为矢量微积分运算创建 3D 坐标系
矢量场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 中symbol()函数的工作原理)。除非另有说明,否则默认假设变量是复数域 Loading... 上的复数、交换项。

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

Claude 桌面设置

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

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %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 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" ] } } }

VS Code 设置

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

  1. 一键设置:

或者手动将配置添加到您的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. 单击服务器配置上方的“开始”,打开 Python 或数学文件,在聊天中切换到代理模式,然后尝试“integrate x^2”或“solve x^2 = 1”等命令来开始。

Cline 设置

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

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

  • 服务器名称: sympy-mcp
  • 服务器网址: http://127.0.0.1:8081/sse 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 server.py 文件的实际路径。

在容器中运行

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

# Build the Docker image docker build -t sympy-mcp . # Run the Docker container docker run -p 8081:8081 sympy-mcp

或者,您可以从 GitHub Container Registry 中提取预先构建的图像:

# Pull the latest image docker pull ghcr.io/sdiehl/sympy-mcp:latest # Run the container docker run -p 8081:8081 --rm ghcr.io/sdiehl/sympy-mcp:latest

要配置 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:latest" ] } } }

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

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

示例交互 1:微分方程

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

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

Loading...

助手:(内部工具调用) 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" }

结果:

Loading...

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

{ "func_name": "F" }

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

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

结果:

Loading...

示例交互2:广义相对论

用户:使用反德西特时空的逆度量 Loading... 计算 Ricci 张量 Loading... 的迹,以确定其常数标量曲率 Loading...

助手:(内部工具调用) create_predefined_metric创建 Anti-de Sitter 指标:

{ "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" }

结果:

Loading...

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

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

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

{ "tensor_key": "ricciscalar_metric_AntiDeSitter" }

结果:

Loading...

安全免责声明

该服务器在您的计算机上运行,并授予语言模型运行 Python 逻辑的权限。值得注意的是,它使用 Sympy 的parse_expr来解析数学表达式,而这在底层使用了eval ,实际上允许任意代码执行。运行该服务器意味着您信任 Claude 生成的代码。在 Docker 镜像中运行会稍微安全一些,但在运行之前检查代码仍然是个好主意。

执照

版权所有 2025 Stephen Diehl。

本项目遵循 Apache 2.0 许可证。详情请参阅许可证文件。

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

模型上下文协议服务器使 LLM 能够通过 SymPy 的操作数学表达式和方程的功能自主执行符号数学和计算机代数。

  1. 为什么?
    1. 用法
      1. 可用工具
        1. Claude 桌面设置
          1. 光标设置
            1. VS Code 设置
              1. Cline 设置
                1. 5ire 设置
                  1. 在容器中运行
                    1. 示例交互 1:微分方程
                      1. 示例交互2:广义相对论
                        1. 安全免责声明
                          1. 执照

                            Related MCP Servers

                            • A
                              security
                              A
                              license
                              A
                              quality
                              A Model Context Protocol server that provides basic mathematical and statistical functions to LLMs, enabling them to perform accurate numerical calculations through a simple API.
                              Last updated -
                              13
                              13
                              TypeScript
                              MIT License
                            • A
                              security
                              A
                              license
                              A
                              quality
                              A Model Context Protocol server that enables LLMs to perform precise numerical calculations by evaluating mathematical expressions.
                              Last updated -
                              1
                              48
                              Python
                              MIT License
                              • Linux
                              • Apple
                            • -
                              security
                              F
                              license
                              -
                              quality
                              A Model Context Protocol server that connects LLMs to the Compiler Explorer API, enabling them to compile code, explore compiler features, and analyze optimizations across different compilers and languages.
                              Last updated -
                              Python
                            • A
                              security
                              F
                              license
                              A
                              quality
                              A Model Context Protocol server that allows LLMs to interact with Python environments, execute code, and manage files within a specified working directory.
                              Last updated -
                              9
                              8
                              Python
                              • Linux
                              • Apple

                            View all related MCP servers

                            MCP directory API

                            We provide all the information about MCP servers via our MCP API.

                            curl -X GET 'https://glama.ai/api/mcp/v1/servers/sdiehl/sympy-mcp'

                            If you have feedback or need assistance with the MCP directory API, please join our Discord server