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 执行。

典型适用场景

  1. AI 智能体做数学辅助:代码生成、证明验证、形式化方法——需要"查工具"而非"背答案"
  2. 自动化数学工作流:搜索 → 执行 → 组合,多步精确计算流水线
  3. 图论/组合问题求解:NPC 问题的小规模精确求解(SAT solver)
  4. 形式化验证辅助:Z3 SMT 求解器集成,AI 辅助找反例
  5. 教学/探索:通过 math.find 发现某个数学领域有什么工具,支持探索式学习

坑与注意

  1. Python 3.12+ 强制要求:不支持 Python 3.11 以下,系统 Python 不达标时需要用 uvx 模式。
  2. Alpine Linux / musl 不支持:完整后端栈(SymPy + Z3 + python-flint)依赖 glibc,Alpine 需要换发行版或用 Docker。
  3. 预稳定版本:当前版本 0.15.1 标注为 pre-stable(<!-- x-release-please-version -->),正式版前可能有 breaking changes,生产环境对接前需锁定版本。
  4. 操作词汇表有限:不是完整的 CAS(计算机代数系统),每个操作的语义边界由作者定义,大型复杂问题需要组合多个操作,AI 本身的组合推理能力是瓶颈。
  5. Z3 依赖:SMT 操作直接用 Z3 Python binding,需要 Z3 在环境中可用(pip 安装 jacobian 时自动带)。
  6. 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 集成更快。