Skip to main content

Interactive notebook server for learning computer science

Project description

grokbook

Interactive notebook server for learning computer science. Works like Jupyter — code cells, markdown, persistent IPython kernels — with a built-in MCP server so AI tutors can create and manage notebooks for you.

grokbook screenshot

Hey, can you create a new project in Grokbook about LLMs and transformer architecture, and a first notebook to teach me about the attention mechanism in PyTorch? Go step by step, introduce the different components of attention, and use both markdown and code to give me a comprehensive intro.

Install

Requires Python 3.14+ and uv. uv will auto-install Python 3.14 if you don't have it.

Run instantly (recommended)

uvx grokbook

That's it. Opens the notebook UI on localhost:8080 and the MCP server on port 8081. A welcome notebook is created on first run.

If you cd into a project directory with a .venv first, grokbook auto-picks that .venv as the kernel so your project's libraries are available. Otherwise, you pick a kernel from the kernel: dropdown in the header (or paste any Python path).

Install permanently

uv tool install grokbook
grokbook                   # now on your PATH

From source (dev)

git clone https://github.com/marco-jeffrey/grokbook.git
cd grokbook
uv sync
uv run grokbook

Usage

uvx grokbook               # or just `grokbook` after uv tool install

Flags:

uvx grokbook --port 3000                      # different port
uvx grokbook --python /path/to/python         # explicit kernel interpreter
uvx grokbook --allow-code-execution           # enable execute tools for MCP

Kernel auto-detection

Grokbook picks a Python interpreter on startup in this order:

  1. --python CLI flag (explicit override)
  2. $VIRTUAL_ENV (if an env is active in your shell)
  3. ./.venv/bin/python or ./venv/bin/python in the current directory
  4. First uv-managed Python found via uv python list
  5. Fallback to the Python grokbook is running under

If the chosen interpreter is missing ipykernel, grokbook installs it automatically via uv pip install --python <env> ipykernel.

You can also switch kernels per-notebook from the UI: click the kernel: dropdown in the header → pick any discovered env, or paste a custom path at the bottom. Custom paths persist in ~/.grokbook/custom_envs.json.

Remote access (Tailscale / LAN)

By default, grokbook binds to 127.0.0.1 (localhost only). To access from other machines:

grokbook serve --host 0.0.0.0

Both the notebook server and MCP server bind to all interfaces. Access from another machine at http://<ip>:8080.

Warning: Grokbook executes arbitrary Python code. Do not expose it to untrusted networks.

CLI reference

grokbook [OPTIONS]                # Start notebook + MCP servers (= grokbook serve)
grokbook serve [OPTIONS]          # (explicit form)
  --host TEXT                     # Bind address (default: 127.0.0.1)
  --port, -p INT                  # Notebook server port (default: 8080)
  --mcp-port INT                  # MCP server port (default: 8081)
  --python PATH                   # Python interpreter for kernels
  --db PATH                       # Database file (default: ~/.grokbook/grokbook.db)
  --allow-code-execution          # Enable execute/kernel tools in MCP

grokbook mcp [OPTIONS]            # MCP server standalone (stdio, for Claude Desktop)
  --allow-code-execution          # Enable execute/kernel tools

MCP Integration

On startup, grokbook prints an MCP config block you can paste directly into Claude Desktop or LM Studio:

{
  "mcpServers": {
    "grokbook": {
      "command": "uvx",
      "args": ["grokbook", "mcp", "--allow-code-execution"],
      "env": {
        "GROKBOOK_API_URL": "http://localhost:8080/api"
      }
    }
  }
}

Omit --allow-code-execution to restrict the MCP server to read/write operations only (no code execution).

The grokbook mcp command runs in stdio mode for Claude Desktop. For HTTP-based MCP clients (LM Studio, remote agents), the built-in MCP server on port 8081 is already running when you start grokbook serve.

Always available: list_notebooks, get_notebook, create_notebook, rename_notebook, duplicate_notebook, list_projects, create_project, rename_project, move_notebook, create_cell, insert_cell, read_cell, write_cell, delete_cell, move_cell, duplicate_cell, change_cell_type, clear_output, clear_all_outputs

With --allow-code-execution: execute_cell, run_all_cells, kernel_status, restart_kernel, get_variables, interrupt_kernel

To enable code execution via MCP:

grokbook serve --allow-code-execution

Features

  • Code cells with streaming execution, rich output (images, HTML, SVG, pandas tables)
  • Markdown cells with GitHub-flavored rendering
  • Persistent IPython kernels — one per notebook, variables carry over between cells
  • Per-notebook kernel picker — auto-discovers uv, .venv, and jupyter kernelspecs; install ipykernel into any env with one click
  • Keyboard-driven — Vim-like command/edit modes (j/k, a/b, dd, Shift+Enter)
  • Import/export Jupyter .ipynb files
  • Variables inspector panel
  • Dark/light theme, wide mode, autocomplete, signature tooltips
  • Live sync across browser tabs via SSE

Keyboard Shortcuts

Grokbook uses two modes, inspired by Vim:

Command mode (press Escape to enter):

Key Action
j / k Navigate between cells
Enter Edit selected cell
a / b Insert cell above / below
m Convert to markdown
y Convert to code
dd Delete cell
Cmd+Shift+Up/Down Move cell up / down

Edit mode (press Enter or click a cell):

Key Action
Shift+Enter Execute cell, move to next
Cmd+Enter / Ctrl+Enter Execute cell, stay in place
Escape Back to command mode
Tab / Shift+Tab Indent / dedent

Vim mode

Enable Vim keybindings from the editor settings panel (gear icon). When active:

  • Full Vim motions in code cells (normal, insert, visual modes)
  • jk is mapped to Escape in insert mode for quick mode switching
  • Block cursor in normal mode, line cursor in insert mode

Architecture

Browser ──SSE──▶ Stario server (:8080) ──ZMQ──▶ IPython kernel
   │                  │
   │  Datastar        │  SQLite (~/.grokbook/grokbook.db)
   │  (reactive       │
   │   signals)       ├── REST API (/api)
   │                  │
   ▼                  ▼
 DOM patches      MCP server (:8081)
 via SSE          (FastMCP, for LLM agents)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grokbook-0.1.3.tar.gz (245.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grokbook-0.1.3-py3-none-any.whl (248.0 kB view details)

Uploaded Python 3

File details

Details for the file grokbook-0.1.3.tar.gz.

File metadata

  • Download URL: grokbook-0.1.3.tar.gz
  • Upload date:
  • Size: 245.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for grokbook-0.1.3.tar.gz
Algorithm Hash digest
SHA256 703aac1b1d0ebc5d380eddca484044268bd1c7166616eb1a2fd2b1a1cb563bff
MD5 98e11ffa293ffcda686a8347130bf368
BLAKE2b-256 64803332b6fd497dcd2d7fa73826fb7b89dd392d3b1147340ab13e68f0416187

See more details on using hashes here.

Provenance

The following attestation bundles were made for grokbook-0.1.3.tar.gz:

Publisher: publish.yml on marco-jeffrey/grokbook

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file grokbook-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: grokbook-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 248.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for grokbook-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a701cec0aab83f8d218ee3dafc126a9fed6da9c637cef305698b6f7ced2e2ea6
MD5 2d8728cc0c5616e594aca4f9803549df
BLAKE2b-256 988238529af0383e784b191d7d11a7ca9de97aea14656f9ce96a14a6575ba3d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for grokbook-0.1.3-py3-none-any.whl:

Publisher: publish.yml on marco-jeffrey/grokbook

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page