Dremio

Integra modelos de lenguaje de gran tamaño (LLMs) con la plataforma data lakehouse de Dremio.

Documentación

Dremio MCP server

Tabla de contenidos

Introducción

Este repositorio proporciona un servidor de Protocolo de Contexto de Modelo (MCP) para facilitar la integración de LLM con Dremio. Si eres nuevo en MCP y en servidores MCP, toma nuestro curso de Dremio MCP Server en Dremio University (DremioU). Si ya estás familiarizado con estos conceptos, continúa a continuación.

%%{init:
{
    "themeVariables": {
        "fontFamily": "Inter"
    }
}
}%%

architecture-beta
    group ws(cloud)[Workstation]

    service cf(database)[Config] in ws
    service mcp(server)[Dremio MCP Server] in ws
    service claude(cloud)[Claude Desktop] in ws

    mcp:B <-- T:cf
    claude:R <--> L:mcp


    group dremio(cloud)[Dremio]
    service de(server)[Dremio Engine] in dremio

    mcp:R <--> L:de

Instalación

El servidor Dremio MCP se puede implementar de dos maneras:

Implementación remota / HTTP de streaming

Para implementaciones de producción en entornos Kubernetes, use el Helm chart:

📦 Documentación del Helm Chart

Inicio rápido con Helm

# Build Docker image
docker build -t dremio-mcp:0.1.0 .

# Production deployment with OAuth (Recommended)
helm install my-dremio-mcp ./helm/dremio-mcp \
  --set dremio.uri=https://dremio.example.com:9047

# Development/Testing with PAT (Not for production)
helm install my-dremio-mcp ./helm/dremio-mcp \
  --set dremio.uri=https://dremio.example.com:9047 \
  --set dremio.pat=<your-pat>

Características principales

  • Autenticación OAuth + Proveedor de tokens externo (recomendado para producción)
  • Modo HTTP de streaming para implementaciones basadas en web
  • Autoescalado horizontal de pods para escalabilidad
  • Integración de métricas de Prometheus
  • Soporte de Ingress con TLS/SSL
  • Mejores prácticas de seguridad (no root, sistema de archivos de solo lectura)

Documentación


Instalación local (Escritorio/Desarrollo)

El servidor MCP se ejecuta localmente en la máquina que ejecuta el frontend del LLM (por ejemplo, Claude). Los pasos de instalación son simples:

  1. Clona o descarga este repositorio.
  2. Instala el administrador de paquetes uv (ten en cuenta que el servidor MCP requiere Python 3.11 o posterior)
  • Si lo instalas por primera vez, reinicia tu terminal al final de la instalación
  1. Asegúrate de tener Python instalado ejecutando el comando a continuación. Debería mostrar Python 3.11 o posterior (Si no tienes Python instalado, sigue las instrucciones aquí O simplemente ejecuta uv python install)
$ uv python find
  1. Haz una verificación de cordura ejecutando el comando y validando la salida como se muestra a continuación.
# cd <toplevel git dir> or add `--directory <toplevel git dir>`
# to the command below

$ uv run dremio-mcp-server --help

 Usage: dremio-mcp-server [OPTIONS] COMMAND [ARGS]...

╭─ Options ────────────────────────────────────────────────────────────────────────╮
│ --install-completion            Install completion for the current shell.        │
│ --show-completion               Show completion for the current shell, to copy   │
│                                 it or customize the installation.                │
│ --help                -h        Show this message and exit.                      │
╰──────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────╮
│ run      Run the DremioAI MCP server                                             │
│ tools    Support for testing tools directly                                      │
│ config   Configuration management                                                │
╰──────────────────────────────────────────────────────────────────────────────────╯

Configuración inicial

Hay dos configuraciones necesarias antes de que se pueda invocar el servidor MCP.

  1. El archivo de configuración del servidor: Esto cubrirá los detalles de conexión y comunicación con Dremio
  2. El archivo de configuración del LLM: Esto cubre la configuración de la aplicación de escritorio del LLM (Claude por ahora) para que sea consciente del servidor MCP

