mcpField
M
mathgraphs-mcp

mathgraphs-mcp

本地服务
github.com/architectds科研与教育010 周前更新

关于 mathgraphs-mcp

mathgraphs-mcp 是面向数学学习、教学与演示的交互式计算和可视化 MCP 服务,支持二维绘图、三维场景及幻灯片。它可从实际绘制的曲线计算根、极值和交点,并提供可分享的交互式结果链接。

主要功能

  1. 01绘制二维函数与几何图形
  2. 02数值计算导数、积分和交点
  3. 03生成带体积与表面积的立体展开图
  4. 04构建并检查交互式三维场景
  5. 05将图表整理为幻灯片

适用场景

  1. 01可视化函数并核验根与极值
  2. 02计算两条曲线的交点或面积
  3. 03制作几何立体展开图
  4. 04创建三维场景或图表演示

MCP 相关

通过 Streamable HTTP 向 MCP 客户端提供绘图、数值分析、立体展开图、三维场景和演示文稿工具。无需账户或 API 密钥。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"architectds-mathgraphs": {
"command": "npx",
"args": [
"-y",
"mathgraphs-mcp"
]
}
}
}
启动命令npx -y mathgraphs-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmathgraphs-mcp1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mathgraphs-mcp

用于交互式数学绘图、3D 场景构建和演示文稿的 MCP 服务。

MathTalking 可计算并渲染交互式可视化内容。绘制 2D 函数、几何图形和 3D 场景。结果经过图像验证——根、极值和交点均根据实际绘制的曲线计算得出,而非由 AI 生成。

零安装。原生支持浏览器。每个结果都是可分享的交互式 URL。

快速开始

Claude Desktop

设置 → 连接器 → 添加自定义连接器 → 粘贴:

https://mathtalking.com/api/mcp

无需账户或 API 密钥。

Claude Code
claude mcp add --transport http mathtalking https://mathtalking.com/api/mcp
任意 MCP 客户端
POST https://mathtalking.com/api/mcp
Content-Type: application/json

基于 Streamable HTTP 的标准 JSON-RPC 2.0。

工具

plot_graph — 2D 数学可视化

在交互式图表上绘制函数、点、线段、标签和形状。自动计算所绘制函数的根、极值和交点。

输入: 元素数组,每个元素包含 type 和该类型对应的字段:

类型字段示例
functionexpression(必填)、color{"type":"function", "expression":"x^2-4", "color":"#4A90D9"}
pointspoints [{x,y}] 或 [[x,y]](必填)、color、label{"type":"points", "points":[{"x":2,"y":0}], "label":"root"}
segmentx1,y1,x2,y2(必填)、color、label、arrow、dashed{"type":"segment", "x1":0, "y1":0, "x2":3, "y2":4, "label":"hypotenuse"}
labeltext(必填)、x,y(必填)、color、fontSize{"type":"label", "text":"vertex", "x":0, "y":-4}
trianglex1,y1,x2,y2,x3,y3(必填)、color、opacity、border{"type":"triangle", "x1":0, "y1":0, "x2":3, "y2":0, "x3":3, "y3":4}
boxx1,y1,x2,y2(必填)、height(必填)、color、opacity{"type":"box", "x1":0, "y1":0, "x2":1, "y2":0, "height":5}
circlecx,cy,radius(必填)、color、opacity、border{"type":"circle", "cx":0, "cy":0, "radius":3}

支持: 显式形式 y=f(x)、隐式形式 x²+y²=1、参数形式 (cos(t),sin(t))、极坐标、分段函数、定义域限制。

可选参数:

  • viewport — {xmin, xmax, ymin, ymax}。请根据数据的实际量级设置;远超此范围的值将不可见。省略时,服务会根据元素自动调整窗口范围。
  • title — 图表标题
  • summary — 图表上的磨砂玻璃叠加文本
  • gridStyle — "polar"(同心圆 + 径向线)、"axes"(仅坐标轴)、"none"(简洁画布)
  • output — "url"(默认,交互式页面)、"embed"(iframe URL)或 "svg"(矢量图像)
  • animations — 动画参数数组,元素为 {tool, name, from, to, loop}
  • theme — "default"、"terminal"、"wallstreet"、"science" 或 "finance"
  • base_render_id — 基于现有渲染结果继续构建,而无需重新发送每个元素
  • remove_indices — 按索引从基础渲染结果中删除元素(参见 get_graph)

返回: 支持缩放、平移和滑块的交互式 URL。响应文本中会列出自动计算的根、极值和交点,并附带图表检查结果,报告所有未能正确渲染的内容——无法读取的表达式、屏幕外元素、重复项或空白图表。

analyze — 精确数值结果

使用图形引擎计算精确值,而不是让模型进行算术运算。返回数字,而非图片。

