colab-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| COLAB_MCP_STATE_DIR | No | Override the directory where the websocket token and port are saved (defaults to ~/.colab-mcp/connection.json). | |
| COLAB_MCP_UI_TIMEOUT | No | Seconds the opener waits for you to accept the connection in the tab. | 60 |
| COLAB_MCP_AUTO_REOPEN | No | Set to 0 to disable automatically re-opening the last opened notebook when the tab drops and a notebook tool is called. | 1 |
| COLAB_MCP_TOKEN_MAX_AGE_DAYS | No | A persisted token is replaced once it is older than this many days (default 30; 0 never). | 30 |
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 |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| open_colab_browser_connectionA | Opens a connection to a Google Colab browser session and unlocks notebook editing tools. Pass notebook_url to open a specific notebook instead of the scratch notebook: Colab links, Google Drive share links or file ids, GitHub .ipynb blob/raw links, and gist links are accepted. Calling it with a different notebook_url while connected switches to that notebook. The call waits for the user to accept the connection in the browser tab; on success, list tools again to see the notebook tools. |
| colab_connection_statusA | Reports whether a Colab browser session is connected and which notebook it was opened for. Does not open a browser. |
| get_notebook_outlineB | List cells as index, id, type, first source line and whether outputs exist. |
| run_cellsA | Run code cells in order: by id list, or by index range (end exclusive), or all. Each cell blocks until it finishes. For anything that may take more than a minute set background=True and poll job_status; Colab cannot be interrupted through this bridge, so cancel only stops scheduling the next cell. |
| run_notebookB | Run every code cell from the top. Background by default: poll job_status. |
| run_codeA | Run ad-hoc Python in the notebook's runtime via a temporary cell at the end. The cell is deleted afterwards unless keep_cell=True. Images in the output (plots) are returned as image content. background=True returns a job id. |
| job_statusC | Progress and per-cell results of a background run. |
| list_jobsB | All known background runs, newest last. |
| cancel_jobB | Stop a background run after its current cell. The running cell itself cannot be interrupted. |
| upload_fileB | Copy a local file into the notebook runtime's filesystem (e.g. /content/data.csv). Transfers in base64 chunks through temporary cells and verifies the SHA-256 on the runtime afterwards. |
| download_fileA | Copy a file from the notebook runtime to this machine, verifying its SHA-256. |
| export_notebookC | Save the connected notebook as an .ipynb file on this machine. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools target clearly distinct actions (connect, check status, outline, job list, cancel, upload, download, export). The only real overlap is the execution trio run_cells, run_notebook, and run_code — run_cells explicitly accepts 'all', which duplicates run_notebook — but the descriptions spell out the difference well enough for an agent to choose correctly.
Nearly all names are snake_case and follow verb_noun (get_notebook_outline, run_cells, list_jobs, cancel_job, upload_file, download_file, export_notebook). Minor deviations: the status queries job_status and colab_connection_status are noun-only, and open_colab_browser_connection redundantly embeds 'colab' while its sibling tools do not.
Twelve tools is a well-scoped set for remote Colab notebook control: connection handling, execution, job management, file transfer, and export each get a small number of dedicated tools. Nothing appears padded or redundant beyond the mild execution overlap.
Core run lifecycle (connect, inspect cells, execute, poll, cancel, transfer files, export) is covered with no dead ends. However, the notebook-editing tools that open_colab_browser_connection promises to 'unlock' are absent from the surface, and there is no way to insert, delete, or edit cell source or to disconnect a session — notable gaps for a notebook-control server.