mcpField
A
Axiom — Advanced Math

Axiom — Advanced Math

ローカル
github.com科学・教育31 週間前に更新

Axiom — Advanced Math について

Axiom — Advanced Mathは、LLMやエージェント向けの高精度な数式計算プロジェクトです。math.jsとGiac/Xcasを組み合わせ、MCPサーバー、コマンドライン、エージェントスキルとして計算や数式の検証に使えます。

主な機能

  1. 01記号・数値計算の実行
  2. 02方程式や微積分問題の解決
  3. 03恒等式や計算結果の検証
  4. 042D関数グラフをSVGで出力
  5. 05コマンドラインとエージェントスキル

活用シーン

  1. 01積分、微分、極限の計算
  2. 02連立方程式や行列問題の解決
  3. 03導出した数式の主張を検証
  4. 04スクリプト用の関数グラフ作成

MCP 対応

Axiom — Advanced Mathは、計算、主張の検証、関数の描画に使う`compute`、`verify`、`plot`ツールをMCP経由で提供します。コマンドライン単体でも実行できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"tufantunc-axiom-math": {
"command": "npx",
"args": [
"-y",
"axiom-math"
]
}
}
}
起動コマンドnpx -y axiom-math

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmaxiom-math1.0.5

ツール

3

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
domainenumいいえ領域のヒント: real(デフォルト)— 実数解 complex — 複素数解(csolve、cfactor) numeric — 数値計算を強制 exact — 厳密な記号形式real | complex | numeric | exact
formatenumいいえ出力形式: text(デフォルト)— 人間が読みやすい結果 latex — LaTeX を中心とした出力 json — 構造化された ComputeEnvelopetext | latex | json
problemstringはい解く数学の問題。明確にするため、CAS 形式の関数呼び出しを使用してください。 solve(x^2-4=0, x) — 方程式を解く diff(x^3, x) — 微分する int(x^2, x, 0, 1) — 定積分 limit(sin(x)/x, x, 0) — 極限 taylor(exp(x), x=0, 5) — テイラー級数 factor(x^2-4) — 因数分解 simplify((x^2-1)/(x-1)) — 簡約する expand((x+1)^3) — 展開する det([[1,2],[3,4]]) — 行列式 C(10,3) — 組合せ ifactor(2310) — 素因数分解 2+3*sin(pi/4) — 算術演算 または、有効な Giac/Xcas 式をフォールバックとして使用できます。
precisionnumberいいえ小数精度(デフォルト:10)

詳細

Axiom — 高度な数学 MCP サーバー

npm License: GPL v3+ Node.js >=20 MCP CI codecov

LLM 向けの厳密な記号数学と数値数学 — Model Context Protocol を介した、実際の数式処理システム(Giac/Xcas)とシェルコマンドです。axiom-math として公開されています。

誤った微分を検出し、続いて厳密な積分を計算する Axiom

クイックスタート

CLI として、すぐに使えます:

npx -y axiom-math compute 'integrate(sin(x)^3,x)'   # -cos(x)+cos(x)^3/3
npx -y axiom-math verify 'diff(x^3,x) = 3*x^2'      # exit 0 — it holds

MCP サーバーとして、任意のクライアントの設定に追加します:

{ "command": "npx", "args": ["-y", "axiom-math"] }

エージェントスキルとしては、skills/axiom-math/SKILL.md を追加してください。このファイルでは、3 つのコマンドと終了コードをエージェントに説明します。

Axiom を選ぶ理由

LLM は計算ミスをよく起こします。特に、記号数学、厳密な分数、複数ステップの問題で顕著です。Axiom は 2 つのレイヤーを通じて、検証済みの厳密な結果を提供します:

  • math.js — 高速な数値評価(算術、三角関数、行列)
  • Giac/Xcas WASM — 記号計算(微積分、代数、方程式の求解)
ベンチマーク結果(GLM-5.1、2026 年 5 月)
データセットベースライン+MCP差分
GSM8K (100)96.0%98.0%+2.0%
MATH L3 (50)70.0%80.0%+10.0%
MATH L4 (50)50.0%62.0%+12.0%
MATH L5 (50)38.0%52.0%+14.0%
CAS-quick (60)55.0%70.0%+15.0%
Omni-MATH ≥7 (50)0.0%0–4%(上限)

