Query MIMIC-IV medical data using natural language through MCP clients
Transform medical data analysis with AI! Ask questions about MIMIC-IV data in plain English and get instant insights. Choose between local demo data (free) or full cloud dataset (BigQuery).
- ๐ Natural Language Queries: Ask questions about MIMIC-IV data in plain English
 - ๐ Local SQLite: Fast queries on demo database (free, no setup)
 - โ๏ธ BigQuery Support: Access full MIMIC-IV dataset on Google Cloud
 - ๐ Enterprise Security: OAuth2 authentication with JWT tokens and rate limiting
 - ๐ก๏ธ SQL Injection Protection: Read-only queries with comprehensive validation
 
๐ก Need more options? Run
m3 --helpto see all available commands and options.
Choose your preferred installation method:
Step 1: Create Virtual Environment
# Create virtual environment (recommended)
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activateStep 2: Install M3
# Install M3
pip install m3-mcp# Clone repo first
git clone https://github.com/rafiattrach/m3.git && cd m3
# SQLite (demo DB)
docker build -t m3:lite --target lite .
docker run -d --name m3-server m3:lite tail -f /dev/null
# BigQuery (full dataset - requires GCP credentials)
docker build -t m3:bigquery --target bigquery .
docker run -d --name m3-server \
  -e M3_BACKEND=bigquery \
  -e M3_PROJECT_ID=YOUR_PROJECT_ID \
  -v $HOME/.config/gcloud:/root/.config/gcloud:ro \
  m3:bigquery tail -f /dev/nullMCP client config (Claude Desktop, LM Studio, etc.):
{
  "mcpServers": {
    "m3": {
      "command": "docker",
      "args": ["exec", "-i", "m3-server", "python", "-m", "m3.mcp_server"]
    }
  }
}Stop container: docker stop m3-server && docker rm m3-server
Step 1: Clone and Navigate
# Clone the repository
git clone https://github.com/rafiattrach/m3.git
cd m3Step 2: Create Virtual Environment
# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activateStep 3: Install M3
# Install M3
pip install .Assuming you have UV installed.
Step 1: Clone and Navigate
# Clone the repository
git clone https://github.com/rafiattrach/m3.git
cd m3Step 2: Create UV Virtual Environment
# Create virtual environment
uv venvStep 3: Install M3
uv sync
# Do not forget to use `uv run` to any subsequent commands to ensure you're using the `uv` virtual environmentAfter installation, choose your data source:
Perfect for learning and development - completely free!
- 
Download demo database:
m3 init mimic-iv-demo
 - 
Setup MCP Client:
m3 config
Alternative: For Claude Desktop specifically:
m3 config claude
 - 
Restart your MCP client and ask:
- "What tools do you have for MIMIC-IV data?"
 - "Show me patient demographics from the ICU"
 
 
For researchers needing complete MIMIC-IV data
- Google Cloud account and project with billing enabled
 - Access to MIMIC-IV on BigQuery (requires PhysioNet credentialing)
 
- 
Install Google Cloud CLI:
macOS (with Homebrew):
brew install google-cloud-sdk
Windows: Download from https://cloud.google.com/sdk/docs/install
Linux:
curl https://sdk.cloud.google.com | bash - 
Authenticate:
gcloud auth application-default login
This will open your browser - choose the Google account that has access to your BigQuery project with MIMIC-IV data.
 - 
Setup MCP Client for BigQuery:
m3 config
Alternative: For Claude Desktop specifically:
m3 config claude --backend bigquery --project-id YOUR_PROJECT_ID
 - 
Test BigQuery Access - Restart your MCP client and ask:
Use the get_race_distribution function to show me the top 5 races in MIMIC-IV admissions. 
Need to configure other MCP clients or customize settings? Use these commands:
m3 configGenerates configuration for any MCP client with step-by-step guidance.
# Quick universal config with defaults
m3 config --quick
# Universal config with custom database
m3 config --quick --backend sqlite --db-path /path/to/database.db
# Save config to file for other MCP clients
m3 config --output my_config.jsonFor production deployments requiring secure access to medical data:
# Enable OAuth2 with Claude Desktop
m3 config claude --enable-oauth2 \
  --oauth2-issuer https://your-auth-provider.com \
  --oauth2-audience m3-api \
  --oauth2-scopes "read:mimic-data"
# Or configure interactively
m3 config  # Choose OAuth2 option during setupSupported OAuth2 Providers:
- Auth0, Google Identity Platform, Microsoft Azure AD, Keycloak
 - Any OAuth2/OpenID Connect compliant provider
 
Key Benefits:
- ๐ JWT Token Validation: Industry-standard security
 - ๐ฏ Scope-based Access: Fine-grained permissions
 - ๐ก๏ธ Rate Limiting: Abuse protection
 - ๐ Audit Logging: Security monitoring
 
