Skip to main content
Glama

シンボリック代数MCPサーバー

Sympy-MCPは、LLMが自律的に記号数学とコンピュータ代数を実行できるようにするモデルコンテキストプロトコル(CMP)サーバーです。Sympy-MCPは、数式や方程式を操作するためのSymPyコア機能の多数のツールをMCPクライアントに公開します。

なぜ?

言語モデルは記号操作が全くダメです。変数を幻覚的に解釈したり、ランダムな定数をでっち上げたり、項を並べ替えたりと、とにかくめちゃくちゃなことをします。しかし、記号操作に特化したコンピュータ代数システムがあるので、ツール呼び出しを使って一連の変換を調整し、記号カーネルがすべての重労働を担うようにすることができます。

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$を決定します。

Related MCP server: Calculator MCP Server

使用法

まず紫外線が必要です。

  • 自作- brew install uv

  • Curl - 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

計量からテンソルを計算します(リッチ、アインシュタイン、ワイルテンソル)

カスタムメトリック

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

行列の固有ベクトルを計算する

デフォルトでは、変数は仮定に基づいて事前定義されます(SymPyのsymbols()関数の動作に似ています)。特に指定がない限り、変数は複素体$\mathbb{C}$上の複素可換項であるという仮定がデフォルトで適用されます。

財産

価値

commutative

真実

complex

真実

finite

真実

infinite

間違い

クロードデスクトップセットアップ

通常、 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 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. ワンクリックセットアップ:

VS Codeにインストール

VS Code 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. サーバー設定の上にある「開始」をクリックし、Python または数学ファイルを開いて、チャットでエージェント モードに切り替え、「integrate x^2」や「solve x^2 = 1」などのコマンドを試して開始します。

クラインセットアップ

Clineで使用するには、まず「使用方法」セクションのコマンドを使用して 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 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 コンテナを起動するように指示します。この設定で Claude Desktop を使用する前に、必ず Docker イメージをビルド ( docker build -t sympy-mcp . ) してください。

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

アシスタント: (内部ツール呼び出し) x(t)を定義するintroduce_function :

{ "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{\left(t \right)} = F{\left(t \right)} $$

アシスタント: (内部ツール呼び出し) F(t)を定義するintroduce_function :

{ "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} - 4 km}\right)}{2 m}} + C_{2} e^{- \frac{t \left(c + \sqrt{c^{2} - 4 km}\right)}{2 m}} + \cdots $$

相互作用の例2:一般相対性理論

ユーザー: 反ド・ジッター時空の逆計量$g^{\mu\nu}$を使用してリッチテンソル$R_{\mu\nu}$のトレースを計算し、その定数スカラー曲率$R$を決定します。

アシスタント: (内部ツール呼び出し) create_predefined_metric Anti-de Sitter メトリックを作成します。

{ "metric_name": "AntiDeSitter" }

アシスタント: (内部ツール呼び出し) Ricci テンソルを計算するcalculate_tensor :

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

アシスタント: (内部ツール呼び出し) Ricci テンソルを表示するためのprint_latex_tensor :

{ "tensor_key": "riccitensor_metric_AntiDeSitter" }

結果:

$$ \left[\begin{matrix}3 & 0 & 0 & 0\\0 & - 3 \cos^{2}{\left(t \right)} & 0 & 0\\0 & 0 & - 3 \cos^{2}{\left(t \right)} \sinh^{2}{\left(\chi \right)} & 0\\0 & 0 & 0 & - 3 \sin^{2}{\left(\theta \right)} \cos^{2}{\left(t \right)} \sinh^{2}{\left(\chi \right)}\end{matrix}\right] $$

アシスタント: (内部ツール呼び出し) Ricci スカラーを計算するcalculate_tensor :

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

アシスタント: (内部ツール呼び出し) Ricci スカラーを表示するためのprint_latex_tensor :

{ "tensor_key": "ricciscalar_metric_AntiDeSitter" }

結果:

$$ -12 $$

セキュリティ免責事項

このサーバーはあなたのコンピュータ上で動作し、言語モデルにPythonロジックの実行権限を与えます。特に、数式を解析するためにSympyのparse_expr使用していますが、これは内部でevalを使用しているため、実質的に任意のコード実行を許してしまいます。サーバーを実行することで、Claudeが生成したコードを信頼することになります。Dockerイメージで実行すると多少安全ですが、実行前にコードを確認することをお勧めします。

ライセンス

著作権 2025 Stephen Diehl。

このプロジェクトはApache 2.0ライセンスに基づいてライセンスされています。詳細はLICENSEファイルをご覧ください。

Latest Blog Posts

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