主な知見:

  • Phase 0 の採点器(LaTeX/Unicode の正規化と記号的同値性)が、すべてのデータセットで最も大きな価値をもたらします
  • CAS-quick は 26.7%(採点器導入前の 4 月)から 70%(導入後)に向上しました — 単一の改善としては最大の伸びです
  • Omni-MATH ≥7 は現在の LLM+CAS 構成では上限に達しており、根本的に異なるアプローチ(Lean/Coq、ファインチューニング、RAG)が必要です

完全な結果:benchmark/results/ および docs/superpowers/specs/(フェーズごとの分析)


機能

Axiom は 3 つの MCP ツールを公開します。ほとんどの処理は compute を通じて行われます。これは CAS 形式の問題文字列を解析し、適切な内部エンジンに振り分ける単一の窓口です。そのため、呼び出し側が覚えるツールは 1 つで済みます。

ツール目的
computeあらゆる数学の問題を解きます。CAS 形式の文字列(solve(...)、diff(...)、det([[...]])、C(10,3)、2+3*sin(pi/4))または任意の Giac/Xcas 式を渡します。
verify記号的および/または数値的な方法で、数学的な主張(恒等式、解、計算)を独立して検証します。
plot2D 関数グラフを SVG 画像として描画します。
compute の対象範囲

compute は CAS 形式の動詞を認識し、以下の各分野に振り分けます。認識できないものは、Gi​​ac/Xcas の生の評価にフォールスルーします。

分野動詞/例
算術と単位2+3*sin(pi/4)、100 km/h to m/s
方程式を解くsolve(x^2-4=0, x)、csolve(...)(複素数)、solve_system([x+y=5, x-y=1], [x,y])
微積分diff、int、limit、taylor、desolve(任意の階数の ODE、および線形定数係数系)
多変数微積分gradient、hessian、jacobian、divergence、curl、partial、iint/iiint(重積分)、critical_points、lagrange、tangent_plane、directional_derivative
代数factor、simplify、expand、partfrac
線形代数det、inv、eigenvals、eigenvects、rref、rank、tran、ker、qr、lu、cholesky、svd、norm、cond
数論ifactor、isprime、euler、analyze
組合せ論C(n,k)、P(n,k)、stirling、bell、catalan、derangements、multinomial
確率binomial、normal、poisson、geometric、hypergeometric、chi_square、student_t、f_distribution、beta、exponential
仮説検定t_test(1標本/2標本/対応あり)、anova、chi_square_test
数値計算法newton、bisection、secant、romberg、simpson
2D 幾何distance、midpoint、slope、area_*、perimeter、circumference、line_intersection、point_line_distance、angle_between_lines
3D 幾何distance3d、midpoint3d、dot、cross、vector_norm、angle_vectors、plane_from_points、point_plane_distance、line_plane_intersection、plane_plane_angle、line_line_distance、volume_tetrahedron、volume_sphere、volume_parallelepiped
変換と級数laplace、ilaplace、fourier/fft/ifft、sum、product
厳密値to_exact、to_decimal、simplify_fraction
回帰と数列linear_regression/fit、polynomial_regression、sequence(パターンの識別)

インストール

npm パッケージは axiom-math です。 通常の使用ではインストールは不要です。npx が取得してキャッシュします。

npx -y axiom-math compute '2+2'

または、axiom-math コマンドを PATH から実行できるようにインストールします。

npm install -g axiom-math

Node.js >= 20 が必要です。 初回実行時には約 3.8 MB(WebAssembly にコンパイルされた CAS エンジン)がダウンロードされ、数秒かかります。以降の実行では npx のキャッシュが使われます。

ソースから

コントリビューター向け、または変更したビルドを実行する場合:

git clone https://github.com/tufantunc/axiom-advanced-math-mcp.git
cd axiom-advanced-math-mcp
npm install
npm run build
Docker
# Build and run
docker-compose -f docker/docker-compose.yml up -d

# Check logs
docker-compose -f docker/docker-compose.yml logs -f

# Stop
docker-compose -f docker/docker-compose.yml down

使用方法

CLI(STDIO トランスポート)
# Run with stdio transport (default)
npm start

