Jupyter Notebook MCP Server

Interactúa con cuadernos de Jupyter, permitiendo la ejecución de código, la manipulación de celdas y la gestión de cuadernos.

Documentación

Servidor MCP de Jupyter Notebook

Un servidor FastMCP que proporciona herramientas para interactuar con cuadernos de Jupyter. Construido usando el framework FastMCP.

Características

  • ✅ Leer celdas de cuaderno con filtrado
  • ✅ Añadir nuevas celdas en cualquier posición
  • ✅ Ejecutar celdas individuales
  • ✅ Ejecutar cuadernos completos
  • ✅ Obtener metadatos y estadísticas del cuaderno
  • ✅ Manejo adecuado de errores y validación
  • ✅ Informe de progreso para operaciones largas
  • ✅ Registro completo mediante el contexto de FastMCP

Integración con tu cliente MCP

Asegúrate de que uv esté instalado. Para usar este servidor con cursor, claude desktop o cualquier otro cliente MCP, añade lo siguiente a tu archivo de configuración mcp:

{
  "mcpServers": {
    "jupyter-notebook": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "fastmcp>=2.8.1",
        "python",
        "<absolute_path_to_jupyter_mcp_server>/main.py"
      ]
    }
  }
}

Pruebas

Ejecuta el cliente de prueba para ver toda la funcionalidad en acción:

python test_client.py

Notas de seguridad

  • La ejecución de celdas ejecuta código Python directamente mediante subprocesos
  • Solo ejecute cuadernos de fuentes confiables
  • Considere ejecutar en un entorno aislado para uso en producción
  • Los controles de tiempo de espera ayudan a prevenir ejecuciones descontroladas

Dependencias

  • fastmcp - marco de servidor MCP

Herramientas

Este servidor MCP proporciona las siguientes herramientas para trabajar con cuadernos de Jupyter:

📖 read_notebook_cells

Lee celdas de un cuaderno de Jupyter con filtrado opcional por tipo de celda.

Parámetros:

  • notebook_path (str): Ruta al archivo .ipynb
  • cell_type (str opcional): Filtrar por tipo de celda ('code', 'markdown', 'raw')

➕ add_cell_to_notebook

Añade una nueva celda a un cuaderno de Jupyter en una posición especificada.

Parámetros:

  • notebook_path (str): Ruta al archivo .ipynb
  • cell_content (str): Contenido de la nueva celda
  • cell_type (str, predeterminado="code"): Tipo de celda ('code', 'markdown', 'raw')
  • position (int opcional): Posición para insertar la celda (predeterminado: añadir al final)
  • metadata (dict opcional): Metadatos opcionales de la celda

⚡ execute_notebook_cell

Ejecuta una celda específica en un cuaderno de Jupyter.

Parámetros:

  • notebook_path (str): Ruta al archivo .ipynb
  • cell_index (int): Índice de la celda a ejecutar (basado en 0)
  • kernel_name (str, predeterminado="python3"): Kernel de Jupyter a usar
  • timeout (int, predeterminado=30): Tiempo de espera de ejecución en segundos

🔄 execute_entire_notebook

Ejecuta todas las celdas de código en un cuaderno de Jupyter secuencialmente.

Parámetros:

  • notebook_path (str): Ruta al archivo .ipynb
  • kernel_name (str, predeterminado="python3"): Kernel de Jupyter a usar
  • timeout_per_cell (int, predeterminado=30): Tiempo de espera por celda en segundos
  • stop_on_error (bool, predeterminado=True): Si detener la ejecución si una celda falla

📊 get_notebook_info

Obtén información básica sobre un cuaderno de Jupyter.

Parámetros:

  • notebook_path (str): Ruta al archivo .ipynb