Inicio rápido

La forma más rápida de hacer esta configuración es:

  1. Crea el archivo de configuración de Dremio como se describe a continuación y ten preparados estos valores
$ uv run dremio-mcp-server config create dremioai \
    --uri <dremio uri> \
    # the endpoint portion of the URL for your environment
    --pat <dremio pat> \
    # https://docs.dremio.com/current/security/authentication/personal-access-tokens/#using-a-pat
    # required for cloud: add your project ID if setting up for dremio cloud
    # --project-id <dremio project id>

Nota: la URI es el endpoint de API asociado con tu entorno:

  • Para Dremio cloud en la región de EE. UU. (https://app.dremio.cloud) usa https://api.dremio.cloud o usa la abreviatura prod
  • Para Dremio cloud en la región EMEA (https://app.eu.dremio.cloud) usa https://api.eu.dremio.cloud o usa la abreviatura prodemea
  • Para implementaciones SW/K8S usa https://<coordinator‑host>:<9047 or custom port>

Nota: Por razones de seguridad, si no quieres que el PAT se filtre en tu archivo de historial de shell, crea un archivo con tu PAT y pásalo como argumento a la configuración de Dremio.

Ejemplo:

$ uv run dremio-mcp-server config create dremioai \
    --uri <dremio uri> \
    --pat @/path/to/tokenfile \
  1. Descarga e instala Claude Desktop (Claude)

Nota: Claude tiene requisitos del sistema, como node.js, por favor valida tus requisitos del sistema con la documentación oficial de Claude.

  1. Crea el archivo de configuración de Claude usando
$ uv run dremio-mcp-server config create claude
  1. Valida los archivos de configuración usando
$ uv run dremio-mcp-server config list --type claude

Default config file: '/Users/..../Library/Application Support/Claude/claude_desktop_config.json' (exists = True)
{
    'globalShortcut': '',
    'mcpServers': {
        'Dremio': {
            'command': '/opt/homebrew/Cellar/uv/0.6.14/bin/uv',
            'args': [
                'run',
                '--directory',
                '...../dremio-mcp',
                'dremio-mcp-server',
                'run'
            ]
        }
    }
}

$ uv run dremio-mcp-server config list --type dremioai
Default config file: /Users/..../.config/dremioai/config.yaml (exists = True)
dremio:
  enable_search: false
  pat: ....
  uri: ....
tools:
  server_mode: FOR_DATA_PATTERNS

¡Ya está!. Puedes iniciar Claude y comenzar a usar el servidor MCP

Demo (Instalación local)

Demo

El resto de la documentación a continuación proporciona detalles de los archivos de configuración


Detalles de configuración

Archivo de configuración del servidor MCP

Este archivo se encuentra por defecto en $HOME/.config/dremioai/config.yaml pero se puede sobrescribir usando la opción --cfg en tiempo de ejecución para dremio-mcp-server

Formato

# The dremio section contains 3 main things - the URI to connect, PAT to use
# and optionally the project_id if using with Dremio Cloud
dremio:
    uri: https://.... # the Dremio URI
    pat: "@~/ws/tokens/idl.token" # PAT can be put in a file and used here with @ prefix
    project_id: <string> Project ID required for Dremio Cloud
    enable_search: <bool> # Optional: Enable semantic search
    allow_dml: <bool> # Optional: Allow MCP Server to create views in Dremio
tools:
    server_mode: FOR_DATA_PATTERNS # the serverm

# Optionally the MCP server can also connect and use a prometheus configuration if it
# has been enabled for your Dremio cluster (typically useful for SW installations)
#prometheus:
#uri: ...
#token: ...

Modos

Hay 3 modos

  1. FOR_DATA_PATTERNS - el modo normal donde el servidor MCP permitirá al LLM ver tablas y datos para permitir el descubrimiento de patrones y otros casos de uso
  2. FOR_SELF - un modo que permite al servidor MCP inspeccionar el sistema Dremio, incluido el análisis de carga de trabajo, etc.
  3. FOR_PROMETHEUS - un modo que permite al servidor MCP conectarse a tu configuración de Prometheus, si existe, para mejorar los conocimientos con métricas relacionadas con Dremio

Se pueden especificar múltiples modos separados por ,

El archivo de configuración del LLM (Claude)

Nota: Esto es aplicable solo para instalaciones locales

Para configurar el archivo de configuración de Claude (consulta esto como ejemplo) edita el archivo de configuración de Claude Desktop

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Y luego agrega esta sección

{
  "globalShortcut": "",
  "mcpServers": {
    "Dremio": {
      "command": "uv",
      "args": [
        "run",
        "--directory", "<toplevel git directory>"
        "dremio-mcp-server",
        "run"
      ]
    }
  }
}

Esto tomará la ubicación predeterminada del archivo de configuración del servidor MCP. También se puede pasar en la sección args anterior como "--config-file", "<custom config file>" después de run

Registro

El servidor Dremio MCP escribe automáticamente archivos de registro en directorios específicos de la plataforma siguiendo las convenciones del sistema operativo. Esto ayuda con la resolución de problemas y el monitoreo del funcionamiento del servidor.

Ubicaciones de archivos de registro

Los archivos de registro se almacenan en las siguientes ubicaciones según tu sistema operativo:

Linux

  • Directorio: ~/.local/share/dremioai/logs/
  • Ruta completa: ~/.local/share/dremioai/logs/dremioai.log
  • Cumplimiento XDG: Respeta la variable de entorno $XDG_DATA_HOME si está configurada

macOS

  • Directorio: ~/Library/Logs/dremioai/
  • Ruta completa: ~/Library/Logs/dremioai/dremioai.log

Windows

  • Directorio: %LOCALAPPDATA%\dremioai\logs\
  • Ruta completa: %LOCALAPPDATA%\dremioai\logs\dremioai.log
  • Ubicación típica: C:\Users\<username>\AppData\Local\dremioai\logs\dremioai.log

Control del registro en archivo

Por defecto, el servidor MCP registra en el archivo de registro mencionado anteriormente. Para controlarlo aún más, puedes usar las siguientes variables de entorno y opciones de línea de comandos:

  1. Usar formato JSON: JSON_LOGGING=1 o pasa --enable-json-logging para registros JSON estructurados
  2. Deshabilitar registro en archivo: pasa --no-log-to-file para deshabilitar la escritura de registros en archivo

Ejemplo:

$ uv run dremio-mcp-server run --no-log-to-file --enable-json-logging

# OR 

$ uv run dremio-mcp-server run --enable-json-logging

El directorio de registro se crea automáticamente si no existe, por lo que no se requiere configuración manual.

Documentación adicional

  1. Arquitectura: Descripción detallada de la arquitectura del servidor Dremio MCP, incluidas las interacciones de componentes y los flujos de datos.

  2. Herramientas: Guía completa de las herramientas disponibles, que incluye:

    • Categorías y tipos de herramientas
    • Ejemplos de uso
    • Guías de desarrollo
    • Soporte de integración
  3. Configuración: Referencia completa de configuración que cubre:

    • Configuración de conexión de Dremio
    • Configuraciones de herramientas
    • Integraciones de frameworks
    • Variables de entorno
  4. HTTP remoto en streaming / Helm Chart

Información adicional

Este repositorio está destinado a ser software de código abierto que fomenta contribuciones de cualquier tipo, como agregar funciones, informar problemas y contribuir con correcciones. Esto no es parte del soporte de productos de Dremio.

Pruebas

El proyecto usa pytest para las pruebas. Para ejecutar las pruebas:

# Run all tests
$ uv run pytest tests

GitHub Actions ejecuta automáticamente las pruebas en solicitudes de extracción y envíos a la rama principal.

Contribuciones

Consulta nuestra Guía de contribución para obtener detalles sobre:

  • Configuración de tu entorno de desarrollo
  • Realizar contribuciones
  • Guías de estilo de código
  • Requisitos de documentación
  • Ejecutar pruebas