# Development mode
npm run dev

Claude Desktop との連携:

// ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": [
    {
      "name": "axiom-math",
      "command": "npx",
      "args": ["-y", "axiom-math"]
    }
  ]
}

npm の代わりにローカルのチェックアウトから実行するには、ビルド済みのエントリーポイントを args に指定します。

"args": ["/path/to/axiom-advanced-math-mcp/dist/cli.js"]
コマンドライン

同じバイナリを単発の CLI としても使用できるため、エージェントは MCP の設定なしでスキルとして利用できます。引数なしでは MCP サーバーとして動作し、サブコマンドを指定すると計算を 1 回実行して終了します。

npx -y axiom-math compute 'integrate(sin(x)^3,x)'
npx -y axiom-math compute -q 'solve(x^2-4=0,x)'     # {-2, 2}
npx -y axiom-math verify 'sin(x)^2+cos(x)^2 = 1'    # exit 0 if true
npx -y axiom-math plot 'sin(x)' -o wave.svg
echo 'diff(x^3,x)' | npx -y axiom-math compute -q   # 3*x^2
フラグ意味
-qスクリプト用に値だけを出力します
--json構造化出力
--latexLaTeX に特化したテキスト(compute のみ)
-h、--help使用方法、またはサブコマンドの使用方法

終了コード:0 成功 · 1 ツールまたは使用方法のエラー · 2 verify が主張を検証し、偽と判定しました。

2 は数学的な判定を示すため、検証されなかった主張には使われません。解析に失敗したもの、CAS が評価できないもの、または複数の解釈が可能な上付き文字を含むものは、標準出力に何も出さずに 1 で終了します。そのため、axiom-math verify '...' && ... が構文エラーを反証として扱うことはありません。

すぐに使えるエージェントスキルは skills/axiom-math/SKILL.md にあります。

HTTP トランスポート
# Start HTTP server (default: http://127.0.0.1:3000)
npm run start:http

# Development HTTP
npm run dev:http

HTTP トランスポートはステートレスです。各 POST /mcp は個別に処理され、Mcp-Session-Id は発行されず、リクエスト間でセッション状態も保持されません。このサーバーはサーバー起点の通知を送信しないため、失われるものはありません。また、共有状態なしで水平スケーリングできます。

メソッドパス動作
POST/mcpJSON-RPC メッセージを処理します
GET/mcp405 — SSE ストリームは提供されません
DELETE/mcp405 — 終了するセッションはありません
GET/health準備完了時は 200、CAS エンジンが準備できていない場合は 503

セキュリティ: 認証もレート制限もありません。デフォルトのバインドアドレスは 127.0.0.1 ですが、docker/docker-compose.yml では MCP_HOST=0.0.0.0 が設定されています。ポートを公開する場合は、認証とレート制限を行うリバースプロキシの背後に配置してください。アプリケーション自身はポートを公開しない、動作確認済みの例として docker/reverse-proxy/(nginx + basic auth + クライアントごとの同時実行数上限)があります。 SECURITY.md には、保護される対象、保護されない対象、脆弱性の報告方法など、セキュリティ対策の全容を記載しています。

POST /mcp は、DNS リバインディングを防ぐため、Host ヘッダーも許可リスト(デフォルトでは localhost、127.0.0.1、[::1])と照合します。悪意のあるページは、被害者のブラウザーに攻撃者のドメインを 127.0.0.1 に解決させ、このサーバーにアクセスさせる可能性があります。ループバック以外の LAN アドレス、ホスト名、リバースプロキシのドメインを通じてサーバーにアクセスする場合は、MCP_ALLOWED_HOSTS を設定してください。設定しないと、すべての POST /mcp リクエストが 403 になります。このチェックは認証ではありません。エンドポイントにアクセスできるホスト名を制限するだけで、リクエスト元については何も制限しません。

環境変数:

