
Axiom — Advanced Math
io.github.tufantunc由 GitHub 帳號 tufantunc 發布v1.0.5更新於 Oct 27, 2026
Exact symbolic math for LLMs: integrals, equations, matrices, and claim verification via Giac/Xcas
發布方自己的服務:Axiom
概覽
本機 MCP 伺服器,透過 Giac/Xcas 與 math.js 讓助理進行精確的符號與數值數學運算:求解、驗證命題、繪製函數圖。
- 可以做什麼
- 以 CAS 風格字串求解數學問題:算術與單位、方程式與方程組、微積分、多變數微積分、代數、線性代數、數論、組合、機率、假設檢定、數值方法、二維與三維幾何、變換與級數、精確值、迴歸與數列
- 以符號、數值或兩者並用的方式驗證數學命題,回傳是否成立、是否成功求值、信心程度與檢查次數
- 將二維函數繪製為可設定範圍、尺寸與標題的 SVG 圖像
- 提供串接求解與驗證的引導式提示,用於逐步求解、函數分析、恆等式驗證、單位換算、資料集分析、微分方程組與迴歸
- 適用情境
- 當助理需要可信的精確結果而非憑空推算的算術時值得加入:符號積分與微分、解方程式、矩陣運算、統計,或對模型產生的結論做第二次核對。也可當作一次性命令列工具使用,不需設定 MCP。
- 執行需求
- 以 stdio 方式在本機執行,通常透過 npx 啟動 npm 套件 axiom-math。需要 Node.js 20 或更新版本;首次執行會下載約 3.8 MB 的 WebAssembly 運算引擎。日常使用不需帳號、API 金鑰或環境變數。另有選用的 HTTP 模式,涉及 MCP_PORT、MCP_HOST、MCP_ALLOWED_HOSTS 以及逾時與堆積記憶體變數。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Axiom — Advanced Math,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Axiom — Advanced Math MCP Server
[npm] [License: GPL v3+] [Node.js >=20] [MCP] [CI] [codecov]
Exact symbolic and numerical mathematics for LLMs — a real computer algebra
system (Giac/Xcas) behind the Model Context Protocol, and behind a shell
command. Published as axiom-math.
[Axiom catching a wrong derivative, then computing an exact integral]
Quick start
As a CLI, straight away:
As an MCP server, in any client's config:
As an agent skill — drop in skills/axiom-math/SKILL.md, which teaches an agent the three commands and their exit codes.
Why Axiom?
LLMs often make calculation errors, especially with symbolic math, exact fractions, and multi-step problems. Axiom provides verified, exact results through two layers:
- math.js — Fast numerical evaluation (arithmetic, trigonometry, matrices)
- Giac/Xcas WASM — Symbolic computation (calculus, algebra, equation solving)
Benchmark Results (GLM-5.1, May 2026)
Key insights:
- Phase 0 grader (LaTeX/Unicode normalization + symbolic equivalence) is the dominant value driver across all datasets
- CAS-quick lifted from 26.7% (April pre-grader) to 70% (post-grader) — the biggest single jump
- Omni-MATH ≥7 is at ceiling for current LLM+CAS setups; needs fundamentally different approaches (Lean/Coq, fine-tuning, RAG)
Full results: benchmark/results/ and docs/superpowers/specs/ (per-phase analysis)
Features
Axiom exposes 3 MCP tools. Almost everything flows through compute, a single gateway that parses a CAS-style problem string and routes it to the right internal engine — so callers learn one tool, not dozens.
What compute covers
compute recognizes CAS-style verbs and dispatches across these domains. Anything it doesn't recognize falls through to raw Giac/Xcas evaluation.
Installation
The package is axiom-math on npm.
Nothing to install for normal use — npx fetches and caches it:
Or install it so the axiom-math command is on your PATH:
Node.js >= 20 required. The first run downloads about 3.8 MB (the CAS engine compiled to WebAssembly) and takes a few seconds; later runs come from the npx cache.
From source
For contributors, or to run a modified build:
Docker
Usage
CLI (STDIO Transport)
Claude Desktop integration:
Running from a local checkout instead of npm — point args at the built entry
point:
Command line
The same binary works as a one-shot CLI, so agents can use it as a skill with no MCP configuration. With no arguments it is the MCP server; with a subcommand it runs one computation and exits.
Exit codes: 0 success · 1 tool or usage error · 2 verify checked the
claim and it is false.
2 is a mathematical verdict, so a claim that never got checked does not use
it: one that fails to parse, that the CAS cannot evaluate, or that has a
superscript with more than one reading, exits 1 with nothing on stdout.
axiom-math verify '...' && ... therefore never reads a syntax error as a
disproof.
A ready-to-use agent skill is in skills/axiom-math/SKILL.md.
HTTP Transport
The HTTP transport is stateless: every POST /mcp is handled independently,
no Mcp-Session-Id is issued, and no session state is kept between requests.
This server sends no server-initiated notifications, so nothing is lost — and it
scales horizontally with no shared state.
Security: there is no authentication and no rate limiting. The default bind address is
127.0.0.1, butdocker/docker-compose.ymlsetsMCP_HOST=0.0.0.0. If you expose the port, put it behind a reverse proxy that authenticates and rate-limits —docker/reverse-proxy/is a working, tested one (nginx + basic auth + per-client concurrency cap, with the app publishing no port of its own). SECURITY.md documents the full posture — what is protected, what is not, and how to report a vulnerability.
POST /mcpalso validates theHostheader against an allowlist (localhost,127.0.0.1,[::1]by default) to block DNS rebinding — a malicious page can make a victim's browser resolve an attacker domain to127.0.0.1and reach this server through it. If you reach the server by a LAN address, hostname, or reverse-proxy domain other than loopback, setMCP_ALLOWED_HOSTSor everyPOST /mcprequest will get a403. This check is not authentication — it only constrains which host names may reach the endpoint, nothing about who is asking.
Environment variables:
One bound is not configurable: a result over 100,000 characters is refused
rather than returned, so an expression like 1:2000000 reports its element count
instead of shipping 24 million characters into the caller's context.
Some inputs are refused rather than answered, because any answer would be
meaningless. Arithmetic that evaluates to NaN (such as 0/0) is an error; an
infinite result is returned with a warning, because a true infinity and a value
that overflowed the range of a double are indistinguishable once computed. A
t-test needs variation in whatever it actually tests — paired_t compares the
differences, so it is those that must vary, while Welch's two_sample_t needs
only one of the two samples to vary. A contingency table needs non-negative
counts, no all-zero row or column, rows of equal length, and more than one row
and column. A one-way ANOVA needs some within-group variation and more
observations than groups. And any of these is refused when the values are large
enough that the statistic itself overflows to infinity, because an overflowed
statistic is no longer the statistic. A numerical method is refused when its
expression does not depend on the variable it is solved or integrated over, or
when the CAS answers symbolically rather than with a number — previously the
leading term of that symbolic answer was reported as the result.
A system of differential equations written as a list — desolve([y'=z, z'=-y], x) — is rewritten into the matrix form the CAS solves and returns a solution for
every function. The components come back in the order the equations were written,
and the JSON envelope names them in a components field, because
[[cos(x),-sin(x)]] is not interpretable without it.
Initial conditions must be given for every function, at the same point, or not at
all — a partial set is refused rather than ignored. Also refused, each with its
own reason: a system that is not linear in the unknown functions; coefficients
that depend on the independent variable; a derivative of order above one (rewrite
y''=z as y'=w, w'=z); more than nine equations; and a system the CAS cannot
finish.
The infinite-result rule covers arithmetic evaluation. A symbolic +infinity
from the CAS routes — a limit, a divergent integral — is a normal answer and
carries no warning.
MCP Inspector
Tool Reference
compute
The single gateway for all math. Pass a CAS-style problem string; the router parses it and dispatches to the right engine.
Examples:
verify
Independently check a mathematical claim. Useful as a second, tool-grounded opinion on a result the model produced.
Returns four fields: verified, evaluated, confidence, and checks_performed.
evaluated is the one to read first. It is false when no check produced a
usable answer — the claim did not parse, the CAS could not evaluate it, or it
has a superscript with more than one reading — in which case verified: false
means "unknown", not "refuted". Treating the two as
the same turns a syntax error into a disproof.
plot
Render a 2D function as an SVG image.
Returns a base64-encoded SVG image (axes, grid, labels, asymptote detection) plus a text caption.
Prompts
The server also registers guided MCP prompts that chain compute/verify for multi-step workflows: solve-step-by-step, analyze-function, verify-identity, convert-units, analyze-dataset, solve-ode-system, and regression-workflow.
Run Benchmarks
Default production recipe (grader-v2 included automatically):
Optional ablation features (off by default)
--features=output-hygiene— tool output post-processing (Unicode normalize, optional simplify, silent-failure warning). Marginal +1pp on CAS in live measurement.--features=grader-v3— equation-RHS extraction + bare-comma-list set match. Marginal +1pp on CAS.--features=self-consistency— N=3 majority voting (variance reduction; 3× cost; no accuracy gain on CAS).
Example:
See docs/superpowers/specs/2026-05-*-results.md for live ablation analysis of every flag.
What we tried that didn't work
This project went through extensive ablation across five phases (Phase 0–4). The following experimental approaches were tested live and rejected:
- Phase 1: Structured JSON output with
\boxed{}trailers — model paraphrased boxed content into LaTeX style, breaking answer extraction. Net regression on CAS. - Phase 2: 8K token budget (
tokens-8k) — gave the model more room to wander rather than recovering from truncation. Net regression −6.7pp on CAS. - Phase 3: Self-consistency for accuracy — N=3 voting did not lift accuracy (Wang et al. literature gain not reproducible on CAS); kept as a methodology tool for variance reduction only.
- Phase 4: Olympiad-specific scaffolding prompt — engagement improved (no-tool-call rate 84% → 74%) but accuracy stayed at 0%. Olympiad-tier problems are out of scope for prompt-engineering interventions.
Each phase's per-problem analysis is in docs/superpowers/specs/2026-05-*-results.md. The honest documentation of failures is preserved as a project archive.
Architecture
Compute gateway → router → domain handlers
compute never asks the caller to pick a handler. The router matches the problem string against ordered rules, the matching extractor parses arguments, and the dispatcher calls the corresponding domain handler. Unmatched input falls through to raw Giac/Xcas.
Response Format
Text-format responses are line-structured so LLMs (and the benchmark grader) can extract answers reliably:
Benchmark Results
Datasets
How to Run
See Run Benchmarks above for the commands. In short, from the repository root:
Swap :zai for :openrouter to change provider. The benchmark/ directory is
a separate npm project with finer-grained scripts (cas:quick:zai,
gsm8k:quick:zai, …); npm run benchmark:* from the root delegates to them.
Environment variables:
Development
Scripts
Testing
The suites are split. npm test runs the unit tests and needs no build;
npm run test:integration builds first and exercises the packaged dist/
output, so it catches things the unit suite cannot — the shipped binary's
argument dispatch, the MCP handshake, exit codes.
Test coverage: unit + integration suite, 100% pass rate. Run npm test for the current count — it changes too often to keep a number here in sync.
WASM Build (Giac)
This runs scripts/build-giac-wasm.sh, which builds
docker/build-giac-wasm/Dockerfile with docker build (no Compose file
involved) and writes giac.wasm.js straight into src/server/giac/ — no
manual copy step needed. Requires Docker Desktop (or another Docker daemon)
running locally. Per-task build logs land under logs/giac-build/.
Contributing
Bug reports and pull requests are welcome — see CONTRIBUTING.md for the setup, the checks CI runs, and the few things about this codebase that are not obvious from reading it.
License
GNU General Public License v3.0 or later — see LICENSE.
Axiom embeds Giac/Xcas, which is GPL-3.0-or-later, so the combined work carries the same license. Details and attribution: THIRD-PARTY-NOTICES.md.
Does the GPL affect my agent?
No. Your agent talks to Axiom over the Model Context Protocol — a separate process, over stdio or HTTP. Separate programs communicating at arm's length are not a combined work, so running Axiom alongside your own agent puts no license obligation on your code, whatever license it uses. Running the software is unrestricted under the GPL, including running it as a service.
The copyleft terms apply when you redistribute Axiom itself — shipping it (modified or not) inside a product you hand to someone else. In that case, pass along the source under GPL-3.0 and keep the notices intact.
來源:README.md,提交 0b5561f
工具
0版本歷史
1- v1.0.5最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Axiom 整合

Axiom
co.axiom官方發布者
Axiom 是一個遠端 MCP 伺服器,讓助理列出資料集與結構定義、執行 APL 查詢,並使用提示詞進行探索、異常與監控工作。
Axiom Lab — AI Pitch Deck & Business Video MCP
由 GitHub 帳號 Axiom-lab-tech 發布
遠端 MCP 伺服器,可將簡報、投影片、產品照片與需求文件轉成經品管檢查的商業影片,付費算圖前先免費產生方案。

Axiom Meridian
由 GitHub 帳號 abeljumanuel 發布
一個本機 MCP 伺服器,將團隊的程式碼規則與經驗教訓以 Markdown 建立索引,只向助理提供與目前專案或任務相關的那一部分內容。

AXIOM
由 GitHub 帳號 dragoscv 發布
AXIOM 是給編碼代理用的事務性寫入閘門:在允許的儲存庫根目錄內規劃、檢查、預覽並原子套用檔案變更,並保留可回溯的日誌。

OWL class axiom count, body discarded
由 GitHub 帳號 sadri-dridi 發布
遠端 MCP 端點,提供一批小型、大致無狀態的實用檢查:URL 與主機名稱結構、HTTP 狀態、時區、JSON 合法性與簡單算術。