Geometry Drawing MCP

Permite que la IA dibuje, verifique y corrija figuras de geometría plana en vivo en la Calculadora GeoGebra en una ventana visible que puedes arrastrar. Incluye sugerencias de errores, comprobaciones de propiedades (ángulos, colinealidad), capturas de pantalla, deshacer y instantáneas.

Documentación

geogebra-mcp

Un servidor MCP que permite a una IA (Claude Desktop, Claude Code, Cursor, …) dibujar y editar figuras de geometría plana directamente en GeoGebra Calculator (https://www.geogebra.org/calculator).

A diferencia del flujo de trabajo de copiar/pegar de la extensión GeoGebra AutoDraw AI, la IA aquí trabaja en un bucle: ejecuta comandos, lee errores y el estado de la figura, verifica propiedades, mira una captura de pantalla y corrige la figura por sí misma — y puede editar la figura a petición ("H debe ser el pie desde A").

Demo: the AI builds triangle ABC inscribed in (O) with altitude AH and median AM, then A is dragged and the figure follows

Cómo funciona

AI client ──MCP (stdio)──► geogebra-mcp ──Playwright──► Chrome window: geogebra.org/calculator
                                                            └─ window.ggbApplet (GeoGebra JS API)
  • En la primera llamada a una herramienta, el servidor abre una ventana de Chrome (o Edge) en GeoGebra Calculator. El usuario observa cómo se dibuja la figura y puede arrastrarla/ editarla manualmente.
  • Las herramientas llaman a la API JS de GeoGebra (ggbApplet) dentro de la página a través de page.evaluate — sin clics simulados.
  • Los comandos se ejecutan mediante asyncEvalCommandGetLabels, que carga de forma diferida los módulos de GeoGebra, por lo que los comandos de demostración/scripting (AreCollinear, Incircle, TriangleCenter, ClosestPoint(line, point)…) funcionan.
  • GeoGebra reporta un comando fallido solo como null, por lo que el servidor añade sus propios diagnósticos (nombres desconocidos, comandos desconocidos, corchetes desbalanceados, errores conocidos) y advertencias (resultados indefinidos, nombres reservados, intersecciones de dos puntos sin índice).
  • Si la ventana se cierra o se recarga, la siguiente llamada a una herramienta la reabre y restaura la última figura conocida.
  • Deshacer es gestionado por el servidor (historial XML), porque ggbApplet.undo() no revierte comandos de API.

Herramientas

HerramientaPropósito
ggb_run_commandsEjecutar comandos en orden; resultado por comando, objetos creados/eliminados, advertencias, sugerencias de fallo. Asignar a un nombre existente lo redefine.
ggb_get_stateObjetos con tipo, definición, valor, coordenadas, visibilidad, dependsOn / usedBy.
ggb_screenshotPNG del área de dibujo (o de toda la ventana) para verificación visual.
ggb_evaluateEvaluar expresiones sin añadir objetos (Angle(B, A, C), AreCollinear(A, H, O)…).
ggb_set_styleColor, visibilidad, etiqueta, título, grosor, estilo de línea, tamaño de punto, relleno, fijo.
ggb_deleteEliminar objetos (y sus dependientes).
ggb_clearIniciar una nueva figura.
ggb_undoRevertir cambios realizados a través del servidor.
ggb_snapshotGuardar / restaurar / listar versiones nombradas.
ggb_fit_viewAjustar cada punto y círculo visible en la vista (proporción 1:1), alternar ejes/cuadrícula.
ggb_exportGuardar como .ggb o .png.

También: recurso geogebra://rules (reglas de construcción), recurso geogebra://commands (catálogo de comandos), prompt draw_geometry_problem.

Configuración

Requisitos: Node.js ≥ 20 y Google Chrome o Microsoft Edge (de lo contrario, ejecuta npx playwright install chromium).

Claude Code (plugin)

claude plugin marketplace add haison8x/geogebra-mcp
claude plugin install geogebra-mcp@geogebra-tools

El servidor aparece entonces en /mcp como plugin:geogebra-mcp:geogebra. Actualiza más tarde con claude plugin update geogebra-mcp@geogebra-tools.

Claude Code (sin el plugin)

claude mcp add geogebra -- npx -y geogebra-mcp

Claude Desktop, Cursor y otros clientes MCP

Edita claude_desktop_config.json (Configuración → Desarrollador → Editar configuración), o la configuración MCP de tu cliente:

{
  "mcpServers": {
    "geogebra": {
      "command": "npx",
      "args": ["-y", "geogebra-mcp"]
    }
  }
}

Luego reinicia el cliente y pregunta, por ejemplo: "Vẽ tam giác ABC nội tiếp đường tròn (O), đường cao AH, M là trung điểm BC."

Desde el código fuente

git clone https://github.com/haison8x/geogebra-mcp.git
cd geogebra-mcp
npm install
npm run build
claude mcp add geogebra -- node /path/to/geogebra-mcp/dist/index.js

Configuración (variables de entorno)

VariablePredeterminadoSignificado
GGB_BROWSERprobar chrome, msedge, luego Playwright ChromiumCanal del navegador
GGB_HEADLESS01 para ejecutar sin ventana (pruebas)
GGB_PROFILE_DIR~/.geogebra-mcp/profilePerfil del navegador (mantiene el inicio de sesión de GeoGebra). Una instancia del servidor por perfil.
GGB_URLhttps://www.geogebra.org/calculatorPágina a abrir

Desarrollo

Publicación: incrementa la versión en package.json, .claude-plugin/plugin.json, .claude-plugin/marketplace.json, server.json (ambos campos version) y la versión fijada en .mcp.json. Luego haz push, npm publish, mcp-publisher publish, y crea una release en GitHub.

npm run build
npm run smoke              # end-to-end test through a real MCP client (headless)
npm run smoke -- --headed  # same, with a visible window

Notas

  • GeoGebra es gratuito para uso no comercial; consulta la licencia de GeoGebra antes de cualquier uso comercial de esta automatización.
  • Las capturas y el historial de deshacer viven en memoria mientras el servidor está en ejecución.