変数デフォルト説明
MCP_PORT3000HTTP サーバーのポート
MCP_HOST127.0.0.1HTTP サーバーのホスト
MCP_ALLOWED_HOSTSループバックのみ(localhost、127.0.0.1、[::1])POST /mcp の Host ヘッダーに対する許可リスト。カンマ区切りで指定します(DNS リバインディング対策)。明示的に値を指定すると、デフォルトに追加されるのではなく、置き換えられます。
AXIOM_EVAL_TIMEOUT_MS10000評価ごとのタイムアウト(ミリ秒)。1 回の CAS 呼び出しおよび1 回の js-compute 呼び出し(任意精度整数の処理、算術演算、プロットのサンプリング)を制限するため、値を小さくすると両方の制限が厳しくなります。数値のみ、または ms/s の接尾辞を付けて指定できます(10000、250ms、10s)。タイマーが扱える範囲(1~2147483647ms)に制限されます。数値を含まない値、または正でない値を指定すると、警告を出して 10000 にフォールバックします。未設定または空白のみの場合は、警告なしでデフォルト値が使われます。
AXIOM_INTEGRATION_BUDGET_MSmax(3 × AXIOM_EVAL_TIMEOUT_MS, 30000)1 回の複数呼び出しを行う数値ルーチン(積分、根の探索)の実行時間上限です。AXIOM_EVAL_TIMEOUT_MS が 1 回の CAS 呼び出しを制限するのに対し、こちらは CAS 呼び出しの合計を制限します。AXIOM_EVAL_TIMEOUT_MS と同様に検証され、無効な値は標準エラー出力に表示されます。
AXIOM_JS_COMPUTE_HEAP_MB512任意精度整数の処理と mathjs の評価を実行する子プロセスのヒープ上限です。この上限を超えると、原因となった計算は失敗します。キューに入って後続する呼び出しは置き換え後のワーカーに再送され、サーバーは稼働を続けます。整数の MB 単位で指定でき、接尾辞は任意です(512、512MB、2GB)。値は整数 MB に切り捨てられ、[16, 1048576] の範囲に制限されます。指定値を超える上限に緩和されることはありません。16 未満では子プロセスを起動できず、1048576 を超える場合はこのサーバーが上限を適用します(V8 はそれ以上の値を受け付けますが、約 1.76e13 を超えると size_t の演算がオーバーフローし、要求した値よりも小さいヒープになります)。数値を含まない値のみ 512 にフォールバックします。補正内容はすべて標準エラー出力に表示されます。mathjs を使用するツール(quick_calc、plot)には 48 以上が必要です。実測では、起動時のインポートに約 46MB 必要で、44MB では失敗します。これを下回る場合、ワーカー障害として失敗するのではなく、原因を示してツール名で拒否されます。
AXIOM_COMPUTE_HYGIENE未設定1 に設定すると、計算結果の後処理を有効にします。

設定できない上限もあります。100,000 文字を超える結果は返されず、拒否されます。そのため、1:2000000 のような式では、呼び出し元のコンテキストに 2,400 万文字を送る代わりに、要素数が報告されます。

答えに意味がない入力は、回答せずに拒否されることがあります。NaN(0/0 など)になる算術演算はエラーです。無限大の結果は警告付きで返されます。真の無限大と、倍精度の範囲を超えてオーバーフローした値は、計算後には区別できないためです。t 検定では、実際に検定する対象にばらつきが必要です。paired_t では差を比較するため、差にばらつきが必要です。一方、Welch の two_sample_t では、2 つの標本のうち片方にばらつきがあれば十分です。分割表では、カウントが非負であること、すべての値がゼロの行または列がないこと、各行の長さが等しいこと、行と列がそれぞれ 2 つ以上あることが必要です。一元配置 ANOVA では、群内にばらつきがあり、観測数が群数より多いことが必要です。また、統計量自体が無限大にオーバーフローするほど値が大きい場合は、いずれの計算も拒否されます。オーバーフローした統計量は、もはや本来の統計量ではないためです。数値計算法は、解く対象または積分対象の変数に式が依存していない場合、あるいは CAS が数値ではなく記号式で回答した場合に拒否されます。以前は、その記号式の先頭の項が結果として報告されていました。 リストとして記述された微分方程式系 — desolve([y'=z, z'=-y], x) — は、CAS が解く行列形式に書き換えられ、各関数の解が返されます。各成分は方程式を記述した順に返されます。また、[[cos(x),-sin(x)]] だけでは解釈できないため、JSON のエンベロープでは components フィールドに関数名が示されます。

