cablecar-mcp-server

AartikSarma/cablecar-mcp-server

3.3

If you are the rightful owner of cablecar-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

CableCar is a modular, extensible Model Context Protocol (MCP) server designed for AI-assisted clinical research, focusing on privacy-first design and standards-compliant reporting.

Tools
7
Resources
0
Prompts
0

CableCar: Connecting AI to Big Longitudinal EMRs for Clinical Analytics and Research

A modular, extensible MCP (Model Context Protocol) server for AI-assisted clinical research with privacy-first design and standards-compliant reporting.

🌟 Overview

CableCar enables clinical researchers to:

  • Import & analyze clinical datasets with automatic schema validation
  • Build patient cohorts using complex clinical criteria
  • Perform statistical analyses with comprehensive privacy protection
  • Generate publication-ready reports following STROBE/TRIPOD+AI standards
  • Export reproducible code for federated multi-site validation
  • Extend functionality with community-contributed analysis plugins

šŸ—ļø Architecture

CableCar uses a modular plugin architecture that makes it easy to add new analysis capabilities:

šŸ“ cablecar_research/
ā”œā”€ā”€ 🧩 plugins/
│   ā”œā”€ā”€ core/           # Built-in analyses (descriptive stats, regression)
│   ā”œā”€ā”€ community/      # Community contributions 
│   └── contrib/        # Experimental analyses
ā”œā”€ā”€ šŸ”’ privacy/         # Privacy protection & data sanitization
ā”œā”€ā”€ šŸ“Š reporting/       # STROBE/TRIPOD+AI compliant reports
└── šŸ”§ registry.py     # Dynamic plugin discovery & MCP integration

Key Features

šŸ”Œ Unified Plugin Architecture (New!)

  • All analysis functions implemented as modular plugins
  • Single source of truth - no code duplication
  • Automatic plugin discovery and loading
  • Standardized analysis interface with validation
  • Dynamic MCP tool generation with full metadata
  • Hot-pluggable extensions without server restart

šŸ”’ Privacy-First Design

  • Cell suppression for small counts
  • Local processing - data never leaves your system

šŸ“ˆ Standards Compliance

  • STROBE reporting for observational studies
  • TRIPOD+AI for prediction models with ML interpretability
  • Publication-ready outputs with checklists
  • Comprehensive sensitivity analysis support

🌐 Multi-Site Ready

  • Generates portable analysis code (Python/R)
  • Federated research support with Docker containers
  • No patient data sharing required
  • Identical analysis execution across sites

šŸš€ Quick Start

Installation

# Clone repository
git clone https://github.com/AartikSarma/cablecar-mcp-server.git
cd cablecar_mcp_server

# Install dependencies
pip install -r requirements.txt

# Generate synthetic test data
python synthetic_data/clif_generator.py

Start the MCP Server

python -m server.main --data-path ./data/synthetic

Claude Desktop Configuration

Add to your Claude Desktop MCP settings:

