GeoGebra MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GEOGEBRA_BACKEND | No | Backend selection: auto (prefer Web), web, desktop | auto |
| GEOGEBRA_CDP_PORT | No | Desktop backend CDP remote debugging port | 9222 |
| GEOGEBRA_WEB_WIDTH | No | Web Runtime viewport width | 1200 |
| GEOGEBRA_WEB_BUNDLE | No | Web Runtime bundle loading: cdn (online) or local (offline bundle) | cdn |
| GEOGEBRA_WEB_HEIGHT | No | Web Runtime viewport height | 800 |
| GEOGEBRA_WEB_HEADLESS | No | Web Runtime headless mode: 1=yes, 0=show browser window | 1 |
| GEOGEBRA_WEB_BUNDLE_PATH | No | Offline bundle cache directory (overrides default path) | platform default |
| GEOGEBRA_RESTART_EXISTING | No | Desktop backend: set to 1 to allow auto-restart of existing GeoGebra | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| geogebra_execA | Execute a GeoGebra command. To make a mechanism MOVE (animate), you MUST create an angle slider and define points that depend on it. ── COMMAND REFERENCE ── POINTS: A = (x, y) — free point A = (3, 4) M = Midpoint(A, B) — midpoint P = Point(c, 0.5) — point on curve c at parameter 0..1 ANGLE SLIDER (the KEY to animation): α = 30° — creates an angle slider. ALWAYS start with this β = 60° — for mechanisms needing a second angle These become sliders. Use StartAnimation(α) to drive motion. DEPENDENT POINTS (formulas using the angle): A = O1 + (rcos(α), rsin(α)) A = (rcos(α), rsin(α)) — same when O1 is origin X = (acos(α), bsin(α)) — ellipse motion These points MOVE when α changes. This is how animation works. LINES & SEGMENTS: Line(A, B) — infinite line through A,B Segment(A, B) — segment between A,B Ray(A, B) — ray from A through B PerpendicularLine(A, l)— line through A ⟂ l ParallelLine(A, l) — line through A ∥ l CIRCLES & ARCS: Circle(O, r) — circle center O radius r Circle(O, A) — circle center O through point A c = Circle(O1, 2) — name it 'c' to reuse INTERSECTIONS (critical for mechanisms): P = Intersect(c1, c2) — all intersections P = Intersect(c1, c2, 1) — FIRST intersection (use 1 or 2) P = Intersect(c1, c2, 2) — SECOND intersection P = Intersect(Segment(A,B), c) — segment-circle intersection ANGLES: Angle(A, O, B) — ∠AOB in degrees SLIDER (numeric): r = 2 — creates a numeric slider if value is a plain number r = Slider(0, 5, 0.1) — explicit slider(min, max, step) TRANSFORMATIONS: Rotate(A, α, O) — rotate A around O by angle α Dilate(A, s, O) — dilate A from O by factor s Translate(A, v) — translate A by vector v ANIMATION: StartAnimation(α) — start the slider α animating StartAnimation() — start all sliders StopAnimation() — stop all animations SetAnimationSpeed(α, s) — set speed (0.1–10) After building the mechanism, always call StartAnimation(angle_label) and then geogebra_animate() for speed control. MISC: ZoomIn(1) — zoom ZoomOut(1) — un-zoom Pan(x, y) — pan view ── CRITICAL RULES ──
Args: command: GeoGebra command string (see reference above) |
| geogebra_batchB | 在 GeoGebra 中批量执行多条命令。适合一次性构建完整机构。 Args: commands_json: JSON 数组格式的命令列表, 如 '["A=(0,0)","B=(6,0)","Segment(A,B)"]' |
| geogebra_run_commandsA | Execute multiple GeoGebra commands from a structured list. Preferred over geogebra_batch for AI clients — no JSON string wrapping needed. Args: commands: Ordered GeoGebra commands, e.g. ["A=(0,0)", "B=(6,0)", "Segment(A,B)"] |
| geogebra_new_constructionA | 新建空白 GeoGebra 构造,清除当前所有对象。 |
| geogebra_saveB | 保存当前 GeoGebra 构造为 .ggb 文件。 Args: filepath: 保存路径, 如 "D:/tool/my_mechanism.ggb" |
| geogebra_export_pngB | 导出当前 GeoGebra 视图为 PNG 截图。 Args: filepath: 保存路径, 如 "D:/tool/screenshot.png" scale: 缩放因子 (1-4, 默认2) |
| geogebra_versionA | 返回 MCP Server 版本号。 |
| geogebra_helpA | 获取 GeoGebra 命令和机构设计的帮助。在构建机构之前先调用此工具。 Args: topic: "commands"=命令参考, "mechanisms"=机构模板, "animation"=动画, "all"=全部 |
| geogebra_statusA | 检查 GeoGebra 连接状态和当前构造信息。 |
| geogebra_set_viewA | 设置 GeoGebra 视图模式。 Args: perspective: "G"=几何, "A"=代数, "T"=表格, "3D"=三维, "AG"=代数+几何 |
| geogebra_set_appearanceB | 设置对象外观(颜色、线宽、点大小、可见性)。 Args: label: 对象标签名 color_r/g/b: RGB 颜色 0-1 (-1 不修改) thickness: 线宽 1-13 point_size: 点大小 1-9 visible: 是否可见 label_visible: 是否显示标签 |
| geogebra_animateA | 设置动画——让滑块控制的机构动起来。 Args: label: 滑块标签, 如 "α" animate: 是否启动动画 speed: 速度 (0.1-10) |
| geogebra_get_objectsA | 获取当前构造中所有对象的名称列表。 |
| geogebra_draw_mechanismA | Create a complete mechanism: new construction → commands → styles → save .ggb + PNG. Use geogebra_batch for commands instead of this tool unless you need one-step save. ── MECHANISM TEMPLATES ── Crank-Rocker (曲柄摇杆): O1=(0,0) O2=(d,0) α=angle° crank_len=r coupler_len=L rocker_len=R A = O1 + (rcos(α), rsin(α)) c1 = Circle(A, L) c2 = Circle(O2, R) B = Intersect(c1, c2, 1) Segment(O1, A) Segment(A, B) Segment(B, O2) Animate: StartAnimation(α) Style: thick segments, colored points Slider-Crank (曲柄滑块): O=(0,0) α=angle° r=crank L=coupler A = O + (rcos(α), rsin(α)) c = Circle(A, L) guide = Line((0,-r), (10,-r)) B = Intersect(c, guide, 1) Segment(O, A) Segment(A, B) Circle(B, 0.1) Animate: StartAnimation(α) Double-Crank / Drag-Link: O1=(0,0) O2=(d,0) α=angle° r1,r2=crank lengths L=coupler A = O1 + (r1cos(α), r1sin(α)) B = O2 + (r2cos(α+offset), r2sin(α+offset)) Segment(O1,A) Segment(A,B) Segment(B,O2) Animate: StartAnimation(α) Four-Bar Linkage (general): Same as crank-rocker but adjust lengths. Valid if shortest+longest ≤ sum of other two. ── design_json FORMAT ── { "perspective": "G", "animate": "α", "speed": 0.5, "commands": ["O1=(0,0)", "O2=(6,0)", "α=45°", ...], "styles": [ {"label": "A", "color": [1,0,0], "point_size": 5}, {"label": "Segment(O1,A)", "thickness": 5}, {"label": "O1", "point_size": 6, "color": [0,0,0]} ] } ── WORKFLOW ──
Args: name: Mechanism name (used for filename) design_json: JSON string with design (see format above) output_dir: Output directory (default: current working directory) |
| geogebra_create_constructionA | Create a construction from a structured design dict. Preferred over geogebra_draw_mechanism for AI clients — no JSON string wrapping needed. design dict format: {"perspective":"G", "animate":"α", "speed":0.5, "commands":["O1=(0,0)","O2=(6,0)","α=45°",...], "styles":[{"label":"A","color":[1,0,0],"point_size":5},...]} Auto-behavior (no manual steps needed):
Args: name: Output filename stem design: Dict with perspective, commands, styles, animate, and speed output_dir: Output directory (default: cwd) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/123pc/Geogebra_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server