morluto/jacobian · 上手攻略
- 仓库:morluto/jacobian
- 链接:https://github.com/morluto/jacobian
- 分类:MCP · 数学库 · AI Agent 工具 · 形式化方法
- 作者:Tom
- 更新:2026-08-28
是什么
Jacobian 是一个MCP 服务器(Model Context Protocol),给 AI 智能体提供一组可搜索的、带类型的数学操作词汇表。
核心思路是:AI 智能体在处理数学问题时,不需要调用一个"大而全"的数学引擎,而是通过 math.find 发现一个语义精确的小操作,用 math.run 执行它,然后组合多个操作的结果得到复杂数学问题的解答。
每个操作的语义边界是严格定义的:它明确说明"这个操作能证明什么、不能证明什么",近似或不确定的结果会显式标注,不会假装精确。
同时它也不只是一套 MCP 工具——同样的数学库也提供 CLI 和原生 Python API,不依赖 MCP 生态也可以用。
解决什么问题
大语言模型在处理数学问题时有个根本性问题:直接问它"算一个矩阵的行列式",它可能会返回看起来合理但错误的答案,尤其是涉及精确数学(整数多项式、图论、群论)时。
Jacobian 的解决方案是把数学操作变成可验证的小单元:
- 每个操作有明确的数学后置条件(postcondition)——告诉调用者这个操作保证什么
- 结果是精确的(exact)而不是近似的——整数运算不会产生浮点误差
- 不确定的地方显式标注——不完备或不精确的情况不会藏着不说
- AI 智能体搜索而非记忆——不知道用什么操作时,
math.find搜索操作词汇表,找到后再执行
通俗理解: 它给 AI 配了一个数学工具箱,每个工具职责单一、边界清晰,AI 学会了"查工具、组合用",而不是靠记忆做数学。
快速安装
前置要求
- Node.js 20.17+ / 22.13+ / 23.5+(
npx需要) uvx(uv 的可执行版本,pip 的替代品)——需要 Python 生态时用到- Python 3.12+(如果用 Python 直接安装)
方式一:AI 智能体自动配置(推荐)
npx jacobian@latest setup
这会自动检测你使用的 AI 编程助手(Claude Code、Copilot 等),列出检测结果,在写入前让你确认。只用 setup 不会安装 Node.js、Python、uv 或 AI 智能体本身。
预览模式(不实际写入):
npx jacobian@latest setup --codex --dry-run
静默模式(用于自动化脚本,必须配合明确的 agent 标志):
npx jacobian@latest setup --all --yes
方式二:Python 直接安装
python -m pip install jacobian
jacobian-mcp
这会安装完整的 Python 后端栈(SymPy、NetworkX、Z3、python-flint),并启动 MCP 服务器。测试过的版本组合:CPython 3.12 / 3.13 + glibc Linux x86-64。Alpine Linux(musl)无法安装完整后端栈。
方式三:通过 uvx 免安装
不需要 Python 在 PATH 时,用 uvx 直接跑:
uvx --from jacobian jacobian-mcp
npm 用户对应的单行命令:
npx jacobian mcp
核心用法
MCP 接口:math.find + math.run
在 MCP Host(如 Claude Code、Cline)里,Jacobian 暴露两个核心工具:
查找操作(math.find):
- 输入:关键词、语义描述、或领域名称
- 输出:匹配的操作列表,每个带类型签名 + 后置条件说明
- 用法示例:想找图的最短路径 → 搜索 graph shortest path
执行操作(math.run): - 输入:操作名称 + 符合 schema 的参数 - 输出:精确的数学结果(JSON 格式) - 只执行一次,不做复杂工作流——多个操作由 AI 组合
CLI 用法(本地终端)
# 查看某个操作的合同
jacobian inspect integer.compute.extended_gcd
# 运行一个操作
jacobian run integer.compute.extended_gcd --json '{"left":"84","right":"30"}'
# 输出:gcd 和 Bézout 系数
内置数学领域覆盖
Jacobian 内置操作覆盖以下领域(后端依赖注明):
| 领域 | 涉及内容 | 主要后端 |
|---|---|---|
| 多项式 | 多项式映射、多项式代数 | SymPy |
| 精确线性代数 | 行列式、矩阵分解、特征值(精确) | SymPy / python-flint |
| 图论 | 路径、染色、同构、距离矩阵 | NetworkX |
| SAT / SMT | 有界可满足性求解、约束求解 | Z3(Python binding) |
| 有限代数/概率/几何/拓扑 | 有限群、概率计算、几何计算 | SymPy + 自实现 |
⚠️ SAT/SMT 操作直接调用 Z3 Python binding,使用时需确认 Z3 已在环境中安装。
MCP 配置示例(Claude Code)
安装后,在 Claude Code 的 MCP 配置文件(~/.claude/mcp.json 或项目 .mcp.json)中添加:
{
"mcpServers": {
"jacobian": {
"command": "uvx",
"args": ["--from", "jacobian", "jacobian-mcp"]
}
}
}
重启 Claude Code 后,说"帮我找一个整数矩阵行列式的操作",Claude Code 会调用 math.find,找到后用 math.run 执行。
典型适用场景
- AI 智能体做数学辅助:代码生成、证明验证、形式化方法——需要"查工具"而非"背答案"
- 自动化数学工作流:搜索 → 执行 → 组合,多步精确计算流水线
- 图论/组合问题求解:NPC 问题的小规模精确求解(SAT solver)
- 形式化验证辅助:Z3 SMT 求解器集成,AI 辅助找反例
- 教学/探索:通过
math.find发现某个数学领域有什么工具,支持探索式学习
坑与注意
- Python 3.12+ 强制要求:不支持 Python 3.11 以下,系统 Python 不达标时需要用 uvx 模式。
- Alpine Linux / musl 不支持:完整后端栈(SymPy + Z3 + python-flint)依赖 glibc,Alpine 需要换发行版或用 Docker。
- 预稳定版本:当前版本
0.15.1标注为 pre-stable(<!-- x-release-please-version -->),正式版前可能有 breaking changes,生产环境对接前需锁定版本。 - 操作词汇表有限:不是完整的 CAS(计算机代数系统),每个操作的语义边界由作者定义,大型复杂问题需要组合多个操作,AI 本身的组合推理能力是瓶颈。
- Z3 依赖:SMT 操作直接用 Z3 Python binding,需要 Z3 在环境中可用(pip 安装 jacobian 时自动带)。
- Node.js 版本要求较高:20.17+ / 22.13+ / 23.5+,旧版 Node.js 不支持
npx jacobian@latest setup命令。
与同类对比
| 工具 | 类型 | 数学精度 | AI 集成方式 | 操作数量 |
|---|---|---|---|---|
| Jacobian | MCP Server | 精确(exact)+ 不确定性显式标注 | MCP math.find / math.run | ~100 个操作(按领域分类) |
| Wolfram Alpha | API / SaaS | 精确 + 近似混合 | API 调用 | 完整 CAS(闭源) |
| SymPy | Python 库 | 精确符号计算 | Python 直接调用 | 完整开源 CAS |
| Z3 Python | SMT Solver | 精确(决定性) | Python 直接调用 | SMT 求解器通用 |
| ChatGPT / Claude | LLM | 近似(可能幻觉) | 对话式 | 通用 |
结论: Jacobian 的差异化在于"AI Native"——它不是给人类用的 CAS,而是专门给 AI 智能体设计的可搜索、语义边界清晰的数学操作接口。精确性靠符号计算保证,不确定性显式标注,适合需要 AI 执行可验证数学推理的场景。
一句话推荐结论
AI 智能体需要做可验证的数学推理?Jacobian 把数学操作变成"查工具、执行、组合"的三步流程,精确性由符号计算保证,不确定性显式标注——比直接问 LLM 更可靠,比自己搭 SymPy + Z3 集成更快。