{
    "mcpServers": {
      "CableCar": {
        "command": "python",
        "args": ["-m", "server.main", "--data-path", "./data/synthetic"],
        "cwd": "/path/to/cablecar_mcp_server",
        "env": {
          "PYTHONPATH": "/path/to/cablecar_mcp_server"
        }
      }
}

šŸ“Š Available Analysis Tools

Core System Tools (7)

  • import_dataset - Load and validate clinical datasets with schema checking
  • design_study - Interactive study design wizard with methodological guidance
  • explore_data - Comprehensive data exploration with privacy-safe summaries
  • export_analysis_code - Generate complete, reproducible analysis code for multi-site validation
  • get_analysis_summary - Get summary of all analyses performed in current session
  • get_privacy_report - Generate comprehensive privacy compliance report
  • list_available_plugins - List all available analysis plugins and their capabilities

Analysis Plugins (9)

All analysis functions are now implemented as modular plugins with standardized interfaces:

šŸ“Š Descriptive & Exploratory

  • run_descriptive_statistics - Publication-ready Table 1 with statistical tests and stratification
  • run_exploratory_data_analysis - Comprehensive EDA with data quality, distributions, correlations, outliers

šŸ”¬ Statistical Testing & Modeling

  • run_hypothesis_testing - Comprehensive statistical hypothesis testing with multiple comparison corrections
  • run_regression_analysis - Linear, logistic, and Cox regression with diagnostics and validation
  • run_ml_models - AutoML with validation, interpretability, and TRIPOD+AI compliance

šŸŽÆ Specialized Analyses

  • run_propensity_score_matching - Propensity score matching for causal inference
  • run_sensitivity_analysis - Robustness testing for missing data, outliers, definitions, and subgroups

šŸ“ Standards-Compliant Reporting

  • run_strobe_reporter - STROBE-compliant reports for observational studies
  • run_tripod_reporter - TRIPOD+AI compliant reports for prediction model studies

All plugins are automatically discovered and available as MCP tools with full metadata and validation

šŸ”§ Usage Examples

Basic Data Analysis Workflow

# 1. Import your clinical dataset
import_dataset(
    data_path="/path/to/clinical/data",
    data_format="clif",
    privacy_level="standard"
)

# 2. Design your study approach
design_study(
    research_question="Does early antibiotic therapy improve outcomes?",
    study_type="analytical"
)

# 3. Generate baseline characteristics table
run_descriptive_statistics(
    variables=["age", "sex", "comorbidities", "severity_score"],
    stratify_by="antibiotic_timing",
    output_format="publication"
)

# 4. Test your hypothesis  
run_hypothesis_testing(
    outcome_variables=["mortality", "length_of_stay"],
    group_variable="antibiotic_timing",
    correction_method="fdr_bh"
)

# 5. Generate publication report
run_strobe_reporter(
    study_design="cohort",
    study_title="Early Antibiotic Therapy and Clinical Outcomes",
    study_objective="To assess the impact of early antibiotic therapy on patient outcomes",
    primary_exposure="antibiotic_timing",
    primary_outcome="mortality",
    include_checklist=true
)

# 6. Export code for multi-site validation
export_analysis_code(
    language="python",
    include_all_analyses=true
)

Advanced Analysis with Plugins

# Comprehensive exploratory data analysis
run_exploratory_data_analysis(
    target_variable="mortality",
    include_correlations=true,
    include_distributions=true,
    include_outlier_detection=true
)

# Propensity score matching for causal inference
run_propensity_score_matching(
    treatment_variable="antibiotic_timing",
    outcome_variables=["mortality", "length_of_stay"], 
    matching_variables=["age", "sex", "severity_score"],
    matching_ratio=1,
    output_format="detailed"
)

# Sensitivity analysis for robustness testing
run_sensitivity_analysis(
    primary_results=previous_analysis_results,
    outcome_column="mortality",
    missing_data_methods=["complete_case", "multiple_imputation"],
    outlier_methods=["iqr", "isolation_forest"],
    sensitivity_threshold=0.2
)

# Generate TRIPOD+AI compliant prediction model report
run_tripod_reporter(
    study_type="development_and_validation",
    model_title="ICU Mortality Prediction Model",
    study_objective="Develop and validate a model to predict ICU mortality",
    intended_use="Clinical decision support for ICU risk stratification",
    outcome_variable="mortality",
    outcome_type="binary",
    predictor_variables=["age", "severity_score", "comorbidities"],
    model_type="machine_learning"
)

🧩 Extending CableCar: Plugin Development

Create a New Plugin

Generate a plugin template in seconds:

python scripts/generate_plugin_template.py \
    --name "survival_analysis" \
    --type "inferential" \
    --author "Dr. Jane Smith" \
    --description "Cox proportional hazards survival analysis"

This creates:

  • Plugin code with standardized interface
  • Comprehensive test suite
  • Complete documentation template

Plugin Structure

Every plugin implements the BaseAnalysis interface:

from cablecar_research.analysis.base import BaseAnalysis, AnalysisMetadata, AnalysisType

class SurvivalAnalysisPlugin(BaseAnalysis):
    metadata = AnalysisMetadata(
        name="survival_analysis",
        display_name="Survival Analysis", 
        description="Cox proportional hazards survival analysis with comprehensive diagnostics",
        analysis_type=AnalysisType.INFERENTIAL,
        required_columns=["time", "event"],
        optional_columns=["covariates"],
        parameters={
            "time_column": {
                "type": "string",
                "description": "Time to event or censoring column",
                "required": True
            },
            "event_column": {
                "type": "string", 
                "description": "Binary event indicator column",
                "required": True
            },
            "covariate_columns": {
                "type": "list",
                "description": "List of covariate columns for Cox model",
                "required": False,
                "default": []
            }
        }
    )
    
    def validate_inputs(self, df: pd.DataFrame, **kwargs) -> List[str]:
        """Validate analysis inputs - returns list of error messages"""
        errors = []
        if 'time_column' not in kwargs:
            errors.append("time_column is required")
        # ... additional validation
        return errors
        
    def run_analysis(self, df: pd.DataFrame, **kwargs) -> Dict[str, Any]:
        """Execute the survival analysis"""
        time_col = kwargs['time_column']
        event_col = kwargs['event_column']
        # ... analysis implementation
        return results
        
    def format_results(self, results: Dict[str, Any]) -> str:
        """Format results for display"""
        # ... formatting implementation
        return formatted_output
        
    def get_required_parameters(self) -> List[str]:
        """Get list of required parameters"""
        return ["time_column", "event_column"]

Your plugin is automatically:

  • Discovered by the registry
  • Available as run_survival_analysis MCP tool
  • Integrated with privacy protection
  • Documented and tested

šŸ“ Data Formats

CableCar supports multiple clinical data formats:

CLIF (Common Longitudinal ICU Format)

Standard format for ICU research data:

data/
ā”œā”€ā”€ patient.csv                    # Demographics, outcomes
ā”œā”€ā”€ hospitalization.csv            # Admission/discharge
ā”œā”€ā”€ vitals.csv                     # Vital signs  
ā”œā”€ā”€ labs.csv                       # Laboratory values
ā”œā”€ā”€ respiratory_support.csv        # Ventilation data
└── medication_administration.csv  # Medications

Custom Clinical Datasets

Any CSV-based clinical dataset with automatic schema detection.

šŸ”’ Privacy & Security

Privacy Features

  • Cell Suppression: Small counts automatically suppressed
  • Aggregate Only: No individual patient data in results
  • Local Processing: All data stays on your system

🌐 Multi-Site Research

Generate analysis code that runs identically across clinical sites:

  1. Develop Analysis: Use CableCar to develop your analysis locally
  2. Export Code: Generate standalone Python/R scripts
  3. Distribute: Share code (no patient data) with collaborating sites
  4. Execute: Each site runs identical analysis on their local data
  5. Aggregate: Combine summary statistics for multi-site results
# Generated code runs independently of CableCar
export_analysis_code(
    language="python",
    containerize=true,  # Includes Docker setup
    include_all_analyses=true
)

šŸ¤ Contributing

We welcome contributions! CableCar's modular architecture makes it easy to add new analyses.

Ways to Contribute

  • Analysis Plugins: Add new statistical methods or clinical analyses
  • Documentation: Improve guides and examples
  • Testing: Enhance test coverage
  • Bug Fixes: Fix issues and improve reliability

Getting Started

  1. Read our
  2. Check the
  3. Browse existing for examples
  4. Use the template generator to create new plugins

Community

šŸ“„ License

MIT License - see for details.

šŸ„ Clinical Research Focus

CableCar is designed specifically for clinical research needs:

  • Privacy by Design: Built for healthcare data requirements
  • Reproducible Research: Supports open science practices
  • Multi-Site Studies: Enables federated research collaborations
  • Clinical Validation: Statistical methods appropriate for clinical data

CableCar: Connecting AI to Big Longitudinal EMRs for Clinical Analytics and Research