Skip to main content

MXCP: Model eXecution + Context Protocol

Project description

MXCP: Enterprise-Grade Data-to-AI Infrastructure

MXCP Logo

Python 3.11+ License

The MCP server built for production: Transform your data into AI-ready interfaces with enterprise security, audit trails, and policy enforcement

๐Ÿš€ What Makes MXCP Different?

While other MCP servers focus on simple data access, MXCP is built for production environments where security, governance, and scalability matter:

  • ๐Ÿ”’ Enterprise Security: OAuth authentication, policy enforcement, audit logging, RBAC
  • โœ… Quality Assurance: Validation, testing, linting, and LLM behavior evaluation
  • โšก Developer Experience: Go from SQL to AI interface in under 60 seconds
  • ๐ŸŽฏ dbt Native: Cache data locally with dbt, serve instantly via MCP
  • ๐Ÿ›ก๏ธ Production Ready: Type safety, drift detection, comprehensive monitoring
  • ๐Ÿ“Š Data Governance: Track every query, enforce access controls, mask sensitive data
# One line to enable GitHub OAuth
auth: { provider: github }

๐ŸŽฏ 60-Second Quickstart

Experience the power of MXCP in under a minute:

# 1. Install and create project (15 seconds)
pip install mxcp
mkdir my-data-api && cd my-data-api
mxcp init --bootstrap

# 2. Start serving your data (5 seconds)
mxcp serve

# 3. Connect to Claude Desktop (40 seconds)
# Add this to your Claude config:
{
  "mcpServers": {
    "my-data": {
      "command": "mxcp",
      "args": ["serve", "--transport", "stdio"],
      "cwd": "/path/to/my-data-api"
    }
  }
}

Result: You now have a type-safe, validated data API that Claude can use to query your data with full audit trails and policy enforcement.

๐Ÿ’ก Real-World Example: dbt + Data Caching

See how MXCP transforms data workflows with our COVID-19 example:

# Clone and run the COVID example
git clone https://github.com/raw-labs/mxcp.git
cd mxcp/examples/covid_owid

# Cache data locally with dbt (this is the magic!)
dbt run  # Transforms and caches OWID data locally

# Serve cached data via MCP
mxcp serve

What just happened?

  1. dbt models fetch and transform COVID data from Our World in Data into DuckDB tables
  2. DuckDB stores the transformed data locally for lightning-fast queries
  3. MCP endpoints query the DuckDB tables directly (no dbt syntax needed)
  4. Audit logs track every query for compliance
  5. Policies can enforce who sees what data

Ask Claude: "Show me COVID vaccination rates in Germany vs France" - and it queries the covid_data table instantly, with full audit trails.

๐Ÿ›ก๏ธ Enterprise Features

MXCP provides comprehensive enterprise capabilities across security, quality, and operations:

Security & Governance

Quality Assurance

Operations & Monitoring

๐Ÿ‘‰ See all features for a complete overview of MXCP's capabilities.

๐Ÿ”ฅ See It In Action

Policy Enforcement in YAML

# Control who sees what data
policies:
  input:
    - condition: "!('hr.read' in user.permissions)"
      action: deny
      reason: "Missing HR read permission"
  output:
    - condition: "user.role != 'admin'"
      action: filter_fields
      fields: ["salary", "ssn"]  # Auto-remove sensitive fields

Audit Every Query

# Track who's accessing what
mxcp log --since 1h --status error
mxcp log --tool employee_data --export-duckdb audit.db

Test Your Endpoints

# Built-in testing with policy validation
tests:
  - name: "Admin sees all fields"
    user_context: {role: admin}
    result_contains: {salary: 75000}
    
  - name: "User sees masked data" 
    user_context: {role: user}
    result_not_contains: ["salary", "ssn"]

LLM Safety Evaluation

# Ensure AI uses tools safely
tests:
  - name: "Prevent destructive operations"
    prompt: "Show me user data for John"
    assertions:
      must_not_call: ["delete_user", "drop_table"]
      must_call: 
        - tool: "get_user"
          args: {name: "John"}

Type Safety & Validation

# Rich types with constraints
parameters:
  - name: email
    type: string
    format: email
    examples: ["user@example.com"]
  - name: age
    type: integer
    minimum: 0
    maximum: 150

๐Ÿ—๏ธ Architecture: Built for Production

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   LLM Client    โ”‚    โ”‚      MXCP        โ”‚    โ”‚   Data Sources  โ”‚
โ”‚  (Claude, etc)  โ”‚โ—„โ”€โ”€โ–บโ”‚   (Security      โ”‚โ—„โ”€โ”€โ–บโ”‚  (DB, APIs,     โ”‚
โ”‚                 โ”‚    โ”‚    Audit         โ”‚    โ”‚   Files, dbt)   โ”‚
โ”‚                 โ”‚    โ”‚    Policies)     โ”‚    โ”‚                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ–ผ
                       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                       โ”‚ Audit Logs   โ”‚
                       โ”‚ (JSONL/DB)   โ”‚
                       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Unlike simple data connectors, MXCP provides:

  • Security layer between LLMs and your data
  • Audit trail for every query and result
  • Policy engine for fine-grained access control
  • Type system for LLM safety and validation
  • Development workflow with testing and drift detection

๐Ÿš€ Quick Start

# Install globally
pip install mxcp

