Skip to main content
Glama

Colab Persist

Use a disposable Colab GPU from your terminal. Keep the work in Google Drive.

Colab Persist adds verified workspace checkpoints and a local MCP server/client to Google's official Colab CLI. L4 is the default GPU. No notebook editing or tmux is required. Google may still ask you to authorize a Drive mount in your browser when a new VM starts.

Mac: source code + coding agents + credentials
                    │ SSH / official Colab CLI
                    ▼
Colab L4: temporary workspace + CUDA execution
                    │ versioned archives + SHA-256 manifests
                    ▼
Google Drive: Colab-CUDA/projects/<project>/

For datasets larger than VM disk, use the separate manifest-driven shard cache. colab-persist dataset-plan corpus.json validates the manifest and reports storage budgets without allocating a GPU or copying data. Your training script uses ShardCache to stage a bounded working set outside workspace snapshots. See large datasets and LoRA for the 1 TB storage layout, checkpoint requirements, and current limits. Do not place a training corpus or base model cache inside the managed workspace.

A complete run

colab-persist run examples/cuda_demo.py --project cuda-learning

This starts or reuses an L4, mounts Drive, restores the project's last checkpoint, uploads the script, and runs it on the GPU. During execution it attempts a checkpoint every 60 seconds. After the script exits—even with an error—it checkpoints again, asks Drive to flush outstanding writes, and stops the VM only if saving succeeds. Local script paths, source size, project names and checkpoint intervals are checked before allocating a GPU. Run the example from the cloned repository directory. The example compiles real CUDA, validates 256 results on the GPU, and increments a counter restored from the previous run.

Related MCP server: mcp-colab-gpu

Install and authenticate

Requires macOS or Linux, Git, Python 3.12+, OpenSSH, uv, and Google Cloud CLI.

git clone https://github.com/ehzawad/colab-persist.git
cd colab-persist
uv tool install .
colab-persist configure --email YOUR_GOOGLE_EMAIL --gpu L4

gcloud auth application-default login YOUR_GOOGLE_EMAIL --no-launch-browser \
  --disable-quota-project \
  --scopes=openid,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/colaboratory

The official Colab CLI is installed inside the tool's isolated Python environment; you do not need to install it separately. If colab-persist is not found after installation, run uv tool update-shell and open a new terminal. Keep your own Google credentials on your computer; no repository credentials are supplied.

Use the authorization link from that exact terminal attempt and paste its code back into the same terminal. Authorize Drive with the same Google account later. The helper checks the Google identity before connecting or allocating a VM.

Check the installation and configured Google identity before allocating a GPU:

colab-persist tools                         # nine MCP tools
colab-persist status                        # checks account and runtime status

Then, from the cloned repository directory, run the CUDA example twice:

colab-persist run examples/cuda_demo.py --project first-run
colab-persist run examples/cuda_demo.py --project first-run
colab-persist status

With a new project name, the first run reports count 1; the second restores it and reports count 2 with previous count 1. Each successful run saves, flushes Drive, and stops its VM, so the final status should be inactive. Expect a browser consent step for each new VM's Drive mount. These runs consume Colab compute units. This flow was verified from a fresh public clone on macOS.

Configuration lives in ~/.config/colab-persist/config.json; Google credentials use the existing local ADC store. A dedicated Ed25519 key is created only if the selected key does not exist. None of these files are uploaded by this tool.

If Colab's initial Drive mount fails immediately after consent, the helper retries once and verifies the actual mount. A failed mount never becomes an ordinary local directory masquerading as persistent storage.

Terminal and SSH workflow

colab-persist start                         # L4 + Drive + default workspace
colab-persist ssh                           # ordinary SSH shell
# On the VM:
cd /content/colab-persist/default/workspace
nvcc my_kernel.cu -o my_kernel
./my_kernel
exit
# Back on the Mac:
colab-persist stop                          # checkpoint + flush + shutdown

On the next start, the default workspace is restored. Work inside the displayed managed workspace; files elsewhere on the VM are outside the backup scope. colab-persist ssh -- nvidia-smi also works for single commands.

To get a conventional SSH alias, configure a dedicated fragment:

colab-persist configure --email YOUR_GOOGLE_EMAIL --gpu L4 \
  --ssh-config ~/.ssh/config.d/colab-cuda.conf

Include ~/.ssh/config.d/* from your existing SSH config, then run start. ssh colab-cuda and rsync ... colab-cuda:/content/colab-persist/default/workspace/ work normally. Host keys are pinned separately for each runtime endpoint. Starting a replacement refreshes this alias; connecting to an old endpoint fails rather than quietly connecting to another VM.

Select another GPU explicitly when starting a fresh runtime:

colab-persist start --gpu T4
colab-persist start --gpu A100

L4 remains the configured default. Availability and compute-unit cost depend on your account. The helper never silently substitutes another GPU or changes a live runtime's hardware; save and stop it first.

Projects and script arguments

Only the named script is uploaded by default. To include a whole project:

colab-persist run ./train.py --source . --project experiment -- --epochs 10
colab-persist run examples/checkpoint_loop.py --project resumable -- --steps 30

The script runs with its project workspace as the current directory:

Variable

Meaning

COLAB_WORKSPACE

Temporary restored project directory

COLAB_OUTPUT_DIR

Its outputs/ directory, included in every checkpoint

COLAB_DATASET_ROOT

Read-only source shards under Drive Colab-CUDA/datasets/

COLAB_DATASET_CACHE

Disposable local shard cache, outside snapshots

HF_HOME

Defaults to the external local Hugging Face cache if not already set

Scripts may invoke nvcc, make, profilers, or other commands. Store a dependency file and bootstrap script in the project and run them as needed after replacement; installed system packages and Python environments are not VM images and are not restored automatically. CUDA comes from the Colab runtime image.

Source overlays update matching project files without deleting other restored files. Caches, virtual environments, .git, common credential directories, .env*, private-key extensions, symbolic links, and temporary files are excluded. These exclusions are not a secret scanner: do not put credentials in ordinary project files or command-line arguments.

Checkpoints and shutdown

colab-persist status
colab-persist snapshots --project experiment   # requires mounted Drive
colab-persist save                            # flush/unmount; VM stays allocated
colab-persist mount                           # remount to continue saving
colab-persist restore --project experiment    # empty destination required
colab-persist stop

Each snapshot is an immutable .tar.gz plus a JSON manifest containing SHA-256 hashes for every saved file and the archive. A manifest is written only after the copied archive verifies. Incomplete uploads are ignored; unchanged snapshots are reused. Restore validates both the archive and extracted files, rejects links and path traversal, and refuses to overwrite a nonempty workspace. Checkpoints are retained until you choose to remove them from Drive; there is no automatic pruning. Workspace and source uploads default to a 5 GiB size cap checked before hashing; oversized saves refuse shutdown. Use the separate shard cache for large corpora.

Periodic snapshots report pending_drive_flush. A successful final save reports drive_flush_confirmed, using Colab's drive.flush_and_unmount(). Save/stop refuses while a managed script is running. If Drive is unavailable, full, or cannot flush, the operation fails and leaves the VM allocated for recovery. Fix the problem and retry stop; do not bypass it unless you accept losing unsaved work.

run --keep-runtime flushes Drive but leaves the GPU allocated. Remount Drive before another save. Direct colab stop, the Colab browser's Delete Runtime action, and Google's own reclamation bypass the save guard.

MCP: local agents, remote CUDA

Keep Codex, Claude Code, or your preferred coding agent on your Mac. Their login and configuration survive runtime deletion; the MCP tools operate the GPU worker.

{
  "mcpServers": {
    "colab-persist": {
      "command": "/absolute/path/to/colab-persist-mcp"
    }
  }
}

For Codex, find the installed executable with command -v colab-persist-mcp, then:

codex mcp add colab-persist -- /absolute/path/to/colab-persist-mcp

Tools: runtime_status, start_runtime, prepare_workspace, run_script, list_checkpoints, restore_workspace, save_workspaces, safe_stop, and plan_dataset. The terminal client uses the same tools over real MCP stdio. colab-persist tools checks the connection. No HTTP port is exposed. Drive consent runs in a terminal, because OAuth codes should not be passed through a model conversation. Long jobs are best submitted through the supplied client: other MCP hosts may impose their own tool timeouts. An interrupted client does not confirm a job stopped; inspect runtime status before starting another job or shutting down.

What survives—and what cannot

Saved source files, binaries, outputs, application checkpoints, and setup recipes survive in Drive. RAM, VRAM, running processes, root filesystem changes, and writes that never reached Drive do not. An application must write restartable state (for example model/optimizer state and the current step) to resume computation. Use atomic replacement for application checkpoint files; copying a live multi-file database is not a transactional backup. Background child processes must finish before your script exits.

Colab Pro does not guarantee a ten-hour session. Paid runtimes still have variable idle and maximum-lifetime limits. This tool does not simulate activity or prevent Google from reclaiming a VM. After an unexpected termination, start a replacement and restore the last checkpoint that reached Drive. Recovery is explicit, so a replayed workload cannot silently allocate repeated GPUs or duplicate side effects.

Existing tools

Project

What it already provides

Where this project fits

Official Colab CLI

GPU selection, SSH, execution, file transfer and Drive mounting

Used directly as the transport

colabctl

Broader runtime/job APIs, MCP, and direct Drive checkpoint helpers

A fuller alternative; its direct Drive transfers require a Cloud quota project and Drive API

Colab MCP

Local-agent bridge to a Colab session in the browser

Useful for notebook interaction

This is a small, independent workflow layer for a single account and named runtime, not an official Google product. It deliberately uses the native Drive mount already supported by Colab; no separate Google Cloud project is needed for that mount.

Development and verification

uv sync --no-editable
uv run --no-editable python -m unittest discover -s tests -v
uv run --no-editable colab-persist tools

Tests cover recovery into a new workspace, corruption, interrupted publication, credential/link exclusions, malicious archives, overwrite protection, script errors, active-job locks, and refusal to stop after a failed flush. Live GPU/Drive checks consume compute units and require your own account; see VALIDATION.md for the maintainer's recorded verification.

Sources: Colab FAQ and runtime limits, Drive flush implementation, CLI Drive integration, MCP Python SDK.

Available Tools

9 tools
list_checkpointsB
Read-only

List complete checkpoint manifests from the mounted Drive.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNodefault

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation is consistent with the non-mutating 'List' verb, so there is no contradiction. The description adds modest context about the source ('mounted Drive') and completeness of the manifests, but it does not mention pagination, size limits, or what the returned manifests contain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, direct sentence with no filler. The action and object are front-loaded, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only tool, the description is minimally adequate, but it leaves gaps: project semantics are undocumented, and there is no output schema to clarify the return format. The agent can invoke the tool but cannot fully predict how results will be shaped or filtered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, and the description does not mention the 'project' parameter or how it affects the listing. An agent cannot tell whether project filters results, changes paths, or requires a specific value, so the description fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') with a specific resource ('complete checkpoint manifests') and location ('mounted Drive'), making the tool's purpose unambiguous. It is clearly distinct from sibling tools like restore_workspace or save_workspaces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as restore_workspace or save_workspaces. The description implies its use for listing manifests but does not state prerequisites, exclusions, or why an agent would choose it over a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_datasetA
Read-only

Validate a local immutable shard manifest and size a bounded cache for large datasets.

Reads only the manifest, not the corpus. Does not provision a VM, contact Drive, or confirm source files, VM free disk, Drive quota, throughput or GPU model fit. Training scripts use colab_persist.datasets.ShardCache on the VM.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_gibNo
reserve_gibNo
manifest_pathYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, and the description adds meaningful behavioral detail beyond that: it reads only the manifest, not the corpus, and explicitly lists operations it does not perform. This is valuable transparency with no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, with the core purpose in the first line and the key limitations following. Every sentence adds useful information and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, scope, and important non-behaviors, and references the training-script usage context. It lacks output/return details and parameter-specific guidance, but given the simple tool shape and read-only annotation, it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions manifest validation and cache sizing, but gives no explanation of cache_gib or reserve_gib semantics, units, limits, or how they interact. The parameter names alone are not enough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verbs and resources: 'Validate a local immutable shard manifest and size a bounded cache for large datasets.' It clearly distinguishes itself from sibling tools focused on runtime, workspace, and script execution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: it reads only the manifest and does not provision VMs or contact Drive. It stops short of naming an explicit alternative tool or a precise when-to-use versus when-not-to-use condition, but the exclusions are strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_workspaceC

Create a managed workspace or restore its latest Drive snapshot on a fresh VM.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNodefault

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description bears full responsibility for disclosing behavior. It does state that the operation creates or restores, which implies state changes, but it does not explain conditions, side effects, whether existing state is overwritten, or what happens on a non-fresh VM.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with no wasted words. It front-loads the main action, though its brevity contributes to the ambiguity rather than resolving it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool combines two distinct behaviors, has no annotations, no output schema, and overlaps with restore_workspace, but the description omits the conditions that govern create versus restore, the meaning of project, and the expected side effects. These gaps make it insufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description needed to explain how the project parameter influences the workspace or snapshot selection, but it never mentions project at all. The agent is left with only the schema title 'Project' and default value 'default', which provides minimal semantic grounding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete operation: creating a managed workspace or restoring its Drive snapshot on a fresh VM. It is clear about the resource and action, but it does not differentiate itself from the sibling tool restore_workspace, which appears to overlap with the restore behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'on a fresh VM' implies the intended scenario, but the description never explicitly says when to use this tool versus restore_workspace, save_workspaces, or start_runtime. It also gives no guidance on when the create path should be chosen over the restore path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_workspaceB

Restore a verified Drive checkpoint into an empty workspace. Refuses overwrites.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNodefault
snapshotNolatest

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the refusing-overwrites behavior, which is valuable, but it omits what 'verified' means, what happens if the workspace is not empty, and any other side effects. The transparency is partial, not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences: the core action comes first, followed by the critical refusal behavior. Every word earns its place, with no redundancies or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 0% parameter description coverage, the description is too sparse for an agent to call the tool correctly. It lacks parameter semantics, return behavior, and edge-case handling (e.g., what happens if the workspace isn't empty or the checkpoint isn't verified).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description gives no explanation of the 'project' and 'snapshot' parameters, and the schema provides 0% coverage (no property descriptions). An agent cannot infer valid values or how these parameters affect restoration, so the description completely fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'restore' and the resource 'verified Drive checkpoint' along with the target 'empty workspace'. It also mentions a distinct behavioral constraint ('Refuses overwrites') that helps differentiate it from siblings like save_workspaces or prepare_workspace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (restore a checkpoint into an empty workspace) and includes a precondition, but it does not explicitly compare with alternatives like list_checkpoints or save_workspaces. There is no when-not-to-use guidance or condition for choosing this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_scriptA

Run a local Python script on the active, Drive-mounted GPU VM.

Restores previous files, uploads the script (or an explicitly selected source directory), periodically checkpoints, flushes Drive on completion, then stops by default. Script may invoke nvcc and other tools. Only workspace files are saved, not RAM or credentials. Google may still terminate the VM; completed snapshots are recoverable. Can be long-running.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNodefault
argumentsNo
stop_afterNo
script_pathYes
source_directoryNo
checkpoint_secondsNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers unusually rich disclosure: it covers restore/overwrite behavior, uploads, checkpointing, Drive flush, default shutdown, subprocess capabilities, persistence limits (workspace only, not RAM/credentials), and failure modes (Google termination, recoverable snapshots). This is exactly the side-effect and risk information an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

All six sentences are information-dense and non-redundant, with the core purpose front-loaded and caveats organized logically. No filler or restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the full execution lifecycle, persistence, default side effects, and failure recovery. It is slightly incomplete regarding return values/log retrieval and the two unnamed parameters, but it is close to complete for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implicitly documents script_path/source_directory via 'uploads the script (or... source directory)', checkpoint_seconds via 'periodically checkpoints', and stop_after via 'stops by default'. However, it never explains the 'arguments' parameter or the 'project' parameter, leaving two of six parameters semantically underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a precise action ('Run'), a specific artifact ('local Python script'), and a constrained target ('active, Drive-mounted GPU VM'). This clearly separates it from siblings like start_runtime, runtime_status, and save_workspaces, which cover VM lifecycle and workspace state rather than script execution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'active... VM' establishes that the tool is for an already-running runtime rather than for starting one, and the lifecycle notes (checkpoint, flush, stop by default, long-running) give practical context. It stops short of explicitly naming sibling alternatives or stating when-not-to-use conditions, so it doesn't reach 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

runtime_statusA
Read-only

Check the configured Colab runtime and Drive mount without provisioning compute.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds a useful behavioral nuance ('without provisioning compute') and specifies what is checked, but it does not describe auth requirements, potential latency, or whether the mount must be pre-configured. This goes slightly beyond annotations but is not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It captures the core function, target resources, and the key non-effect efficiently, earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool with annotations, the description is nearly sufficient. It names what is checked (runtime, Drive mount) and explicitly states no compute provisioning occurs. However, without an output schema, it does not mention what the result looks like (e.g., status summary, boolean, or error behavior), which could be useful but is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%, so the baseline is 4. The description correctly implies there is nothing to supply and sets expectations that the tool only performs a read-only check. No additional parameter detail is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Check') and resource ('configured Colab runtime and Drive mount'), and explicitly distinguishes it from provisioning actions by adding 'without provisioning compute.' This differentiates it from start_runtime and others in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without provisioning compute' implies an appropriate use-case (status check without side effects), but it does not explicitly name alternatives like start_runtime or state when to use this over prepare_workspace. The guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

safe_stopA
Destructive

Save all managed workspaces and stop the VM only after Drive confirms its flush.

Unmanaged processes and files outside the workspace are not captured. Saving failures leave the VM running so the user can recover. Refuses while managed jobs are active.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide destructiveHint=true, and the description goes beyond that by revealing specifics: the flush-required stop, the failure recovery (VM stays running on save failure), and the exclusion of unmanaged processes. It also discloses the refusal condition. This adds meaningful context without contradicting the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no wasted words. The primary action and condition lead, followed by scope limitations and failure/refusal behavior. Each sentence earns its place, and the structure is clean and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation, the description covers all critical decision points: what it saves, when it stops, what it ignores, what happens on failure, and when it declines. No output schema exists, but the return value isn't essential for the agent's call decision. The description is complete for a zero-parameter tool with this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema describes 100% of them (none). The description doesn't need to explain parameters. Baseline of 4 for zero-parameter tools is appropriate; there is no missing parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action — save all managed workspaces then stop the VM — and includes a necessary condition (Drive confirms flush). It explicitly distinguishes what it does not cover (unmanaged processes/files) and sets expectations about refusal. This clearly separates it from siblings like save_workspaces or runtime_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys when it is appropriate to call (when you want to save and stop) and when it will refuse (if managed jobs are active). However, it does not explicitly name alternatives such as save_workspaces for saving without stopping or runtime_status to check job activity. It gives sufficient context for an agent to infer, but stops short of explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_workspacesA

Checkpoint all managed workspaces, flush Drive, and unmount it. VM stays allocated.

Refuses if managed jobs are active. Remount Drive before further persistence operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states side effects (flushes Drive, unmounts it), state outcome (VM stays allocated), a refusal condition (managed jobs active), and a follow-up requirement (remount Drive). This is unusually transparent for a zero-parameter tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the primary action, followed by short sentences for state, guard condition, and post-condition. Every sentence adds distinct value and none are redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters, no annotations, and no output schema, the description covers all essential context: what the tool does, what side effects it has, when it refuses, and what must happen afterward. An agent has enough information to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics for the description to clarify. The baseline of 4 applies, and the description reinforces that the operation is fixed-scope and requires no input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Checkpoint all managed workspaces, flush Drive, and unmount it.' It also states 'VM stays allocated,' which clearly separates this from sibling tools like safe_stop or restore_workspace. The operation is unambiguous and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: it refuses to run while managed jobs are active, which tells the agent when not to call it, and it warns to remount Drive before further persistence operations. It does not explicitly name alternatives or compare this tool with restore_workspace or safe_stop, so it falls just short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_runtimeA

Provision or reuse the configured runtime. Default GPU is L4. Consumes Colab units.

If drive_mounted is false, run colab-persist mount in a user terminal to authorize Drive.

ParametersJSON Schema
NameRequiredDescriptionDefault
gpuNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It discloses cost (Colab units) and the default GPU, which is useful, but omits other behaviors like idempotency, async behavior, or side effects beyond cost. For a provisioning tool, this is partial disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The core purpose and default are front-loaded, and the conditional instruction is necessary and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main action, default GPU, cost, and a prerequisite. It does not describe return values or how to verify success, but given the simplicity and lack of output schema, this is reasonably complete. It could mention whether it blocks or returns immediately, but overall it's adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It mentions 'Default GPU is L4', which clarifies the default for the optional gpu parameter, but does not enumerate valid values or explain what null means beyond the default. An agent would not know what strings to pass (e.g., 'T4', 'A100').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Provision or reuse' with the resource 'runtime', and mentions the default GPU and cost. This clearly distinguishes it from siblings like runtime_status (status check) and safe_stop (stop), so an agent can select it appropriately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear conditional prerequisite (if drive_mounted is false, run a specific mount command) and mentions that it consumes Colab units. It does not explicitly name alternatives, but the action and context are clear enough to imply when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.2.1
    • First observedlist_checkpoints
    • First observedplan_dataset
    • First observedprepare_workspace
    • First observedrestore_workspace
    • First observedrun_script
    • First observedruntime_status
    • First observedsafe_stop
    • First observedsave_workspaces
    • First observedstart_runtime

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Each tool has a distinct role in the lifecycle, and descriptions clarify boundaries. The main overlaps are restore_workspace versus prepare_workspace and save_workspaces versus safe_stop, but the descriptions make the differences clear enough for an agent to select correctly.

Naming Consistency4/5

Most tools follow a verb_noun pattern such as restore_workspace, save_workspaces, start_runtime, and list_checkpoints. Minor deviations like runtime_status and safe_stop break the pattern slightly but remain readable and predictable.

Tool Count5/5

Nine tools is well-scoped for the server's purpose of managing Colab runtimes, workspace persistence, and dataset planning. Each tool covers a meaningful lifecycle step without unnecessary bloat or redundancy.

Completeness4/5

The surface covers the core workflow: start/stop runtime, status, save/restore workspaces, list checkpoints, prepare/run scripts, and dataset validation. Gaps include no explicit delete/cleanup tool and no in-tool mount/unmount operation, but these are referenced as external commands and do not block the main persistence workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Local-first MCP server for controlling Google Colab as a development, shell, file, and training runtime, with tools for notebook editing, GPU acceleration, and file transfer.
    59
    8
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP-compatible AI assistants to run Python code on Google Colab GPU/TPU runtimes, supporting accelerators like T4, A100, H100, with background execution and Google Drive integration.
    10
    3
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to execute Python code on Google Colab GPU/TPU runtimes via the official Colab CLI, with session, file, and package management capabilities.
    -