初期条件は、すべての関数について同じ点で指定するか、まったく指定しない必要があります。一部の関数にだけ指定した場合、無視されるのではなく拒否されます。また、次のケースも、それぞれ固有の理由で拒否されます。不明関数について線形でない系、係数が独立変数に依存する系、2 階を超える導関数(y''=z は y'=w, w'=z のように書き換えてください)、方程式が 9 個を超える系、そして CAS が解ききれない系です。

無限大の結果に関するルールは、算術評価にも適用されます。CAS が返す記号的な +infinity — 極限や発散する積分など — は通常の回答であり、警告は付きません。

MCP Inspector
npm run inspect

ツールリファレンス

compute

あらゆる数学処理の単一ゲートウェイです。CAS 形式の問題文字列を渡すと、ルーターが解析し、適切なエンジンに振り分けます。

パラメーター型説明
problemstring (必須)CAS 形式の問題。例:solve(x^2-4=0, x)、diff(x^3, x)、det([[1,2],[3,4]])、gradient(x^2+y^2, [x,y])。
domainreal | complex | numeric | exact定義域のヒント(デフォルトは real)。complex → 複素数解、numeric → 数値計算法を強制、exact → 厳密な記号形式。
precisioninteger 1–50小数点以下の桁数(デフォルトは 10)。
formattext | latex | json出力形式(デフォルトは text)。json は構造化されたエンベロープを返します。

例:

{ "problem": "solve(x^2 - 5*x + 6 = 0, x)" }
{ "problem": "int(x^2*sin(x), x)", "format": "latex" }
{ "problem": "lagrange(x*y, x+y, 1, [x, y])" }
{ "problem": "volume_tetrahedron([0,0,0],[1,0,0],[0,1,0],[0,0,1])" }
{ "problem": "binomial cdf n=10 k=3 p=0.5", "format": "json" }
verify

数学的な主張を独立して検証します。モデルが生成した結果に対する、ツールに基づくセカンドオピニオンとして便利です。

パラメーター型説明
claimstring (必須)主張。例:"sin(x)^2 + cos(x)^2 = 1"(恒等式)、"x=2 satisfies x^2-4=0"(解)、"diff(x^3, x) = 3*x^2"(計算結果)。
methodnumeric | symbolic | both検証方法(デフォルトは both)。

次の 4 つのフィールドを返します:verified、evaluated、confidence、checks_performed。

最初に確認すべきなのは evaluated です。検証によって利用可能な回答が得られなかった場合 — 主張を解析できなかった、CAS が評価できなかった、または上付き文字に複数の解釈がある場合 — これは false になります。その場合、verified: false は「反証された」ではなく「不明」を意味します。この 2 つを同一視すると、構文エラーが反証として扱われてしまいます。

plot

2D 関数を SVG 画像として描画します。

パラメーター型説明
expressionstring (required)描画する関数。例:"sin(x)"、"x^2 - 3*x + 1"。
variablestring変数名(デフォルトは x)。
x_min, x_maxnumberX の範囲(デフォルトは −10 … 10)。
y_min, y_maxnumberY の範囲(省略時は自動検出されます)。
width, heightnumber画像サイズ(px、デフォルトは 600 × 400)。
titlestringオプションのグラフタイトル。

base64 エンコードされた SVG 画像(軸、グリッド、ラベル、漸近線の検出を含む)とテキストのキャプションを返します。

Prompts

このサーバーは、複数ステップのワークフロー向けに compute/verify を連鎖させる、ガイド付き MCP プロンプトも登録します:solve-step-by-step、analyze-function、verify-identity、convert-units、analyze-dataset、solve-ode-system、regression-workflow。


ベンチマークの実行

デフォルトの本番用レシピ(grader-v2 は自動的に含まれます):

cd benchmark
npm install

# Set provider API key (one of):
export ZAI_API_KEY=...
export ANTHROPIC_API_KEY=...
export OPENROUTER_API_KEY=...