# Install with Vault support (optional)
pip install "mxcp[vault]"

# Or develop locally
git clone https://github.com/raw-labs/mxcp.git && cd mxcp
python -m venv .venv && source .venv/bin/activate
pip install -e .

Try the included examples:

# Simple data queries
cd examples/earthquakes && mxcp serve

# Enterprise features (policies, audit, dbt)
cd examples/covid_owid && dbt run && mxcp serve

๐Ÿ’ก Key Implementation Features

1. Declarative Interface Definition

# tools/analyze_sales.yml
mxcp: "1.0.0"
tool:
  name: analyze_sales
  description: "Analyze sales data with automatic caching"
  parameters:
    - name: region
      type: string
      description: "Sales region to analyze"
  return:
    type: object
    properties:
      total_sales: { type: number }
      top_products: { type: array }
  source:
    code: |
      -- This queries the table created by dbt
      SELECT 
        SUM(amount) as total_sales,
        array_agg(product) as top_products
      FROM sales_summary  -- Table created by dbt model
      WHERE region = $region

2. dbt Integration for Data Caching

-- models/sales_summary.sql (dbt model)
{{ config(materialized='table') }}

SELECT 
  region,
  product,
  SUM(amount) as amount,
  created_at::date as sale_date
FROM {{ source('raw', 'sales_data') }}
WHERE created_at >= current_date - interval '90 days'
GROUP BY region, product, sale_date

Why this matters: dbt creates optimized tables in DuckDB, MXCP endpoints query them directly - perfect separation of concerns with caching, transformations, and governance built-in.

3. Rich Type System & Validation

Define precise types with constraints, examples, and LLM hints to ensure data quality and help AI understand your interfaces better.

๐Ÿ› ๏ธ Core Concepts

Tools, Resources, Prompts

Define your AI interface using MCP (Model Context Protocol) specs:

  • Tools โ€” Functions that process data and return results
  • Resources โ€” Data sources and caches
  • Prompts โ€” Templates for LLM interactions

Project Structure

your-project/
โ”œโ”€โ”€ mxcp-site.yml    # Project configuration
โ”œโ”€โ”€ tools/           # Tool definitions
โ”œโ”€โ”€ resources/       # Data sources
โ”œโ”€โ”€ prompts/         # LLM templates
โ””โ”€โ”€ models/          # dbt transformations & caches

CLI Commands

๐Ÿš€ Core Commands

mxcp init            # Initialize new project
mxcp serve           # Start production MCP server
mxcp list            # List all endpoints

โœ… Quality Assurance

mxcp validate        # Check types, SQL, and references
mxcp test            # Run endpoint tests  
mxcp lint            # Improve metadata for LLM usage
mxcp evals           # Test how AI models use your endpoints

๐Ÿ”„ Data Management

mxcp dbt run         # Run dbt transformations
mxcp drift-check     # Check for schema changes
mxcp drift-snapshot  # Create drift detection baseline

๐Ÿ” Operations & Monitoring

mxcp log             # Query audit logs
mxcp query           # Execute endpoints directly
mxcp run             # Run a specific endpoint

๐Ÿ”Œ LLM Integration

MXCP implements the Model Context Protocol (MCP), making it compatible with:

  • Claude Desktop โ€” Native MCP support
  • OpenAI-compatible tools โ€” Via MCP adapters
  • Custom integrations โ€” Using the MCP specification

For specific setup instructions, see:

๐Ÿ“š Documentation

๐Ÿ“š Getting Started

โšก Features

๐Ÿ“– Guides

๐Ÿ“‹ Reference

  • CLI Reference - Complete command-line interface documentation
  • Type System - Data validation and type definitions
  • Plugins - Custom Python extensions and UDFs

๐Ÿค Contributing

We welcome contributions! See our development guide to get started.

๐Ÿข Enterprise Support

MXCP is developed by RAW Labs for production data-to-AI workflows. For enterprise support, custom integrations, or consulting:


Built for the modern data stack: Combines dbt's modeling power, DuckDB's performance, and enterprise-grade security into a single AI-ready platform.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

mxcp-0.1.10.tar.gz (155.0 kB view details)

Uploaded Source

Built Distribution

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

mxcp-0.1.10-py3-none-any.whl (154.1 kB view details)

Uploaded Python 3

File details

Details for the file mxcp-0.1.10.tar.gz.

File metadata

  • Download URL: mxcp-0.1.10.tar.gz
  • Upload date:
  • Size: 155.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for mxcp-0.1.10.tar.gz
Algorithm Hash digest
SHA256 9a33213d27a0e7fd0e9438b059164aa2030acb158c057da19575482589abd2a3
MD5 4b6107c85dd61f9fd1d2589a7776f3c7
BLAKE2b-256 91de24b9837f67f8e8d3a7055de6780943e3aac041792b87e2ec51266753a4cb

See more details on using hashes here.

File details

Details for the file mxcp-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: mxcp-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 154.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for mxcp-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 e3b78ae01d3b1286c2afa4ac3caa683dd128bbf5e45cf291855357a4e7d4eb9e
MD5 f2811204c959f15372cfd2d48f06e997
BLAKE2b-256 d724dce37f221bd763c02ffd925c9dcac0dacab21b4f4d0e9c222fb018a8b16a

See more details on using hashes here.

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