Skip to main content

MCP server for executing Python and R scripts in containerized environments

Project description

Coala Runtime

An MCP (Model Context Protocol) server for executing Python and R scripts in containerized environments with support for dynamic package installation and file mounting.

Features

  • Containerized Execution: Run Python and R scripts in isolated Docker containers
  • Dynamic Package Installation:
    • Python: Uses uv for fast package installation
    • R: Uses r2u and BiocManager for CRAN and Bioconductor packages
  • File Mounting: Bind-mount local files and directories into containers
  • Pre-installed packages: Python image includes numpy, pandas, matplotlib; R image includes tidyverse
  • MCP Integration: Exposes coala_python_executor and coala_r_executor tools for LLM interaction

Prerequisites

Installation

# Install dependencies
uv pip install -e .

# Or using pip
pip install -e .

Docker Images

By default, the server pulls the executor images from Docker Hub if they are not present locally:

  • hubentu/coala-runtime-python:latest → tagged as coala-runtime-python:latest
  • hubentu/coala-runtime-r:latest → tagged as coala-runtime-r:latest

To build the images locally instead (e.g. for development or custom Dockerfiles), run with --build or build manually:

coala-runtime --build
# or
python -m coala_runtime --build

Manual build (same as --build):

./docker/build.sh

This creates:

  • coala-runtime-python:latest - Python executor image
  • coala-runtime-r:latest - R executor image

Usage

As MCP Server

The server can be run as an MCP server for LLM integration:

coala-runtime

Or with the module runner:

python -m coala_runtime

Use coala-runtime --build (or python -m coala_runtime --build) to build Docker images locally before starting.

Configuration

See MCP_CONFIG.md for detailed configuration instructions for various MCP clients (Cursor, Claude Desktop, etc.).

Tool Schemas

coala_python_executor

Executes Python scripts in a containerized environment with uv package management.

Input:

  • script or script_file (one required): Inline Python code or host path to a .py file
  • packages (optional): Additional packages to install via uv. The image already includes numpy, pandas, matplotlib. Can include version specifiers (e.g., 'requests>=2.31.0')
  • conda_packages (optional, Python only): Conda specs installed before pip/uv (requires conda/mamba in the image)
  • docker_image (optional): Docker image to run instead of the default Coala Python image (e.g. python:3.12-slim, quay.io/biocontainers/...)
  • skip_package_install (optional): If true, skip install step (typical when docker_image already has all dependencies)
  • input_files (optional): Map of container paths to host paths for bind-mounting (e.g., {'/input/data.csv': '/host/path/data.csv'})
  • timeout (optional): Execution timeout in seconds (default: 300, 0 = no timeout, max: 3600)

Output:

  • success: Whether execution succeeded
  • exit_code: Process exit code (0 = success)
  • stdout: Standard output from script
  • stderr: Standard error output
  • output_files: List of output file paths (for files/images generated by the script)
  • output_data: Echoed output for strings/numbers (captured via print statements)
  • container_logs: Full container execution logs including package installation
  • execution_time: Execution time in seconds

coala_r_executor

Executes R scripts in a containerized environment with r2u and BiocManager.

Input:

  • script or script_file (one required): Inline R code or host path to an .R file
  • packages (optional): Additional R packages to install. Use 'bioc::package_name' format for Bioconductor packages. The image already includes tidyverse. Examples: ['ggplot2', 'dplyr', 'bioc::Biobase']
  • docker_image (optional): Docker image to run instead of the default Coala R image (must provide Rscript on PATH)
  • skip_package_install (optional): If true, skip install step (typical when docker_image already has all dependencies)
  • input_files (optional): Map of container paths to host paths for bind-mounting (e.g., {'/input/data.csv': '/host/path/data.csv'})
  • timeout (optional): Execution timeout in seconds (default: 300, 0 = no timeout, max: 3600)

Output: Same as coala_python_executor

Development

# Install with dev dependencies
uv pip install -e ".[dev]"

# Run tests
pytest

# Format code
black src tests

# Lint code
ruff check src tests

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coala_runtime-0.1.0.tar.gz (84.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coala_runtime-0.1.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file coala_runtime-0.1.0.tar.gz.

File metadata

  • Download URL: coala_runtime-0.1.0.tar.gz
  • Upload date:
  • Size: 84.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for coala_runtime-0.1.0.tar.gz
Algorithm Hash digest
SHA256 72671bf1df7a4e72a9268be449ab5f4c02f9ae04df0d313986ef5c82549ebf2d
MD5 06019fb080f201ba90465d8d4ac804d9
BLAKE2b-256 22bc31e47f07e8cfc4b84934b51ba0e9b3596e63ee5a63a019be9bd48d2f1a73

See more details on using hashes here.

Provenance

The following attestation bundles were made for coala_runtime-0.1.0.tar.gz:

Publisher: release.yml on coala-info/coala-runtime

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coala_runtime-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: coala_runtime-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for coala_runtime-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5861c912801b6c96ed4104dac4ca637614a665c17dcef480d1fbd97042dd8f9b
MD5 369b5c02b144e46088b41a4e1701f515
BLAKE2b-256 b7f2785b6dd5866045d7535c2941bd2b4199cb037216f838ba35e9031aa19334

See more details on using hashes here.

Provenance

The following attestation bundles were made for coala_runtime-0.1.0-py3-none-any.whl:

Publisher: release.yml on coala-info/coala-runtime

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page