marimo-inspect
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_active_notebooksA | List currently active marimo notebooks. Returns all active sessions with their file paths and session IDs.
The first discovered session is automatically bound as the active
session, so later calls that share this MCP session can omit both
The binding is server-side state keyed by the MCP session identity the
client negotiates, so it reaches the next call only when the client keeps
one MCP session for the connection — an |
| get_cell_mapA | Get a lightweight map of cells showing previews. Returns cell IDs, names, code previews, and runtime state. This is the starting point for navigating a notebook. A preview does NOT record the |
| get_cell_dataA | Get full runtime data for one or more cells. Includes source code, errors, and variable information. If cell_ids is empty, returns data for all cells. A requested id that resolves to nothing (deleted or mistyped) is reported
in |
| get_cell_outputsB | Get cell execution outputs including visual display and console streams. A requested id that resolves to nothing (deleted or mistyped) is reported
in |
| get_variablesA | Get tables and variables information in the session. Returns information about kernel variables and DataFrames. If variable_names is empty, returns all variables — meaning the notebook's own session names, with the inspection template's scaffolding (its imports and helpers) excluded, since the scratchpad shares the kernel namespace. |
| get_dependency_graphB | Get the cell dependency graph showing variable relationships. Reveals which variables each cell defines and references, parent/child relationships between cells, variable ownership, and dependency issues like multiply-defined variables or cycles. The graph is always the FULL notebook graph. |
| get_errorsA | Get all errors in the notebook session, organized by cell. Two channels are reported and never conflated:
|
| lint_notebookB | Lint a marimo notebook to check for issues. Uses marimo's internal linting engine (the same one behind
|
| set_active_sessionA | Set the active notebook session for subsequent tool calls. Binds a session_id (and optionally its server_url) so later calls can omit
both |
| create_cellB | Create a new cell in the notebook. Created cells are visible in the UI by default (hide_code=False); pass hide_code=True explicitly for setup/implementation cells you want hidden. |
| edit_cellA | Edit an existing cell's source code. Includes a staleness guard: unless |
| run_cellC | Run (execute) an existing cell. |
| delete_cellC | Delete an existing cell from the notebook. |
| set_ui_valueA | Set the value of a live marimo UI element, by its variable name. The kernel global named by Value shape is per widget and is NEVER coerced: a slider/text takes a
scalar, a dropdown takes its option key inside a one-element list (for
example This tool accepts NO source code: it exists for widget interaction only,
not for arbitrary code execution. The update is flushed on code-mode
context exit, the kernel then re-runs dependent cells, and the element's
value is read back before returning — |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Co-work loop | The MCP-first co-work loop on a live notebook: discover/bind, orient, read, write/run, interact, verify, lint — with exact tool names and the read-before-edit rule. |
| Live-safety rules | Safety rules for editing a live kernel: read-before-edit, the needs_read/conflict recovery protocol, dependency checks before delete/merge, post-write verification, and widget visibility. |
| Fallbacks and limits | What the MCP surface does not cover and the intentional fallbacks: output coverage, widget value shape, frontend refresh, screenshots, server lifecycle, and the script hatch. |
TDQS
Scored across 14 tools
The 14 tools generally have distinct purposes, but get_cell_map, get_cell_data, and get_cell_outputs all involve retrieving cell information and could be confused by an agent unfamiliar with the subtle differences. The descriptions do clarify the differences (preview vs full data vs outputs), so it's mostly distinct.
All tool names follow a consistent snake_case verb_noun pattern (get_*, list_*, create_*, edit_*, run_*, delete_*, set_*), with no deviations. The naming is predictable and readable.
The server has 14 tools, which is well within the typical 3-15 range for a well-scoped MCP server. Each tool appears to earn its place by covering a specific operation in notebook inspection and manipulation.
The toolset covers a broad range of notebook operations (cell CRUD, execution, outputs, errors, linting, variables, dependency graph, UI interaction, session management), but some potential gaps exist, such as creating or deleting notebooks, managing files, or deeper kernel operations. It is largely complete for inspection and basic editing.