MCP server bridging Marimo notebooks and Claude — edit, inspect, and visualize notebooks collaboratively
marimo-claude has 12 tools with complete schemas and descriptions, but quality is uneven. Tool names follow verb_noun convention (start_marimo, stop_marimo, get_cells). Descriptions are present but often generic (e.g., 'Check if Marimo is running' for marimo_status). Parameter descriptions exist but lack detail on constraints, formats, or valid ranges. Output schemas are not documented, tools return strings or UIResource objects without specifying field structure. Error handling is minimal; no recovery guidance or actionable error messages visible. The bridge pattern (calling remote Marimo MCP tools via _bridge.call_tool) means actual tool definitions are hidden behind string-based dispatch, making validation impossible. This caps per-tool scores at ~50 for bridged tools.
Get runtime data for all cells — execution status, outputs, errors.
Get the cell structure and code of a notebook session.
Inspect database table schemas accessible from the notebook.
Get an error summary across all active notebook sessions.
Get variables, DataFrames, and their types from a running notebook.
List all tools available on the connected Marimo MCP server. Useful for discovering what Marimo exposes beyond the standard tools.
List active Marimo notebook sessions with their file paths.
Bridged tools (list_notebooks, get_cells, get_variables, get_cell_data, get_database_schema, get_errors, list_marimo_tools) delegate to remote Marimo MCP server via string-based _bridge.call_tool(). Tool definitions are not visible in source; actual schemas and error handling are opaque. This violates the principle that tool definitions must be inspectable and self-contained.
Output schemas are not documented. Tools return strings (e.g., 'Marimo running at http://...') or UIResource objects without specifying field structure, types, or pagination. LLMs cannot plan downstream calls or extract structured data reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Check if Marimo is running and the MCP bridge is connected.
Read a Marimo notebook .py file and return its contents.
Show the running Marimo notebook as an interactive iframe. Opens the Marimo editor UI directly in the Claude client. Requires Marimo to be running (call start_marimo first).
Start a Marimo notebook editor with MCP enabled.
Stop the running Marimo notebook editor.
Parameter descriptions lack actionable constraints. 'session_id' is described as 'The session ID from list_notebooks' but no format, length, or example is given. 'notebook_path' lacks guidance on absolute vs relative paths, file extension requirements, or creation behavior.
Error handling is minimal. No recovery guidance, retryability classification, or actionable error messages. E.g., if start_marimo fails to bind a port, the error message is not visible in code; if Marimo is not running, show_notebook returns HTML error but does not guide the LLM to call start_marimo.
Tool descriptions are generic and under 100 characters for most bridged tools. 'List active Marimo notebook sessions with their file paths' does not explain when to call this vs get_cells, what structure is returned, or whether results are paginated.