🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

数学操作 MCP morluto/jacobian

MCP
morluto1 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

为智能体提供可执行的数学词汇:发现一个类型化操作,运行它,并组合其结果。

67/100
综合分
352
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/morluto/jacobian.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
该类项目不使用 dsh plugin add 安装,静态安装检查不适用
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包jacobian(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 15:33:42

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 147 处,展示前 36 条)
  • 执行外部命令来自配置/变量
    npm/bin/jacobian.cjs:76
    const child = spawn(
  • 写入本地文件
    npm/carrier.test.mjs:19
    await mkdir(bin, { recursive: true });
  • 写入本地文件
    npm/carrier.test.mjs:20
    await writeFile(join(bin, "uvx"), "#!/bin/sh\nexit 0\n", "utf8");
  • 写入本地文件
    npm/carrier.test.mjs:21
    await chmod(join(bin, "uvx"), 0o755);
  • 执行外部命令来自配置/变量
    npm/carrier.test.mjs:30
    return spawnSync(process.execPath, [join(npmRoot, "bin", "jacobian.cjs"), ...args], {
  • 写入本地文件
    npm/carrier.test.mjs:104
    await writeFile(
  • 写入本地文件
    npm/carrier.test.mjs:114
    await chmod(fakeUvx, 0o755);
  • 执行外部命令来自配置/变量
    npm/carrier.test.mjs:116
    const result = spawnSync(
  • 读取本地文件
    npm/carrier.test.mjs:135
    assert.deepEqual(JSON.parse(await readFile(log, "utf8")), [
  • 删除本地文件递归
    npm/carrier.test.mjs:145
    await rm(base, { recursive: true, force: true });
  • 执行外部命令来自配置/变量
    npm/carrier.test.mjs:151
    const result = spawnSync(
  • 执行外部命令来自配置/变量
    npm/carrier.test.mjs:161
    const result = spawnSync(
  • 写入本地文件
    npm/carrier.test.mjs:176
    await writeFile(
  • 执行外部命令来自配置/变量
    npm/carrier.test.mjs:185
    const result = spawnSync(
  • 读取本地文件
    npm/carrier.test.mjs:196
    await assert.rejects(readFile(marker), { code: "ENOENT" });
  • 删除本地文件递归
    npm/carrier.test.mjs:198
    await rm(base, { recursive: true, force: true });
  • 读取本地文件
    npm/carrier.test.mjs:217
    await assert.rejects(readFile(join(env.HOME, ".codex", "config.toml")), {
  • 读取本地文件
    npm/carrier.test.mjs:220
    await assert.rejects(readFile(join(env.HOME, ".agents", "skills", "jacobian-math", "SKILL.md")), {
  • 删除本地文件递归
    npm/carrier.test.mjs:224
    await rm(base, { recursive: true, force: true });
  • 读取本地文件
    npm/carrier.test.mjs:253
    const claude = JSON.parse(await readFile(claudePath, "utf8"));
  • 读取本地文件
    npm/carrier.test.mjs:261
    const codex = await readFile(join(env.HOME, ".codex", "config.toml"), "utf8");
  • 删除本地文件递归
    npm/carrier.test.mjs:294
    await rm(base, { recursive: true, force: true });
  • 删除本地文件递归
    npm/carrier.test.mjs:316
    await rm(base, { recursive: true, force: true });
  • 删除本地文件递归
    npm/carrier.test.mjs:340
    await rm(base, { recursive: true, force: true });
  • 执行外部命令固定命令
    npm/carrier.test.mjs:787
    const pack = spawnSync(
  • 读取本地文件
    npm/lib/setup.cjs:185
    const entry = await fs.lstat(filePath).catch((error) => {
  • 读取本地文件
    npm/lib/setup.cjs:195
    return await fs.realpath(filePath);
  • 读取本地文件
    npm/lib/setup.cjs:207
    const stat = await fs.stat(selectedPath);
  • 读取本地文件
    npm/lib/setup.cjs:212
    return await fs.readFile(selectedPath, "utf8");
  • 执行外部命令固定命令
    npm/lib/setup.cjs:374
    const result = spawnSync("uvx", ["--version"], { stdio: "ignore" });
  • 读取本地文件
    npm/lib/setup.cjs:386
    const skillSource = await fs.readFile(BUNDLED_SKILL_PATH, "utf8");
  • 写入本地文件
    npm/lib/setup.cjs:427
    await fs.mkdir(path.dirname(selectedPath), { recursive: true });
  • 读取本地文件
    npm/lib/setup.cjs:428
    const originalMode = await fs.stat(selectedPath).then(
  • 写入本地文件
    npm/lib/setup.cjs:444
    await fs.rename(temporary, selectedPath);
  • 删除本地文件
    npm/lib/setup.cjs:446
    await fs.unlink(temporary).catch((error) => {
  • 删除本地文件
    npm/lib/setup.cjs:454
    await fs.unlink(filePath).catch((error) => {
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 发现类型化操作
  • 运行数学操作
  • 组合操作结果

可组合的数学工具,供智能体使用

README

由 DeepSeek 最新模型翻译生成
English · 简体中文 Jacobian 为智能体提供可执行的数学词汇:发现一个类型化操作,运行它,并组合其结果。 Jacobian 是一个 MCP 服务器,为 AI 智能体提供一套可搜索、类型化的数学操作。math.find 用来匹配候选操作或读取一个操作的精确契约,math.run 执行该契约并返回类型化结果。同样的数学库也可以通过 CLI 和原生 Python API 直接使用。 每个操作只确立一个稳定、可复用的数学后置条件,而不是规定工作流或证明策略。声称精确的地方就会保持精确,近似、不完备或不确定性也会显式标出。 Jacobian 的假设是:数学推理会受益于一套语义范围明确、有界且可执行的词汇。 与其提供庞大的领域求解器或预先排好的工作流,Jacobian 只提供可搜索、可组合的数学原语——智能体可以把它们拼成超出单个操作设计目标的解法。库负责提供可信的数学步骤,模型决定怎么选、怎么组合、何时停。操作保持语义范围明确并由所属领域维护,避免把某种证明策略固化到工具里。 更多关于语义原子性的讨论,见可执行的数学词汇。
展开完整文档(README 剩余 1 节)
English · 简体中文

Jacobian

为智能体提供可执行的数学词汇:发现一个类型化操作,运行它,并组合其结果。

Jacobian 是一个 MCP 服务器,为 AI 智能体提供一套可搜索、类型化的数学操作。math.find 用来匹配候选操作或读取一个操作的精确契约,math.run 执行该契约并返回类型化结果。同样的数学库也可以通过 CLI 和原生 Python API 直接使用。

每个操作只确立一个稳定、可复用的数学后置条件,而不是规定工作流或证明策略。声称精确的地方就会保持精确,近似、不完备或不确定性也会显式标出。

Jacobian 的假设是:数学推理会受益于一套语义范围明确、有界且可执行的词汇。 与其提供庞大的领域求解器或预先排好的工作流,Jacobian 只提供可搜索、可组合的数学原语——智能体可以把它们拼成超出单个操作设计目标的解法。库负责提供可信的数学步骤,模型决定怎么选、怎么组合、何时停。操作保持语义范围明确并由所属领域维护,避免把某种证明策略固化到工具里。

更多关于语义原子性的讨论,见可执行的数学词汇。

快速开始

用一条命令为你的智能体配好 Jacobian,需要 Node.js 20.17+、22.13+ 或 23.5+,并确保 uvx 在 PATH 中:

npx jacobian@latest setup

它会检测已安装的智能体,让你在写入前确认改动。它不会帮你安装 Node.js、Python、uv 或智能体本身。需要自动化预览时,可用 npx jacobian@latest setup --codex --dry-run 查看计划;只有在明确指定 --codex、--all 等参数时才加 --yes。

不用全局安装,也可直接运行标准的 Python MCP 命令:

uvx --python 3.12 --from jacobian jacobian-mcp

若 MCP 客户端只能通过 npm 命令启动,npm 包会原样转发到同一条命令:

npx jacobian mcp

需要长期安装时:

python -m pip install jacobian
jacobian-mcp

这个包自带了 Jacobian 维护的完整 Python 后端栈:SymPy、NetworkX、Z3 和 Python-FLINT。所以无论是常规的 Python 安装还是 npm 安装,你拿到的都是同一套基于 Python 的内置操作。官方测试过的环境是 glibc Linux x86-64 上的 CPython 3.12 / 3.13,发版时会在这两个版本上安装构建好的 wheel 并启动验证。其他系统也可能有可用的上游 wheel,但不在官方测试范围内。特别地,Alpine/musl 无法从 PyPI 装全必需的后端。

Python 发行包里包含了数学内核、CLI 和 MCP 服务器。npm 包本身不提供 JavaScript API,只是把当前 npm 包的精确版本映射到对应的 uvx 调用。

计算一个有界结果

普通操作直接返回数学结果。例如,matrix.determinant.compute 接收一个精确的有理数矩阵,直接返回它的行列式。你可以把类型化的结果传给下一个操作,串起来完成更复杂的计算。

在本地终端中,先查看已安装操作的精确契约,再运行其中一个示例:

jacobian inspect integer.compute.extended_gcd
jacobian run integer.compute.extended_gcd --json '{"left":"84","right":"30"}'

第二条命令会以 JSON 返回最大公约数和 Bézout 系数。在 MCP 主机中,用用 math.find 的检查模式查看同一份契约,再用相同形状的 payload 调用 math.run。具体的智能体调用流程见发现和调用操作。

可用的数学能力

内置能力覆盖:

- 多项式映射与多项式代数;
- 精确线性代数;
- 图、路径、着色与同构;
- 有界 SAT 和 SMT 求解;
- 有限代数、概率、几何与拓扑。

SAT 和 SMT 操作直接调用 Z3 的 Python 绑定。用 math.find 匹配所需的数学结果并查看候选操作的契约,最后用 math.run 执行一次。

请参阅领域操作库了解操作契约与准入规则,用 math.find 查找实际操作,并参阅后端要求。

状态

Jacobian 0.23.0 仍为预稳定版本。已发布包和操作契约即为受支持的接口,实验性契约可能在后续版本中调整。

文档

- 文档首页:教程、操作指南、参考和原理说明
- 架构:运行时结构与信任边界
- 产品模型:操作契约、归属和项目边界
- 工具参考:MCP 资源与调用契约
- 后端要求:维护的 Python 后端
- 远程部署:HTTP 部署与身份认证

贡献

Jacobian 使用 Python 3.12、uv 和精简的 Makefile:

make setup
make handoff LANE=math TESTS=tests/math/graphs/test_graph_distance_matrix.py

改代码前请先读 CONTRIBUTING.md,里面有聚焦的测试命令、校验规则、文档组织和 PR 要求。

许可证

MIT
预览分享卡片长什么样 ↓morluto/jacobian
分享 · DeepSeek Harness Hub
morluto/jacobian

为智能体提供可执行的数学词汇:发现一个类型化操作,运行它,并组合其结果。

回到顶部