An MCP server for controlling Google Colab notebooks, enabling creation, editing, and execution of cells via a WebSocket connection to a Colab browser session.
ColabMCP has 9 tools with consistent naming patterns (verb-first: open_, add_, get_, run_, update_, delete_, move_, change_) and basic input schemas. However, descriptions are domain-specific but generic in structure, parameters lack granular validation constraints, and output schemas are not documented. Most tools reference a prerequisite connection (open_colab_browser_connection) but don't specify error handling if that precondition fails. No tool shows explicit per-parameter constraints (enums, min/max, patterns) or recovery guidance. The STDIO transport and lack of remote accessibility further limits practical utility.
Add a new code cell to the Colab notebook. Requires an active browser connection via open_colab_browser_connection.
Add a new text/markdown cell to the Colab notebook. Requires an active browser connection via open_colab_browser_connection.
Change the Colab runtime to use a specific GPU accelerator. Valid values: NONE, T4, L4, A100. Requires OAuth setup (first time opens browser for consent).
Delete a cell from the Colab notebook by cellId. Requires an active browser connection via open_colab_browser_connection.
Read the current notebook state: list of cells with their IDs, contents, and outputs. Essential for iterative work (write -> run -> read -> adjust). Requires an active browser connection via open_colab_browser_connection.
Move a cell to a new position in the Colab notebook by cellId and target index. Requires an active browser connection via open_colab_browser_connection.
Output schemas not documented. Tools like get_cells return unspecified structures. LLMs cannot plan downstream operations or extract specific fields without knowing the response format.
No parameter constraints (enums, min/max, patterns). The 'accelerator' param in change_runtime lists valid values (NONE, T4, L4, A100) in description text only, not as an enum schema. LLMs may hallucinate invalid values.
Dependency prerequisites not explicitly guarded. All tools state 'Requires an active browser connection' but do not specify error handling if the connection is missing or closed. LLMs have no recovery guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
Opens a connection to a Google Colab browser session and unlocks notebook editing tools. Returns whether the connection attempt succeeded.
Execute a code cell in the Colab notebook by cellId (from add_code_cell or get_cells). Requires an active browser connection via open_colab_browser_connection.
Update the contents of an existing cell in the Colab notebook. Requires an active browser connection via open_colab_browser_connection.
Destructive tool (delete_cell) lacks confirmation/dry-run pattern. The tool can permanently delete notebook cells with no undo option offered in the interface.
Parameter descriptions lack actionable format specs. 'cellIndex' param says 'Index position' but doesn't specify: is it 0-indexed? What happens if index exceeds cell count? What is the minimum valid value?
No pagination or result limits documented. get_cells returns 'list of cells with their IDs, contents, and outputs' but does not specify max result size or pagination strategy if a notebook has hundreds of cells.