# Run benchmarks (provider defaults from --zai/--anthropic/--openrouter flags)
npm run cas:quick:zai      # CAS-quick (60 problems, ~30 min)
npm run gsm8k:quick:zai    # GSM8K-quick (100 problems, ~30 min)
npm run math:quick:zai     # MATH L3-L5 quick (150 problems, ~75 min)
オプションのアブレーション機能(デフォルトではオフ)
  • --features=output-hygiene — ツール出力の後処理(Unicode の正規化、オプションの簡略化、サイレント失敗の警告)。実測では CAS でわずか +1pp。
  • --features=grader-v3 — 方程式の RHS 抽出+カンマ区切りの集合の直接照合。CAS でわずか +1pp。
  • --features=self-consistency — N=3 の多数決(分散を低減、コストは 3 倍、CAS では精度向上なし)。

例:

npm run cas:quick:zai -- --features=output-hygiene,grader-v3

各フラグの実測アブレーション分析については、docs/superpowers/specs/2026-05-*-results.md を参照してください。

効果がなかった試み

このプロジェクトでは、5 つのフェーズ(Phase 0–4)にわたって広範なアブレーションを実施しました。以下の実験的なアプローチは実測でテストされ、採用を見送られました:

  • Phase 1:\boxed{} の末尾付加を伴う構造化 JSON 出力 — モデルが boxed の内容を LaTeX 形式に言い換え、回答の抽出に支障が生じました。CAS で総合的に性能が低下しました。
  • Phase 2:8K トークンの予算(tokens-8k) — 切り詰めからの回復ではなく、モデルが無関係な方向に進む余地を増やしました。CAS で総合的に −6.7pp の性能低下となりました。
  • Phase 3:精度向上のための自己一貫性 — N=3 の投票では精度が向上しませんでした(Wang らの文献で報告された向上は CAS では再現できませんでした)。分散低減のための手法としてのみ残しています。
  • Phase 4:オリンピック数学専用の足場かけプロンプト — 応答性は向上しました(ツール呼び出しなしの割合が 84% → 74%)が、精度は 0% のままでした。オリンピック数学レベルの問題は、プロンプトエンジニアリングによる介入の対象外です。

各フェーズの問題ごとの分析は、docs/superpowers/specs/2026-05-*-results.md にあります。失敗に関する率直な記録は、プロジェクトのアーカイブとして保存されています。


アーキテクチャ

計算ゲートウェイ → ルーター → ドメインハンドラー
┌─────────────────────────────────────────────────────────────┐
│              MCP Protocol Layer (stdio / HTTP)               │
└─────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        ▼                     ▼                     ▼
   ┌─────────┐          ┌──────────┐          ┌─────────┐
   │ compute │          │  verify  │          │  plot   │
   └────┬────┘          └──────────┘          └─────────┘
        │  route() → extract args → dispatch
        ▼
┌─────────────────────────────────────────────────────────────┐
│  Domain handlers: calculus, algebra, matrix, multivariable,  │
│  geometry / geometry3d, combinatorics, probability,          │
│  hypothesis testing, number theory, numerical methods, …     │
└─────────────────────────────────────────────────────────────┘
        │                     │                     │
        ▼                     ▼                     ▼
┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│   math.js    │     │  Giac/Xcas   │     │ Exact engine │
│ (numerical)  │     │  (symbolic)  │     │ (fractions)  │
└──────────────┘     └──────────────┘     └──────────────┘

compute が呼び出し元にハンドラーの選択を求めることはありません。ルーターが問題文を順序付けられたルールと照合し、一致した抽出器が引数を解析し、ディスパッチャーが対応するドメインハンドラーを呼び出します。一致する入力がない場合は、raw Giac/Xcas にフォールスルーします。

応答形式

テキスト形式の応答は行ごとに構成されており、LLM(およびベンチマークの採点器)が回答を確実に抽出できます:

{
  "content": [
    { "type": "text", "text": "Result: 400/11" },
    { "type": "text", "text": "Decimal: 36.3636363636" },
    { "type": "text", "text": "LaTeX: \\frac{400}{11}" },
    { "type": "text", "text": "" },
    { "type": "text", "text": "The answer is 400/11 (≈ 36.36)" }
  ],
  "isError": false
}

ベンチマーク結果

データセット
データセット問題数難易度
GSM8K100小学校レベルの数学(算術)
MATH L350高校数学
MATH L450高度な高校数学
MATH L550オリンピックレベルの数学
Omni-MATH ≥750専門家レベルの数学
実行方法

コマンドについては、上記のベンチマークの実行を参照してください。簡単に言うと、リポジトリのルートから次のように実行します。

