MCP Calculate Server について
SymPy を使った数学計算用の MCP サーバーで、記号代数、微積分、方程式、行列演算に対応します。制限付き評価器により任意の Python 実行を拒否し、負荷の大きい式や結果も検証します。
主な機能
- 01算術演算と記号代数
- 02微分、積分、極限の計算
- 03方程式と連立方程式の求解
- 04行列演算と固有値の計算
- 05テイラー級数展開
- 06制限付き式評価
活用シーン
- 01記号式の簡約や因数分解
- 02導関数、積分、極限の計算
- 03方程式や連立方程式の求解
- 04行列の逆行列や固有値の確認
MCP 対応
MCP クライアントに、対応する SymPy 式を評価する `calculate_expression` ツールを提供します。評価器は使用可能な名前と操作を制限し、大きすぎる式や計算量の多い処理を拒否する場合があります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Calculate Server
MCP プロトコルと SymPy ライブラリに基づく数式計算サービスで、強力な記号計算機能を提供します。
セキュリティ
バージョン 0.1.1 以降、このサーバーは制限付きの SymPy 専用評価器を通じて式を解析します。任意の Python コードは実行せず、厳選された数学記号、関数、行列メソッドのみをサポートします。
また、このリリースでは、計算コストの高い記号計算によるサービス拒否のリスクを軽減するため、過大な式や大きな結果の検証機能も追加されています。
主な機能
- 基本演算:加算、減算、乗算、除算、べき乗
- 代数演算:式の展開、因数分解、簡約
- 微積分:微分、積分(定積分/不定積分)、極限の計算
- 方程式の求解:代数方程式、連立方程式
- 行列演算:行列の逆行列、固有値/固有ベクトルの計算
- 級数展開:テイラー級数展開
- 特殊関数:三角関数、対数関数、指数関数
使用例
# Basic operations
"2 + 3*5" → 17
# Algebraic operations
"expand((x + 1)**2)" → x² + 2x + 1
"factor(x**2 - 2*x - 15)" → (x - 5)(x + 3)
# Calculus
"diff(sin(x), x)" → cos(x)
"integrate(exp(x), (x, 0, 1))" → E - 1
"integrate(exp(-x**2)*sin(x), (x, -oo, oo))" → 0
"limit(tan(x)/x, x, 0)" → 1
# Equation solving
"solve(x**2 - 4, x)" → [-2, 2]
"solve([x**2 + y**2 - 1, x + y - 1], [x, y])" → [(0, 1), (1, 0)]
# Matrix operations
"Matrix([[1, 2], [3, 4]]).inv()" → [[-2, 1], [3/2, -1/2]]
"Matrix([[1, 2, 3], [4, 5, 6]]).eigenvals()" → {9/2 - sqrt(33)/2: 1, 9/2 + sqrt(33)/2: 1}
"Sum(k, (k, 1, 10)).doit()" → 55
"series(cos(x), x, 0, 4)" → 1 - x²/2 + O(x⁴)
インストール
Smithery 経由でのインストール
Smithery 経由で Calculate Server を Claude Desktop に自動インストールするには:
npx -y @smithery/cli install @611711Dark/mcp_sympy_calculate_server --client claude
ローカルインストール
-
リポジトリをクローンします:
git clone https://github.com/611711Dark/mcp_calculate_server.git cd mcp_calculate_server -
仮想環境を作成し、依存関係をインストールします:
uv venv source .venv/bin/activate uv pip install -e . -
設定します:
"calculate_expression1": { "isActive": false, "command": "python", "args": [ "server.py" ], "cwd": "/path/to/mcp_calculate_server" }
API の使用方法
数学式の文字列を渡して、MCP プロトコル経由で calculate_expression ツールを呼び出します。パーサーは、算術演算、expand、factor、simplify、diff、integrate、limit、series、solve、Matrix(...).det()/inv()/eigenvals()/eigenvects()、および Sum(...).doit() など、制限された SymPy 式を受け付けます。
サポートされる名前
- 記号:
x、y、z、kなどの小文字の変数 - 定数:
pi、E、oo、I - 関数:
Abs、sin、cos、tan、log、exp、sqrt、expand、factor、simplify、diff、integrate、limit、series、solve、Sum、Matrix - 行列メソッド:
.det()、.inv()、.eigenvals()、.eigenvects() - SymPy メソッド:
Sum(...)など、サポート対象のオブジェクトに対する.doit()
検証ルール
任意の Python 機能、インポート、ファイルシステムへのアクセス、その他の数学以外の構成要素に依存する式は、意図的に拒否されます。 サービス拒否のリスクを軽減するため、非常に大規模な展開、計算量の多い求解、過大な結果も拒否される場合があります。 キーワード引数、プライベート属性、サポート対象外の行列メソッド、不正な形式の行列、サポート対象外の名前は、エラーメッセージとともに拒否されます。
依存関係
- mcp>=1.5.0
- sympy>=1.13.3
謝辞
紹介記事を執筆してくださったこちらのブログ記事と、サポートおよび責任ある脆弱性開示に協力してくださったStefanoに感謝します。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。