ti-nspire-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ti-nspire-mcp take a live screenshot of my TI-Nspire CX II screen"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
📟 ti-nspire-mcp (v0.2.0 - MCP 2.0)
Servidor Model Context Protocol (MCP 2.0) de código abierto para integrar calculadoras Texas Instruments (TI-Nspire CX II / CX II CAS / CX) con agentes de Inteligencia Artificial (Claude Desktop, Cursor, Antigravity, Gemini CLI).
🚀 Características Principales
1. Comunicación USB Nativa a Bajo Nivel (Protocolo NavNet / DocLink / NNSE)
Protocolo de Paquetes Completo (
0x54FD/NNSE): Comunicación directa sobre Bulk Endpoints (IN 0x81/OUT 0x01,512 bytes) para dispositivos0x0451:0xE022(CX II) y0x0451:0xE012(CX).direct_upload_tns: Transfiere archivos.tnsdirectamente al almacenamiento interno de la calculadora (servicio0x4060) sin depender de un navegador web externo.capture_screen_live: Solicita el framebuffer en vivo (320x240, servicio0x4024RLE /0x4021Raw), decodifica píxeles RGB565 (16 bits) con Pillow y expone la imagen en PNG / Base64 para modelos multimodales.list_remote_filesystem: Explora el árbol de directorios interno de la memoria Flash (/,/PyLib,/MyLib).
2. Motor Avanzado de Generación y Parseo de .tns
Soporte Multipágina y Multiaplicación: Crea documentos
.tnscombinando páginas de Python (<py-app>), Notas Matemáticas (<notes-app>), Hojas de Cálculo (<lists-and-spreadsheet-app>) y Calculadora CAS (<calculator-app>).Conversor Matemático LaTeX $\rightarrow$ XML Nativo (
<expr>): Transforma expresiones en LaTeX (\frac,\sqrt[n],\int,\sum, matrices\begin{pmatrix}, letras griegas) a etiquetas matemáticas nativas<expr>de TI-Nspire OS.Soporte para Lua y Ndless: Empaqueta scripts en Lua (
<script-app type="lua">) y binarios nativos de Ndless (PRG\x00), además de incluir un inspector/parser de archivos.tnsexistentes (inspect_tns_document).
3. Implementación Completa de MCP 2.0
MCP Resources:
ti://calculator/screenshot: Recurso dinámico con la captura actual en PNG Base64 para que la IA "vea" la pantalla de la calculadora en tiempo real.ti://calculator/storage: Estado en tiempo real de la memoria Flash, SDRAM, batería y directorio raíz.
MCP Tools con Pydantic V2 y Linter MicroPython:
Validación estricta de esquemas, telemetría enriquecida de errores (
ErrorTelemetry) y analizador estático AST (validate_micropython_code) que detecta módulos restringidos y coordenadas fuera del lienzo320x240antes de subir el código.
MCP Prompts Guiados:
crear-solucionador-paso-a-pasogenerar-chuleta-formulas-tnsdiagnosticar-bootloop
4. Integración del Puente Inalámbrico ESP32 (Wi-Fi / Hotspot / iPhone)
Modo "Pantalla Remota desde iPhone": Canal bidireccional por WebSockets (
ws://192.168.4.1:81/ws) y UART (ti_hub) con interfaz web progresiva para visualizar la pantalla320x240y enviar teclas desde Safari en iOS.Generador de Firmware (
generate_esp32_firmware): Genera sketches.inode Arduino,CMakeLists.txtpara ESP-IDF, el script compañero en MicroPython y los comandos listos para compilar conarduino-cli.
5. Calidad de Software, Mocks CI/CD y Tipado Estricto
Modo Mock (
TI_NSPIRE_MOCK=1): Simula el hardware USB (0x0451:0xE022), el framebuffer RGB565 y el sistema de archivos interno para ejecución determinista en GitHub Actions y pruebas sin calculadora física.Verificación Continua: Cobertura completa con
pytest, tipado estricto conmypy --stricty linting/formateo conruff.
Related MCP server: pico-bay
📁 Estructura del Proyecto
ti-nspire-mcp/
├── .github/workflows/ci.yml # Pipeline CI/CD en GitHub Actions (Ruff, Mypy, Pytest)
├── pyproject.toml # Configuración de paquete, uv, ruff, mypy y pytest
├── README.md # Documentación principal
├── CONTRIBUTING.md # Guía para colaboradores
├── LICENSE # Licencia MIT
├── src/
│ └── ti_nspire_mcp/
│ ├── __init__.py # Exportaciones públicas
│ ├── __main__.py # Punto de entrada CLI
│ ├── models.py # Modelos Pydantic V2 y telemetría de errores
│ ├── usb_protocol.py # Protocolo de paquetes NavNet (0x54FD), NNSE y RGB565/RLE
│ ├── usb_driver.py # Driver USB Bulk IN/OUT y dispositivo Mock para CI/CD
│ ├── latex_converter.py # Conversor de LaTeX a XML matemático nativo <expr>
│ ├── tns_builder.py # Generador y parser multipágina .tns (Python, Notas, Lua, Ndless)
│ ├── micropython_linter.py # Analizador AST y validador de módulos MicroPython TI
│ ├── esp32_bridge.py # Puente Wi-Fi/WebSockets ESP32 y generador arduino-cli
│ └── server.py # Servidor MCP 2.0 (Resources, Tools y Prompts)
├── scripts/
│ └── test_device.py # Script de diagnóstico integral por consola
└── tests/
├── test_usb_protocol.py # Tests de tramas NavNet/NNSE, RGB565 y driver USB
├── test_tns_and_latex.py # Tests de LaTeX <expr>, multipágina, Lua y Ndless
├── test_linter_and_esp32.py # Tests de linter MicroPython y puente ESP32
└── test_server.py # Tests de integración MCP 2.0🛠️ Instalación y Diagnóstico Rápido
Requisitos Previos
macOS / Linux / Windows con
libusbinstalado (en macOS:brew install libusb).Python
>=3.13yuv.
git clone https://github.com/reliasdomi/ti-nspire-mcp.git
cd ti-nspire-mcp
uv sync --dev
uv run python scripts/test_device.py🔌 Configuración en Clientes de IA
1. Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"ti-nspire": {
"command": "uv",
"args": [
"run",
"--directory",
"/Users/relias/Desktop/ti-nspire-mcp",
"ti-nspire-mcp"
]
}
}
}2. Antigravity / Gemini CLI
agy mcp add ti-nspire -- uv run --directory /Users/relias/Desktop/ti-nspire-mcp ti-nspire-mcp🧰 Catálogo MCP 2.0
Recursos (Resources)
URI | MIME Type | Descripción |
|
| Framebuffer en vivo |
|
| Estado en tiempo real de Flash, RAM, batería y directorio raíz |
Herramientas (Tools)
Herramienta | Descripción |
| Detecta la calculadora por USB y reporta descriptores, endpoints y memoria. |
| Sube un archivo |
| Captura la pantalla de la TI-Nspire (RGB565 $\rightarrow$ PNG Base64). |
| Lista los archivos y carpetas de la memoria interna de la calculadora. |
| Empaqueta código Python validado en un documento |
| Genera documentos |
| Convierte expresiones en LaTeX a etiquetas matemáticas |
| Empaqueta scripts Lua o aplicaciones nativas Ndless ( |
| Analiza e inspecciona las páginas y scripts dentro de cualquier archivo |
| Depura sintaxis AST, módulos restringidos y límites |
| Genera sketches de Arduino/ESP-IDF listos para compilar con |
| Sincroniza frames y comandos bidireccionales con el visor de iPhone vía ESP32. |
| Convierte un archivo |
| Devuelve especificaciones de pantalla, procesador y librerías de la TI-Nspire CX II. |
| Genera plantillas base para solucionadores, gráficos 2D y enlace serie. |
Prompts Guiados (Prompts)
crear-solucionador-paso-a-paso: Diseña, valida y sube un solucionador interactivo con notas LaTeX y Python.generar-chuleta-formulas-tns: Crea un formulario multipágina con expresiones<expr>, hojas de cálculo y visor.diagnosticar-bootloop: Guía interactiva de recuperación de arranque y diagnóstico de memoria por USB.
🧪 Ejecución de Tests y Calidad de Código
uv run pytest
uv run ruff check .
uv run mypy📄 Licencia
Distribuido bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
Available Tools
15 toolscapture_screen_liveA
Envía el paquete NavNet de solicitud de captura de framebuffer (0x4024 / 0x4021) a la TI-Nspire, recibe los píxeles en formato RGB565 (16 bits, 320x240), los convierte con Pillow a PNG y los devuelve codificados en Base64 para análisis visual por la IA.
:param save_path: Ruta opcional en disco donde guardar también el archivo .png.
Inputs: save_path. Returns: object
convert_latex_to_nspire_xmlB
Convierte expresiones matemáticas en LaTeX a etiquetas XML matemáticas nativas de TI-Nspire () y a notación simbólica interna de TI-Nspire OS.
:param latex_expression: Expresión en LaTeX (ej. '\frac{-b \pm \sqrt{b^{2}-4ac}}{2a}'). :param evaluate: Si es True, marca la etiqueta para evaluación automática.
Inputs: latex_expression (required), evaluate. Returns: object
convert_script_to_tnsC
Convierte un archivo .py existente en tu computadora a formato .tns de TI-Nspire.
:param python_script_path: Ruta absoluta al archivo .py a convertir.
Inputs: python_script_path (required). Returns: object
create_lua_or_ndless_tnsA
Empaqueta un script de Lua (motor TI-Nspire Script App) o una aplicación nativa de Ndless (cabecera PRG\x00) en un archivo .tns ejecutable.
:param filename: Nombre del archivo .tns a generar. :param mode: 'lua' para scripts Lua o 'ndless' para aplicaciones nativas Ndless. :param code_or_payload: Código fuente Lua o payload para Ndless. :param output_directory: Carpeta de salida opcional.
Inputs: filename (required), mode, code_or_payload, output_directory. Returns: object
create_multipage_tns_documentB
Genera un documento .tns avanzado con soporte multipágina y multiaplicación: hojas de cálculo ('spreadsheet'), notas matemáticas formateadas con LaTeX ('notes'), scripts de Python ('python'), scripts de Lua ('lua'), calculadoras CAS ('calculator') y binarios nativos de Ndless ('ndless').
:param filename: Nombre del archivo .tns a crear. :param pages: Lista de especificaciones de página (TNSPageSpec: page_type, title, content, formulas_latex, spreadsheet_columns). :param document_title: Título global del documento. :param output_directory: Directorio donde guardar el archivo .tns.
Inputs: pages (required), filename (required), document_title, output_directory. Returns: object
create_python_tns_documentA
Empaqueta código Python en un archivo de documento .tns listo para transferir y ejecutar directamente en la TI-Nspire CX II. Incluye verificación preventiva de MicroPython.
:param filename: Nombre del archivo (ejemplo: 'solucionador.tns' o 'app') :param python_code: Código fuente en Python para la calculadora. :param output_directory: Carpeta de destino (por defecto el Escritorio del usuario).
Inputs: filename (required), python_code (required), output_directory. Returns: object
direct_upload_tnsA
Sube un archivo .tns directamente al almacenamiento interno de la calculadora TI-Nspire por USB mediante el protocolo de paquetes NavNet/DocLink (servicio 0x4060, Bulk Endpoints IN/OUT) sin depender de ningún navegador web externo.
:param filename: Nombre de destino del archivo (ej. 'solucionador.tns'). :param python_code: Código Python opcional para empaquetar al vuelo antes de subir. :param local_tns_path: Ruta local opcional a un archivo .tns ya existente en disco. :param remote_directory: Carpeta de destino en la memoria de la calculadora (por defecto '/PyLib').
Inputs: filename (required), python_code, local_tns_path, remote_directory. Returns: object
generate_esp32_firmwareB
Genera sketches de Arduino (.ino), configuración ESP-IDF, cliente MicroPython para TI-Nspire
y comandos listos para compilar con arduino-cli para el puente inalámbrico ESP32.
:param mode: 'iphone_remote_screen', 'serial_wifi_bridge' o 'ai_assistant_proxy'. :param ssid: Nombre de la red Wi-Fi / Hotspot creada por el ESP32. :param password: Contraseña WPA2 (mínimo 8 caracteres). :param baud_rate: Velocidad de puerto serie UART entre ESP32 y TI-Nspire. :param output_directory: Directorio opcional donde guardar los archivos listos para compilar.
Inputs: mode, ssid, password, baud_rate, +1 more. Returns: object
generate_python_templateB
Genera plantillas de código listas y optimizadas para el entorno Python de la TI-Nspire CX II.
:param template_type: 'math_solver', 'graphics', 'serial_receiver' o 'notes_viewer'
Inputs: template_type. Returns: object
get_calculator_statusA
Verifica el estado de conexión USB de la calculadora Texas Instruments en el ordenador. Detecta modelos como TI-Nspire CX II, TI-Nspire CX, TI-84 Plus CE, etc.
Inputs: no named parameters. Returns: object
get_device_specsB
Proporciona especificaciones técnicas completas, módulos de Python soportados y restricciones de hardware de la calculadora Texas Instruments.
Inputs: model. Returns: object
inspect_tns_documentB
Parsea e inspecciona un archivo .tns existente, devolviendo sus páginas, tipos de aplicación (Python, Notas, Hoja de Cálculo, Lua, Ndless), código fuente embebido y fórmulas .
:param tns_path: Ruta al archivo .tns que se desea analizar.
Inputs: tns_path (required). Returns: object
list_remote_filesystemA
Lee el árbol de directorios interno de la memoria Flash de la calculadora TI-Nspire mediante el servicio NavNet 0x4060.
:param directory: Directorio remoto a consultar (ej. '/', '/PyLib', '/MyLib').
Inputs: directory. Returns: object
sync_esp32_remote_screenC
Sincroniza en tiempo real la captura de pantalla de la TI-Nspire CX II y comandos bidireccionales con la placa ESP32 para el modo "Pantalla Remota desde iPhone" (WebSockets / Serial).
:param status_text: Texto de estado a mostrar en el visor remoto de iPhone. :param command: Comando o evento de tecla opcional a transmitir de forma bidireccional.
Inputs: command, status_text. Returns: object
validate_micropython_codeA
Herramienta de depuración preventiva de código MicroPython antes del envío a la TI-Nspire CX II. Verifica sintaxis AST, módulos restringidos, coordenadas fuera de pantalla (320x240), rangos de color RGB (0-255) y huella de RAM.
:param python_code: Código Python a validar.
Inputs: python_code (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Four separate tools produce .tns files (create_python_tns_document, convert_script_to_tns, create_multipage_tns_document, create_lua_or_ndless_tns) and the multipage tool explicitly supports Python and Lua pages, so its boundary with the single-purpose variants is genuinely fuzzy. The descriptions help somewhat, but an agent must read carefully to pick the right document generator.
Nearly all names follow a snake_case verb_noun pattern (get_calculator_status, list_remote_filesystem, create_multipage_tns_document, inspect_tns_document). The only real deviation is direct_upload_tns with an adverb prefix, a minor inconsistency.
15 tools sits at the upper end of a reasonable range and the core USB/.tns workflow justifies most of them. However, generate_esp32_firmware and sync_esp32_remote_screen expand into a separate hardware domain, suggesting mild scope creep.
The surface is heavy on authoring (.tns creation, LaTeX conversion, validation) and covers status, upload, listing, and screen capture, but there is no tool to download a file off the calculator or delete remote files, which are notable gaps for a USB file-transfer server. Creating and reading documents is covered, but the remote storage lifecycle is not.
Maintenance
Related MCP Connectors
- DNS-DATA RemoteDeprecatedcom.dns-data
Connect AI assistants to authorized Windows and macOS devices for files, commands, and management.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Connect ChatGPT, Claude, Cursor or VS Code to your Windows PC: files, terminal, browser, apps.
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Arduino boards for compiling, uploading sketches, and serial communication.6MIT
- AlicenseAqualityBmaintenanceEnables AI agents to manage MicroPython and CircuitPython boards over USB, including listing boards, browsing and editing files, running Python code, resetting boards, and installing firmware.13254 npm7MIT
- AlicenseAqualityBmaintenanceEnables AI agents to program MicroPython boards such as Raspberry Pi Pico and ESP32 through Thonny, with visible shell commands and optional human approval.15MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI models to interact with Typst by converting LaTeX snippets to Typst, validating Typst syntax, reading Typst documentation, and rendering Typst code as PNG images.-