npm run benchmark:zai         # quick sample, GLM-5.1
npm run benchmark:full:zai    # all datasets
npm run benchmark:l5:zai      # one difficulty tier

プロバイダーを変更するには、:zai を :openrouter に置き換えます。benchmark/ ディレクトリは個別の npm プロジェクトで、より細かいスクリプト(cas:quick:zai、gsm8k:quick:zai、…)を用意しています。ルートから実行する npm run benchmark:* は、それらに処理を委譲します。

環境変数:

変数必要なプロバイダー説明
ZAI_API_KEYzai プロバイダーz.ai API キー
OPENROUTER_API_KEYopenrouter プロバイダーOpenRouter API キー

開発

スクリプト
コマンド説明
npm run buildTypeScript を dist/ にコンパイルし、WASM アセットをコピーします
npm startSTDIO サーバーを実行します
npm run dev開発モード(tsx)で実行します
npm run start:httpHTTP サーバーを実行します
npm run dev:http開発モードで HTTP サーバーを実行します
npm testユニットテスト — ビルドは不要です
npm run test:integration統合テスト — 最初にビルドし、dist/ をテストします
npm run test:watchウォッチモードでユニットテストを実行します
npm run test:coverageカバレッジレポート付きでユニットテストを実行します
npm run typecheck出力せずに型チェックします
npm run lintoxlint で lint を実行します
npm run lint:fixlint の問題を自動修正します
npm run formatPrettier でフォーマットします
npm run format:check書き込みを行わずにフォーマットをチェックします
npm run inspectstdio サーバーに対して MCP Inspector を開きます
テスト

テストスイートは分かれています。npm test はユニットテストを実行し、ビルドは不要です。npm run test:integration は最初にビルドして、パッケージ化された dist/ の出力をテストするため、ユニットテストでは検出できない、配布されるバイナリの引数振り分け、MCP ハンドシェイク、終了コードなどを検出できます。

npm test                  # unit
npm run test:integration  # integration (runs npm run build first)
npm run test:watch        # unit, watch mode
npm run test:coverage     # unit, with coverage

テストカバレッジ: ユニットテストと統合テストの成功率は 100% です。現在の件数は頻繁に変わるため、npm test を実行して確認してください。ここでは数値を記載していません。

WASM ビルド(Giac)
npm run build:giac:wasm

# Build a specific upstream ref instead of master
GIAC_REF=v1.9.x npm run build:giac:wasm

このコマンドは scripts/build-giac-wasm.sh を実行します。このスクリプトは docker build で docker/build-giac-wasm/Dockerfile をビルドし(Compose ファイルは使用しません)、giac.wasm.js を src/server/giac/ に直接書き出すため、手動でコピーする必要はありません。Docker Desktop(または別の Docker デーモン)がローカルで実行されている必要があります。タスクごとのビルドログは logs/giac-build/ に保存されます。


貢献

バグ報告やプルリクエストを歓迎します。環境のセットアップ方法、CI で実行されるチェック、このコードベースを読むだけでは分かりにくい点については、CONTRIBUTING.mdを参照してください。


ライセンス

GNU General Public License v3.0 or later — 詳細はLICENSEを参照してください。

Axiom には Giac/Xcas が組み込まれており、同ソフトウェアは GPL-3.0-or-later でライセンスされているため、結合作品にも同じライセンスが適用されます。詳細とクレジットについては、THIRD-PARTY-NOTICES.mdを参照してください。

GPL はエージェントに影響しますか?

いいえ。 エージェントは Model Context Protocol を介して Axiom と通信します。これは、stdio または HTTP を使う別プロセスです。別々のプログラムが独立して通信する場合、それらは結合作品ではないため、Axiom を独自のエージェントと並行して実行しても、どのライセンスを使用しているかにかかわらず、コードにライセンス上の義務は生じません。サービスとしての実行を含め、GPL の下でソフトウェアを実行することに制限はありません。

コピーレフト条項が適用されるのは、Axiom 自体を再配布する場合、つまり変更の有無を問わず、他者に提供する製品に組み込んで同梱する場合です。その場合は、GPL-3.0 に基づいてソースコードを提供し、通知をそのまま保持してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。