关于 mathgraphs-mcp
mathgraphs-mcp 是面向数学学习、教学与演示的交互式计算和可视化 MCP 服务,支持二维绘图、三维场景及幻灯片。它可从实际绘制的曲线计算根、极值和交点,并提供可分享的交互式结果链接。
主要功能
- 01绘制二维函数与几何图形
- 02数值计算导数、积分和交点
- 03生成带体积与表面积的立体展开图
- 04构建并检查交互式三维场景
- 05将图表整理为幻灯片
适用场景
- 01可视化函数并核验根与极值
- 02计算两条曲线的交点或面积
- 03制作几何立体展开图
- 04创建三维场景或图表演示
MCP 相关
通过 Streamable HTTP 向 MCP 客户端提供绘图、数值分析、立体展开图、三维场景和演示文稿工具。无需账户或 API 密钥。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
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 和该类型对应的字段:
| 类型 | 字段 | 示例 |
|---|---|---|
function | expression(必填)、color | {"type":"function", "expression":"x^2-4", "color":"#4A90D9"} |
points | points [{x,y}] 或 [[x,y]](必填)、color、label | {"type":"points", "points":[{"x":2,"y":0}], "label":"root"} |
segment | x1,y1,x2,y2(必填)、color、label、arrow、dashed | {"type":"segment", "x1":0, "y1":0, "x2":3, "y2":4, "label":"hypotenuse"} |
label | text(必填)、x,y(必填)、color、fontSize | {"type":"label", "text":"vertex", "x":0, "y":-4} |
triangle | x1,y1,x2,y2,x3,y3(必填)、color、opacity、border | {"type":"triangle", "x1":0, "y1":0, "x2":3, "y2":0, "x3":3, "y3":4} |
box | x1,y1,x2,y2(必填)、height(必填)、color、opacity | {"type":"box", "x1":0, "y1":0, "x2":1, "y2":0, "height":5} |
circle | cx,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 | 额外字段 | 返回值 |
|---|---|---|
roots | a、b(范围,默认 -10..10) | f 穿过零点时的 x 值 |
extrema | a、b | 局部极小值和极大值 |
inflections | a、b | 凹凸性改变的点 |
intersect | g(第二个表达式)、a、b | f 与 g 的交点 |
tangent | x(关注点) | x 处的切线 |
normal | x | x 处的法线 |
derivative | x | f'(x) |
integral | a、b | [a, b] 上的定积分 |
area_between | g、a、b | 两条曲线之间的面积 |
arc_length | a、b | [a, b] 上的曲线长度 |
closest_point | px、py | f 上距离 (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:
shape | dims |
|---|---|
cylinder、cone | r、h(cone 也接受 r + slant) |
cube | a |
square_pyramid | a(底边)、h |
triangular_prism | a(底边)、l(长度) |
rectangular_prism | w、h、d |
tetrahedron、octahedron、icosahedron、dodecahedron | a(棱长) |
也支持完整拼写的键(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 和该类型专属的字段:
| 类型 | 字段 | 示例 |
|---|---|---|
mesh | shape(必需)、color、opacity、position、rotation、metalness、roughness、wireframe | {"type":"mesh", "shape":"sphere", "r":1, "metalness":0.8, "position":[0,1,0]} |
compound | compound(必需)、position、scale、color | {"type":"compound", "compound":"house", "color":"#cc2222", "position":[0,0,0]} |
surface | expression(必需)、color、xmin、xmax、ymin、ymax、resolution | {"type":"surface", "expression":"sin(x)*cos(y)", "color":"#4A90D9"} |
light | kind(point/spot/directional)、color、intensity、position | {"type":"light", "kind":"point", "color":"#ff8800", "position":[0,5,0]} |
particle | preset(fire/smoke/rain/snow/sparkle/mist/splash)、position、count、spread | {"type":"particle", "preset":"fire", "position":[3,0,0]} |
water | position、size、waveHeight、color、opacity | {"type":"water", "position":[0,0,0], "size":10} |
line3d | from [x,y,z]、to [x,y,z]、color | {"type":"line3d", "from":[0,0,0], "to":[1,1,1]} |
label3d | text、position [x,y,z] | {"type":"label3d", "text":"origin", "position":[0,0,0]} |
text3d | text、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,支持上一张/下一张导航、键盘控制和自动播放。
示例提示词
- “绘制 x³ - 3x + 1,并显示它的根和极值” → 带计算出的根(x ≈ -1.88、0.35、1.53)和极值的交互式图表
- “建造一个村庄,里面有一栋红色房子、树木和篝火” → 3D 场景,包含中式房屋(红色会触发中式变体),聊天中附带 PNG 缩略图
- “绘制曲面 z = sin(x) * cos(y)” → 带轨道控制的交互式 3D 曲面图
- “制作一个 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]}]}}}'
链接
- 网站: mathtalking.com
- 3D 构建器: mathtalking.com/3d
- 隐私: mathtalking.com/privacy
- Discord: discord.gg/5auPsmxh
- X: @Mathtalking_com
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。