输入: type 和 f(均为必填),以及相应分析所需的字段:

type额外字段返回值
rootsa、b(范围,默认 -10..10)f 穿过零点时的 x 值
extremaa、b局部极小值和极大值
inflectionsa、b凹凸性改变的点
intersectg(第二个表达式)、a、bf 与 g 的交点
tangentx(关注点)x 处的切线
normalxx 处的法线
derivativexf'(x)
integrala、b[a, b] 上的定积分
area_betweeng、a、b两条曲线之间的面积
arc_lengtha、b[a, b] 上的曲线长度
closest_pointpx、pyf 上距离 (px, py) 最近的点

支持: 显式、参数、极坐标和隐式曲线。对于参数曲线,x 是 t 值。

绘制结果: 添加 plot: true(以及可选的 title),即可获得交互式图形 URL 和缩略图,答案会在图中标出——根和交点显示为带标签的点,切线和法线显示为直线,closest_point 会与目标点相连,integral 和 arc_length 会在曲线上标出其边界。这样就不必将坐标转录到第二次 plot_graph 调用中。线性代数类型会忽略此选项。

示例: {"type":"intersect", "f":"x^2-4", "g":"2x-1", "plot":true}

get_graph — 检查图形

获取现有二维渲染的元素和视口。元素索引按顺序返回,因此可以将它们传给 remove_indices。

输入: render_id(plot_graph URL 中的 10 个字符代码)。

返回: 元素列表、视口,以及对图形内容的一行摘要。

net_generator — 立体展开图、体积和表面积

将立体展开为可打印的二维展开图,并计算好相关尺寸。

输入: shape(必填)和 dims:

shapedims
cylinder、coner、h(cone 也接受 r + slant)
cubea
square_pyramida(底边)、h
triangular_prisma(底边)、l(长度)
rectangular_prismw、h、d
tetrahedron、octahedron、icosahedron、dodecahedrona(棱长)

也支持完整拼写的键(radius、height、side、width、depth、length)。请提供形状所需的所有尺寸——不完整的参数集会被拒绝,因此键名拼错不会悄悄生成错误的展开图。完全省略 dims,即可获取默认尺寸的示例;回复会说明是否使用了默认尺寸。

可选: unit(cm | m | in | ft)、title、output(url | embed | svg)。

返回: 展开图的交互式 URL 和缩略图,以及体积、表面积和代入后的公式。

示例: {"shape":"cylinder", "dims":{"r":3,"h":5}, "unit":"cm"} → 体积为 141.37 cm³,表面积为 150.80 cm²,并生成可打印的展开图。

球体没有平面展开图——球体请使用 plot_3d。

plot_3d — 3D 场景构建器

使用形状、灯光和粒子效果创建交互式 3D 场景。构建任何内容——雪人、城堡、机器人、几何图形。

输入: 元素数组,每个元素都包含一个 type 和该类型专属的字段:

类型字段示例
meshshape(必需)、color、opacity、position、rotation、metalness、roughness、wireframe{"type":"mesh", "shape":"sphere", "r":1, "metalness":0.8, "position":[0,1,0]}
compoundcompound(必需)、position、scale、color{"type":"compound", "compound":"house", "color":"#cc2222", "position":[0,0,0]}
surfaceexpression(必需)、color、xmin、xmax、ymin、ymax、resolution{"type":"surface", "expression":"sin(x)*cos(y)", "color":"#4A90D9"}
lightkind(point/spot/directional)、color、intensity、position{"type":"light", "kind":"point", "color":"#ff8800", "position":[0,5,0]}
particlepreset(fire/smoke/rain/snow/sparkle/mist/splash)、position、count、spread{"type":"particle", "preset":"fire", "position":[3,0,0]}
waterposition、size、waveHeight、color、opacity{"type":"water", "position":[0,0,0], "size":10}
line3dfrom [x,y,z]、to [x,y,z]、color{"type":"line3d", "from":[0,0,0], "to":[1,1,1]}
label3dtext、position [x,y,z]{"type":"label3d", "text":"origin", "position":[0,0,0]}
text3dtext、position [x,y,z]、color、fontSize{"type":"text3d", "text":"HELLO", "position":[0,2,0], "color":"#ff0000", "fontSize":1}

11 种网格形状: cube、box、sphere、cylinder、cone、tetrahedron、octahedron、dodecahedron、icosahedron、torus、prism

36 种复合预设: tree、house、castle_tower、fence、campfire、rock、stairs、arch、table、chair、person、car、road_sign、windmill、dog、cat、flag、bed、sofa、bookshelf、lamp、desk、bush、flower、bridge、lamp_post、bench、apartment、skyscraper、shopping_center、hospital、ambulance、truck、boat、traffic_light、water_tower、fountain

