Smart Colab MCP Bridge

Smart Colab MCP Bridge

Connects Claude Desktop to a Google Colab runtime via ngrok for remote Python execution, enabling GPU/CPU code execution with smart timeouts and file management.

Category
Visit Server

README

Smart Colab MCP Bridge (Experimental)

This repository contains an experimental setup that connects Claude Desktop to a Google Colab runtime using a lightweight Flask server exposed via ngrok. The goal is to enable controlled, resource-aware remote execution of Python code on Colab (CPU/GPU) while orchestrating tasks locally via Claude Desktop.

This repository reflects the system as originally built, without later hardening or refactoring.


๐Ÿ“Š System Architecture

      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
      โ”‚ Claude Desktop โ”‚          โ”‚   Google Colab    โ”‚
      โ”‚   (Reasoning)  โ”‚          โ”‚    (Compute)      โ”‚
      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
              โ”‚                             โ”‚
       JSON-RPC (Stdio)                Flask Server
              โ”‚                             โ”‚
      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
      โ”‚ Local MCP Agentโ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚    ngrok Tunnel   โ”‚
      โ”‚ (State/Config) โ”‚   HTTP   โ”‚  (Public URL)     โ”‚
      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

How it works:

  1. Local MCP Agent: Lightweight Python script runs on your PC via Claude Desktop. Handles timeouts, checkpointing, and file management.
  2. Remote Executor: Colab notebook exposes a Flask API via ngrok tunnel.
  3. The Bridge: Claude sends code โ†’ Local Agent โ†’ Colab executes โ†’ Results return to Claude.

Important: Claude Desktop automatically launches MCP servers. The Colab notebook must be started manually to provide the ngrok endpoint.


โœจ Features

  • Remote Execution: Run Pandas, PyTorch, Scikit-Learn on Colab GPU/CPU
  • Smart Timeouts:
    • Quick Mode (2 min): Variable checks, light computation
    • Long Mode (10 min): Model training, dataset downloads
  • Chunked Operations: Break massive loops into safe batches to avoid timeouts
  • Local Persistence:
    • Checkpoint resumability for long-running tasks
    • Automatic file downloads from Colab /content to local machine
  • Environment Probing: Query RAM, GPU, and installed packages before execution
  • Memory Management: Cleanup endpoint to free RAM without restarting runtime

๐Ÿ“‚ Repository Structure

smart-colab-mcp/
โ”œโ”€โ”€ agent/
โ”‚   โ””โ”€โ”€ mcp_smart_colab_v2.py       # Local MCP bridge (reads from env vars)
โ”œโ”€โ”€ colab/
โ”‚   โ””โ”€โ”€ smart_colab_executor.ipynb  # Colab backend (Flask + ngrok)
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ claude_desktop_config.example.json
โ”œโ”€โ”€ requirements.txt
โ””โ”€โ”€ README.md

๐Ÿš€ Setup Instructions