๐ Complete OAuth2 Setup Guide: See
docs/OAUTH2_AUTHENTICATION.mdfor detailed configuration, troubleshooting, and production deployment guidelines.
SQLite Backend (Default)
- โ Free: No cloud costs
 - โ Fast: Local queries
 - โ Easy: No authentication needed
 - โ Limited: Demo dataset only (~1k records)
 
BigQuery Backend
- โ Complete: Full MIMIC-IV dataset (~500k admissions)
 - โ Scalable: Google Cloud infrastructure
 - โ Current: Latest MIMIC-IV version (3.1)
 - โ Costs: BigQuery usage fees apply
 
When your MCP client processes questions, it uses these tools automatically:
- get_database_schema: List all available tables
 - get_table_info: Get column info and sample data for a table
 - execute_mimic_query: Execute SQL SELECT queries
 - get_icu_stays: ICU stay information and length of stay data
 - get_lab_results: Laboratory test results
 - get_race_distribution: Patient race distribution
 
Try asking your MCP client these questions:
Demographics & Statistics:
Prompt:What is the race distribution in MIMIC-IV admissions?Prompt:Show me patient demographics for ICU staysPrompt:How many total admissions are in the database?
Clinical Data:
Prompt:Find lab results for patient XPrompt:What lab tests are most commonly ordered?Prompt:Show me recent ICU admissions
Data Exploration:
Prompt:What tables are available in the database?Prompt:What tools do you have for MIMIC-IV data?
- Do you want to pre-approve the usage of all tools in Claude Desktop? Use the prompt below and then select Always Allow
Prompt:Can you please call all your tools in a logical sequence?
 
SQLite "Database not found" errors:
# Re-download demo database
m3 init mimic-iv-demoMCP client server not starting:
- Check your MCP client logs (for Claude Desktop: Help โ View Logs)
 - Verify configuration file location and format
 - Restart your MCP client completely
 
"Missing OAuth2 access token" errors:
# Set your access token
export M3_OAUTH2_TOKEN="Bearer your-access-token-here""OAuth2 authentication failed" errors:
- Verify your token hasn't expired
 - Check that required scopes are included in your token
 - Ensure your OAuth2 provider configuration is correct
 
Rate limit exceeded:
- Wait for the rate limit window to reset
 - Contact your administrator to adjust limits if needed
 
๐ง OAuth2 Troubleshooting: See
OAUTH2_AUTHENTICATION.mdfor detailed OAuth2 troubleshooting and configuration guides.
"Access Denied" errors:
- Ensure you have MIMIC-IV access on PhysioNet
 - Verify your Google Cloud project has BigQuery API enabled
 - Check that you're authenticated: 
gcloud auth list 
"Dataset not found" errors:
- Confirm your project ID is correct
 - Ensure you have access to 
physionet-dataproject 
Authentication issues:
# Re-authenticate
gcloud auth application-default login
# Check current authentication
gcloud auth listStep 1: Clone and Navigate
# Clone the repository
git clone https://github.com/rafiattrach/m3.git
cd m3Step 2: Create and Activate Virtual Environment
# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activateStep 3: Install Development Dependencies
# Install in development mode with dev dependencies
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit installStep 1: Clone and Navigate
# Clone the repository
git clone https://github.com/rafiattrach/m3.git
cd m3Step 2: Create and Activate UV Virtual Environment
# Create virtual environment
uv venvStep 3: Install Development Dependencies
# Install in development mode with dev dependencies (by default, UV runs in editable mode)
uv sync
# Install pre-commit hooks
uv run pre-commit install
# Do not forget to use `uv run` to any subsequent commands to ensure you're using the `uv` virtual environmentpytest  # All tests (includes OAuth2 and BigQuery mocks)
pytest tests/test_mcp_server.py -v  # MCP server tests
pytest tests/test_oauth2_auth.py -v  # OAuth2 authentication tests# Set environment variables
export M3_BACKEND=bigquery
export M3_PROJECT_ID=your-project-id
export GOOGLE_CLOUD_PROJECT=your-project-id
# Optional: Test with OAuth2 authentication
export M3_OAUTH2_ENABLED=true
export M3_OAUTH2_ISSUER_URL=https://your-provider.com
export M3_OAUTH2_AUDIENCE=m3-api
export M3_OAUTH2_TOKEN="Bearer your-test-token"
# Test MCP server
m3-mcp-server- ๐ Local Full Dataset: Complete MIMIC-IV locally (no cloud costs)
 - ๐ง Advanced Tools: More specialized medical data functions
 - ๐ Visualization: Built-in plotting and charting tools
 - ๐ Enhanced Security: Role-based access control, audit logging
 - ๐ Multi-tenant Support: Organization-level data isolation
 
We welcome contributions! Please:
- Fork the repository
 - Create a feature branch
 - Add tests for new functionality
 - Submit a pull request
 
Built with โค๏ธ for the medical AI community
Need help? Open an issue on GitHub or check our troubleshooting guide above.