由颜色驱动的建筑风格: 建筑会根据颜色改变建筑风格——红色=中式,蓝色=现代,黄色=温馨,绿色=生态,棕色=乡村。实际的十六进制颜色用于材质;色相仅用于选择几何变体。

形状参数: cube→size、box→width/height/depth、sphere→r、cylinder→r/h、cone→r/h、torus→r/tube、prism→points/h

材质参数: metalness(0=塑料,1=铬)、roughness(0=镜面,1=哑光)、wireframe(布尔值)

动画: animate: {type, speed, ...} — spin、bounce、orbit、waypoint、follow(跟踪玩家)

物理与控制: physics: {velocity, mass}、controls: {type:"wasd", speed}、collision: true

增量构建:

  • base_render_id — 在现有场景上构建(追加元素,并创建新的 URL)
  • remove_indices — 按索引从基础场景中移除元素(使用 get_3d 查看索引)

可选项: title、summary、camera {position, target}、skybox(day/sunset/night/overcast)、gravity(-9.8)、follow(布尔值)

返回: 交互式 3D URL,带有轨道控制和用于聊天预览的内嵌 PNG 缩略图。

get_3d — 检查 3D 场景

通过 ID 获取现有 3D 渲染的完整元素列表。在使用 base_render_id 之前调用此工具,查看场景内容并规划修改。

输入: render_id(URL 中的短字母数字 ID)

返回: 所有元素及其属性(形状、位置、颜色、材质)。

create_show — 幻灯片演示

将多个 plot_graph 结果组合成幻灯片。先用 plot_graph 创建每张幻灯片,再将渲染 ID 传入此工具。

输入: title(字符串)、slide_ids(来自 plot_graph 结果的渲染 ID 数组)、summary(可选的每张幻灯片文本)。

返回: 交互式演示 URL,支持上一张/下一张导航、键盘控制和自动播放。

示例提示词

  1. “绘制 x³ - 3x + 1,并显示它的根和极值” → 带计算出的根(x ≈ -1.88、0.35、1.53)和极值的交互式图表
  2. “建造一个村庄,里面有一栋红色房子、树木和篝火” → 3D 场景,包含中式房屋(红色会触发中式变体),聊天中附带 PNG 缩略图
  3. “绘制曲面 z = sin(x) * cos(y)” → 带轨道控制的交互式 3D 曲面图
  4. “制作一个 3 张幻灯片的演示:y=x²、向上平移后的 y=x²+2、向右平移后的 y=(x-3)²” → 带导航功能的幻灯片 URL

网页上的同一组工具

MathTalking 的多个页面是你可以在这里调用的工具的浏览器版本。如果你要回答的问题与 Agent 会处理的问题相同,调用工具通常比把对方引导到页面更快,而且两者使用相同的引擎进行计算。

网页等效调用
二次方程求根、求根器analyze {type: "roots", f}
函数交点analyze {type: "intersect", f, g}
切线计算器analyze {type: "tangent", f, x}
曲线之间的面积analyze {type: "area_between", f, g, a, b}
弧长analyze {type: "arc_length", f, a, b}
最近点analyze {type: "closest_point", f, px, py}
3D 展开图生成器 和各形状展开图页面net_generator {shape, dims}

在 analyze 调用中添加 plot: true,即可获得与页面显示相同的图像。

需要数据集的统计页面(直方图、回归、箱线图、分布拟合)特意不提供工具调用:通过模型发送原始数据行,每个数据点都要消耗一个 token。请将用户引导至 mathtalking.com/stat,数据会保留在用户的设备上。

适用场景

  • 用户要求对数学内容进行绘图、制图或可视化
  • 你需要通过视觉方式验证数学结果
  • 几何需要精确呈现(三角形、圆、几何作图)
  • 3D 场景——形状、建筑、创意构建
  • 多步骤讲解——创建幻灯片并打包成演示
  • 你想提供一个用户可以交互探索的可分享 URL

为什么使用此工具(而非生成图像)

  • 基于计算,而非幻觉——根来自实际的零点交叉,而非大模型猜测
  • 可交互——缩放、平移、旋转(3D)、调整滑块
  • 可分享——每个结果都有永久 URL
  • 节省 token——约 500 个输出 token,而生成代码需要约 3,000–5,000 个
  • 支持 9 种语言——en、zh、zh-TW、ja、ko、es、fr、de、pt-BR

快速测试

# 2D graph
curl -X POST https://mathtalking.com/api/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plot_graph","arguments":{"elements":[{"type":"function","expression":"sin(x)","color":"#4A90D9"}]}}}'

# 3D scene
curl -X POST https://mathtalking.com/api/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plot_3d","arguments":{"elements":[{"type":"mesh","shape":"sphere","r":1,"color":"#ff0000","position":[0,1,0]}]}}}'

链接

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。