Phase 1: Colab Setup

  1. Open colab/smart_colab_executor.ipynb in Google Colab
  2. Set your ngrok auth token:
    !ngrok authtoken YOUR_TOKEN_HERE
    
    Get a free token at ngrok.com/dashboard
  3. Run all cells in the notebook
  4. Copy the public HTTPS URL printed (e.g., https://xxxx-xx-xx.ngrok-free.app)
  5. Keep the notebook running - closing it kills the server

Phase 2: Local Setup

git clone https://github.com/G-karthick0501/Smart-colab-MCP.git
cd Smart-colab-MCP
pip install -r requirements.txt

Required packages:

  • mcp - Model Context Protocol
  • requests - HTTP client
  • flask - Web framework (Colab-side)
  • pyngrok - ngrok Python wrapper (Colab-side)

Phase 3: Configure Claude Desktop

Location: %APPDATA%\Claude\claude_desktop_config.json (Windows)

Example configuration:

{
  "mcpServers": {
    "smart-colab": {
      "command": "C:\\Path\\To\\Python.exe",
      "args": ["C:\\Path\\To\\agent\\mcp_smart_colab_v2.py"],
      "env": {
        "COLAB_URL": "https://your-ngrok-url.ngrok-free.app",
        "LOCAL_SAVE_DIR": "C:\\Path\\To\\results",
        "CHECKPOINT_DIR": "C:\\Path\\To\\checkpoints"
      }
    }
  }
}

Important:

  • Use double backslashes (\\) in Windows paths
  • Replace COLAB_URL with your actual ngrok URL from Phase 1
  • Create LOCAL_SAVE_DIR and CHECKPOINT_DIR folders beforehand
  • Restart Claude Desktop after editing config

๐Ÿ› ๏ธ Available Tools

Tool Description Timeout
check_colab_connection Verify ngrok tunnel is active 10s
probe_colab_environment Get GPU/RAM/packages info 30s
run_code_quick Execute short Python snippets 2 min
run_code_long Execute heavy tasks (training/downloads) 10 min
run_chunked_operation Process loops in batches with resume support 5 min/batch
list_colab_files List files in Colab /content directory 30s
download_from_colab Download file to LOCAL_SAVE_DIR 5 min
cleanup_colab Free RAM/GPU memory 30s
list_colab_variables Show runtime variables and shapes 15s
get_checkpoint Retrieve saved checkpoint data Instant

๐Ÿ” Verification & Troubleshooting

Check Running Processes

Windows:

tasklist /fi "imagename eq python.exe"

Expected output:

Image Name           PID   Session    Mem Usage
Claude.exe          1234   Console    450,000 K
python.exe          5678   Console     80,000 K  โ† Memory MCP (if configured)
python.exe          9012   Console     60,000 K  โ† Colab MCP

Test Colab Health Endpoint

curl https://your-ngrok-url/health

Expected response:

{
  "status": "ok",
  "uptime_minutes": 15,
  "memory_available_gb": 10.5,
  "memory_used_pct": 15.2
}

Common Issues

Problem Cause Solution
Connection refused Colab notebook not running Re-run notebook cells
COLAB_URL not set Missing env variable Check Claude Desktop config
ngrok URL changed Notebook restarted Update config with new URL
404 Not Found Wrong endpoint path Verify URL includes /health
Timeout on execution Code takes >10 min Use run_chunked_operation
Memory errors Colab RAM full Call cleanup_colab()
Files not found Wrong Colab path Check /content/ directory

๐Ÿ”’ Security Considerations

Known Risks (Not Hardened)

  • Arbitrary Code Execution: The /execute endpoint runs any Python code without validation
  • No Authentication: ngrok URL is publicly accessible while notebook runs
  • No Sandboxing: Code executes with full Colab runtime permissions
  • Single-Threaded: No execution locking; concurrent requests may conflict
  • Public Exposure: ngrok tunnel can be discovered if URL leaks

Recommended Practices

For Users:

  1. Never share ngrok URLs publicly
  2. Review all code before execution
  3. Use dedicated Google account for Colab experiments
  4. Terminate sessions immediately after use
  5. Monitor Colab activity dashboard

Not Implemented (Future Work):

  • Request signing / HMAC authentication
  • IP whitelisting
  • Execution locks (threading.Lock)
  • Dangerous operation restrictions
  • Rate limiting

๐Ÿ“‹ Known Limitations

These are intentionally documented and tracked for future work:

  • Execution Model: Synchronous, blocks Flask worker thread
  • No Concurrency Control: Parallel requests may cause race conditions
  • Output Size Limits: Very large outputs may exceed transport limits
  • Chunked Execution: Assumes simple loop bodies; complex indentation may break
  • No Persistence: Session state lost when Colab runtime disconnects
  • Session Lifetime: Depends on Colab's idle timeout (~90 minutes)
  • ngrok Rotation: URL changes every session (unless paid plan)
  • Flask Host Binding: Should use host="0.0.0.0" for reliability

๐Ÿ”ฎ Future Work

Planned improvements (tracked as GitHub Issues):

Security & Auth:

  • [ ] Add request signing / API key authentication
  • [ ] Implement IP whitelisting
  • [ ] Restrict dangerous Python operations (os.system, subprocess, etc.)
  • [ ] Add structured logging with execution IDs

Reliability:

  • [ ] Add execution locking mechanism (threading.Lock)
  • [ ] Implement job queueing for concurrent requests
  • [ ] Improve chunked execution robustness (handle complex indentation)
  • [ ] Add /shutdown endpoint for clean server termination

Features:

  • [ ] Persist remote state externally (Google Drive sync)
  • [ ] Replace ngrok with self-hosted tunnel (Tailscale, Cloudflare)
  • [ ] Support multiple runtimes (Kaggle, VM, local Docker)
  • [ ] Add streaming stdout for long operations
  • [ ] Implement auto-reconnect on Colab disconnect

๐Ÿ”„ How MCP Communication Works

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Claude Desktop  โ”‚  Reads config.json
โ”‚                 โ”‚  Spawns MCP servers as subprocesses
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ”‚ JSON-RPC via stdin/stdout
         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ MCP Server      โ”‚  Python process on your PC
โ”‚ (mcp_smart_     โ”‚  Reads COLAB_URL from environment
โ”‚  colab_v2.py)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ”‚ HTTP POST/GET
         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ngrok Tunnel    โ”‚  Public HTTPS โ†’ Colab VM
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Flask Server    โ”‚  Running in Colab notebook
โ”‚ (Colab Runtime) โ”‚  Executes Python via exec()
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Example JSON-RPC message:

// Request from Claude
{
  "jsonrpc": "2.0",
  "method": "run_code_quick",
  "params": {"code": "print(2 + 2)"},
  "id": 1
}

// Response from MCP
{
  "jsonrpc": "2.0",
  "result": {
    "success": true,
    "stdout": "4\n",
    "execution_time_sec": 0.12
  },
  "id": 1
}

Key Points:

  • MCP servers start automatically when Claude Desktop launches
  • Communication between Claude and MCP is local (stdin/stdout)
  • Communication between MCP and Colab is HTTP (via ngrok)
  • Colab notebook must be manually started and kept running

๐Ÿ“‹ Recommended .gitignore

# Python
venv/
__pycache__/
*.pyc
*.pyo

# Local storage
results/
checkpoints/
memory_db/
memory_backups/

# IDE
.vscode/
.idea/
*.swp
*.swo

# Secrets
*.token
.env

๐ŸŽฏ Status & Motivation

Current Status:

  • โœ… Experimental proof-of-concept
  • โœ… Single-user, local use only
  • โŒ Not hardened for security
  • โŒ Not production-ready

Why This Exists: This project was built to explore:

  • Practical MCP orchestration patterns
  • Remote execution without SSH complexity
  • Managing Colab's transient runtime constraints
  • Long-running ML workflows with checkpointing
  • Separation of concerns: reasoning (Claude) vs compute (Colab)

What Makes This Different:

  • Execution Taxonomy: Explicit quick/long/chunked modes
  • Local Checkpointing: Resume after crashes or disconnects
  • Probe-First Discipline: Check resources before execution
  • Failure Containment: Proper timeout handling and error surfaces

๐Ÿ“š Additional Resources


๐Ÿค Contributing

Contributions welcome via Issues and Pull Requests!

Before submitting:

  • Remove personal paths and tokens
  • Test with fresh Colab session
  • Document any new endpoints or tools
  • Update this README if architecture changes

Good First Issues:

  • Add execution locks to prevent concurrent runs
  • Implement basic request authentication
  • Improve error messages and logging
  • Add unit tests for MCP tools

โš ๏ธ Disclaimer

This code executes arbitrary Python remotely. It is not safe for multi-user or public deployment. Use only in trusted environments with trusted code.

The user is responsible for:

  • Reviewing all code before execution
  • Managing ngrok URL privacy
  • Understanding execution permissions
  • Monitoring Colab usage and costs

The authors provide:

  • Educational example code
  • Documentation of known risks
  • No warranties or guarantees

Use at your own risk. Not recommended for production use.


๐Ÿ™ Acknowledgments


๐Ÿ“ License

MIT License - free to use with attribution


Maintained by: G-karthick0501
Repository: github.com/G-karthick0501/Smart-colab-MCP
Last Updated: January 2026

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured