# sdiehl
## 基本信息
- Slug: `sdiehl-sympy-mcp`
- Source: modelscope
- Publisher: @sdiehl/sympy-mcp
- Categories: code-execution / research-and-data / education-and-learning-tools
- Hosted: No
- License: Apache License 2.0
- Source URL: https://www.modelscope.cn/mcp/servers/@sdiehl/sympy-mcp
## 简介
暂无描述。
## MCP Server 详情

<div align="center">
  <img src=".github/logo.png" alt="Sympy MCP Logo" width="400" />
</div>

# 符号代数MCP服务器

Sympy-MCP是一个模型上下文协议（Model Context Protocol, MCP）服务器，允许大型语言模型（LLMs）自主执行符号数学和计算机代数。它向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}$计算里奇张量$R_{\mu\nu}$的迹，以确定其常数标量曲率$R$。

## 使用方法

首先你需要[uv](https://docs.astral.sh/uv/getting-started/installation/)。

- **Homebrew** : `brew install uv`
- **Curl** : `curl -LsSf https://astral.sh/uv/install.sh | sh`

然后你可以通过以下命令安装并运行服务器：

shell
# 设置项目
git clone https://github.com/sdiehl/sympy-mcp.git
cd sympy-mcp
uv sync

# 将服务器安装到Claude Desktop
uv run mcp install server.py

# 运行服务器
uv run mcp run server.py


现在你应该能在Claude Desktop应用程序中看到这个服务器了。对于其他客户端，请参见下文。

如果你想要一个完全独立版本，只需一条命令即可运行，可以使用以下命令。*注意这正在从GitHub运行任意代码，请小心。*

shell
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`](https://github.com/einsteinpy/einsteinpy)库。

shell
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` | 从度规计算张量（里奇、爱因斯坦、韦尔张量） |
| 自定义度规 | `create_custom_metric` | 从提供的组件和符号创建自定义度规张量 |
| 张量 LaTeX 输出 | `print_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` | 计算矩阵的特征向量 |

默认情况下，变量会预先定义假设（类似于 [symbols()](https://docs.sympy.org/latest/modules/core.html#sympy.core.symbol.symbols) 函数在 SymPy 中的工作方式）。除非另有说明，默认假设是变量是复数、可交换的，并且是在复数域 \(\mathbb{C}\) 上的项。

| 属性 | 值 |
|----------|-------|
| `commutative` | true |
| `complex` | true |
| `finite` | true |
| `infinite` | false |

## Claude 桌面设置

通常，`mcp install` 命令会自动将服务器添加到 `claude_desktop_config.json` 文件中。如果它没有这样做，你需要找到配置文件并添加以下内容：

* macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
* Windows: `%APPDATA%Claudeclaude_desktop_config.json`

在 `mcpServers` 对象中添加以下内容，将 `/ABSOLUTE_PATH_TO_SYMPY_MCP/server.py` 替换为 sympy-mcp `server.py` 文件的绝对路径。

json
{
  "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 设置

在你的 `~/.cursor/mcp.json` 中，添加以下内容，其中 `ABSOLUTE_PATH_TO_SYMPY_MCP` 是指向 sympy-mcp `server.py` 文件的路径。

json
{
  "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 现在支持 [代理模式](https://code.visualstudio.com/blogs/2025/04/07/agentMode) 下的 MCP。对于 VS Code，您可能需要在设置中启用 `Chat > Agent: Enable`。

1. **一键设置：**

[![在 VS Code 中安装](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](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%3Alatest%22%5D%7D)

[![在 VS Code Insiders 中安装](https://img.shields.io/badge/VS_Code_Insiders-Install_Server-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](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%3Alatest%22%5D%7D&quality=insiders)

或者手动将配置添加到您的 `settings.json`（全局）：

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


2. 单击服务器配置上方的“启动”按钮切换到聊天中的代理模式，并尝试使用命令如 "integrate x^2" 或 "solve x^2 = 1" 开始。

#…

