Dremio Python MCP

by ucesys

243 downloads
Not rated
GitHub

Description

# Dremio Model-Context Protocol (MCP) This project implements a Model-Context Protocol (MCP) server for Dremio. It provides a standardized way to interact with Dremio databases through the MCP. ## Features ### Resources Exposes Dremio data through **Resources**: *…

About

# Dremio Model-Context Protocol (MCP) This project implements a Model-Context Protocol (MCP) server for Dremio. It provides a standardized way to interact with Dremio databases through the MCP. ## Features ### Resources Exposes Dremio data through **Resources**: * `dremio://catalogs` - Lists all catalogs *…

Details

Author
ucesys
Downloads
243
Categories
Other

- Exposes Dremio catalogs, schemas, and tables as MCP Resources.
- Tools: list_catalogs, list_schemas, list_tables, execute_sql.
- SQL validation prevents non-read-only queries.
- Input validation protects against SQL injection.
- Supports username/password and token authentication.
- TLS support for secure communication.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Dremio Python MCP
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install the package with pip install -e . or uv pip install -e .. Create a config.yaml file or set environment variables for Dremio connection details. Run the server with mcp-dremio-server or python run_mcp_server.py. Add the server configuration to your MCP client (e.g., Claude) using the provided JSON snippet.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "dremio python mcp": {
            "dremio-mcp": {
                "command": "mcp-dremio-server",
                "args": []
            }
        }
    }
}

McpServers

{
    "dremio-mcp": {
        "command": "mcp-dremio-server",
        "args": []
    }
}

Dremio Model-Context Protocol (MCP)

This project implements a Model-Context Protocol (MCP) server for Dremio. It provides a standardized way to interact with Dremio databases through the MCP.

Features

Resources

Exposes Dremio data through Resources:

dremio://catalogs - Lists all catalogs
dremio://schemas/{catalog} - Lists all schemas in a catalog
dremio://tables/{catalog}/{schema} - Lists all tables in a schema
dremio://schema/{table_name} - Gets schema information for a table

Tools

list_catalogs
Lists all available catalogs in Dremio
Usage: list_catalogs()

list_schemas
Lists all schemas in a specific catalog
Usage: list_schemas("catalog_name")

list_tables
Lists all tables in a specific schema
Usage: list_tables("catalog_name", "schema_name")

execute_sql
Executes a SQL query against Dremio
Returns results in a structured format with metadata
Usage: execute_sql("SELECT FROM catalog.schema.table LIMIT 10")

Requirements

Python 3.10+
Dremio instance (Cloud or Software)
PyArrow with Flight support

Installation

Using pip

pip install -e .

Using uv (recommended)

# Install uv if you don't have it
curl -sSf https://astral.sh/uv/install.sh | bash

Install the package

uv pip install -e .

Configuration

Create a config.yaml file in the root directory with the following configuration:

# Dremio connection settings
dremio:
  # Connection type: 'software' for Dremio Software or 'cloud' for Dremio Cloud
  type: software

# Dremio Software connection details
software:
hostname: localhost
port: 32010
username: your_username
password: your_password
use_ssl: false

Query settings

query: # Maximum number of rows to return in a query result max_rows: 10000 # Maximum number of columns to return in schema request max_columns: 1000 # Timeout in seconds for query execution timeout: 300

Environment Variables

You can also configure the server using environment variables:

DREMIO_HOSTNAME=localhost
DREMIO_PORT=32010
DREMIO_USERNAME=your_username
DREMIO_PASSWORD=your_password
DREMIO_USE_SSL=false

For Dremio Cloud:

DREMIO_TYPE=cloud
DREMIO_ENDPOINT=data.dremio.cloud
DREMIO_PAT_TOKEN=your_personal_access_token

Usage

Running the Server

# If installed from package
mcp-dremio-server

Or run directly

python run_mcp_server.py

Integration with Claude or Other MCP Clients

Add the following configuration to your MCP client settings:

MacOS

// ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "dremio_service": {
      "command": "/Users/USERNAME/.local/bin/uv",
      "args": [
                "--directory",
                "/Users/USERNAME/PycharmProjects/dremio-python-mcp",
                "run",
                "run_mcp_server.py"
            ]
    }
  }
}

Windows

// %APPDATA%/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "dremio-mcp": {
      "command": "mcp-dremio-server",
      "args": []
    }
  }
}

Example Usage

Listing Catalogs and Schemas

// List all catalogs
list_catalogs()

// List schemas in a catalog
list_schemas("my_catalog")

// List tables in a schema
list_tables("my_catalog", "my_schema")

Executing SQL Queries

// Execute a query
results = execute_sql("SELECT  FROM my_catalog.my_schema.my_table LIMIT 10")

Security Features

SQL Validation: Prevents execution of non-read-only queries
Input Validation: Prevents SQL injection via table/schema names
TLS Support: Secure communication with Dremio
Authentication: Support for username/password and token authentication

Debugging

Since MCP servers run over stdio, debugging can be challenging. For the best debugging experience, use the MCP Inspector:

npx @modelcontextprotocol/inspector mcp-dremio-server

Upon launching, the Inspector will display a URL that you can access in your browser to begin debugging.

License

This project is licensed under the MIT License - see the LICENSE file for details.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.