Dremio

Integre Modelos de Linguagem de Grande Escala (LLMs) com a plataforma data lakehouse Dremio.

Documentação

Dremio MCP server

Sumário

Introdução

Este repositório fornece um servidor Model Context Protocol (MCP) para facilitar a integração de LLM com o Dremio. Se você é novo em MCP e Servidores MCP, faça nosso curso de Dremio MCP Server na Dremio University (DremioU). Se você já está familiarizado com esses conceitos, prossiga abaixo.

%%{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

Instalação

O servidor Dremio MCP pode ser implantado de duas maneiras:

Implantação Remota / HTTP Streaming

Para implantações de produção em ambientes Kubernetes, use o Helm chart:

📦 Documentação do Helm Chart

Início Rápido com 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>

Principais Recursos

  • Autenticação OAuth + External Token Provider (recomendado para produção)
  • Modo HTTP Streaming para implantações baseadas na web
  • Horizontal Pod Autoscaling para escalabilidade
  • Integração com métricas Prometheus
  • Suporte a Ingress com TLS/SSL
  • Boas práticas de segurança (non-root, filesystem somente leitura)

Documentação


Instalação Local (Desktop/Desenvolvimento)

O servidor MCP é executado localmente na máquina que executa o frontend do LLM (ex: Claude). Os passos de instalação são simples:

  1. Clone ou baixe este repositório.
  2. Instale o gerenciador de pacotes uv (observe que o servidor MCP requer python 3.11 ou posterior)
  • Se você estiver instalando pela primeira vez, reinicie seu terminal ao final da instalação
  1. Certifique-se de ter o python instalado executando o comando abaixo. Ele deve mostrar python 3.11 ou posterior (Se você não tiver o python instalado, siga as instruções aqui OU simplesmente execute uv python install)
$ uv python find
  1. Faça uma verificação de sanidade executando o comando e validando a saída conforme mostrado abaixo.
# 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                                                │
╰──────────────────────────────────────────────────────────────────────────────────╯

Configuração inicial

Existem duas configurações necessárias antes que o servidor MCP possa ser invocado.

  1. O arquivo de configuração do servidor: Isso cobrirá os detalhes de conexão e comunicação com o Dremio
  2. O arquivo de configuração do LLM: Isso cobre a configuração do aplicativo desktop do LLM (Claude por enquanto) para torná-lo ciente do servidor MCP

Início rápido

A maneira mais rápida de fazer essa configuração é -

  1. Crie o arquivo de configuração do dremio conforme descrito abaixo e esteja preparado com estes 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: a uri é o endpoint da API associado ao seu ambiente:

  • Para Dremio cloud baseado na região dos EUA (https://app.dremio.cloud) use https://api.dremio.cloud ou use a forma abreviada prod
  • Para Dremio cloud baseado na região EMEA (https://app.eu.dremio.cloud) use https://api.eu.dremio.cloud ou use a forma abreviada prodemea
  • Para implantações SW/K8S use https://<coordinator‑host>:<9047 or custom port>

Nota: Por motivos de segurança, se você não quiser que o PAT vaze para o arquivo de histórico do seu shell, crie um arquivo com seu PAT e passe-o como argumento para a configuração do dremio.

Exemplo:

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

Nota: O Claude tem requisitos de sistema, como node.js, por favor valide seus requisitos de sistema com a documentação oficial do Claude.

  1. Crie o arquivo de configuração do Claude usando
$ uv run dremio-mcp-server config create claude
  1. Valide os arquivos de configuração 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

Você terminou!. Você pode iniciar o Claude e começar a usar o servidor MCP

Demonstração (Instalação local)

Demo

O restante da documentação abaixo fornece detalhes dos arquivos de configuração


Detalhes de configuração

Arquivo de configuração do servidor MCP

Este arquivo está localizado por padrão em $HOME/.config/dremioai/config.yaml, mas pode ser substituído usando a opção --cfg em tempo de execução 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

Existem 3 modos

  1. FOR_DATA_PATTERNS - o modo normal onde o servidor MCP permitirá que o LLM visualize tabelas e dados para permitir descoberta de padrões e outros casos de uso
  2. FOR_SELF - um modo que permite ao servidor MCP inspecionar o sistema Dremio, incluindo análise de carga de trabalho e assim por diante.
  3. FOR_PROMETHEUS - um modo que permite ao servidor MCP conectar-se à sua configuração prometheus, se existir, para aprimorar insights com métricas relacionadas ao Dremio

Múltiplos modos podem ser especificados separados por ,

O arquivo de configuração do LLM (Claude)

Nota: Isso é aplicável apenas para instalações locais

Para configurar o arquivo de configuração do Claude (consulte isto como exemplo) edite o arquivo de configuração do Claude desktop

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

E então adicione esta seção

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

Isso captará o local padrão do arquivo de configuração do servidor MCP. Também pode ser passado na seção args acima como "--config-file", "<custom config file>" após run

Registro de logs

O servidor Dremio MCP grava automaticamente arquivos de log em diretórios específicos da plataforma, seguindo as convenções do sistema operacional. Isso ajuda na solução de problemas e no monitoramento da operação do servidor.

Locais dos arquivos de log

Os arquivos de log são armazenados nos seguintes locais, dependendo do seu sistema operacional:

Linux

  • Diretório: ~/.local/share/dremioai/logs/
  • Caminho completo: ~/.local/share/dremioai/logs/dremioai.log
  • Conformidade XDG: Respeita a variável de ambiente $XDG_DATA_HOME se definida

macOS

  • Diretório: ~/Library/Logs/dremioai/
  • Caminho completo: ~/Library/Logs/dremioai/dremioai.log

Windows

  • Diretório: %LOCALAPPDATA%\dremioai\logs\
  • Caminho completo: %LOCALAPPDATA%\dremioai\logs\dremioai.log
  • Local típico: C:\Users\<username>\AppData\Local\dremioai\logs\dremioai.log

Controlando o registro de logs em arquivo

Por padrão, o servidor MCP registra logs no arquivo de log mencionado acima. Para controlá-lo ainda mais, você pode usar as seguintes variáveis de ambiente e opções de linha de comando:

  1. Usar formato JSON: JSON_LOGGING=1 ou passe --enable-json-logging para logs JSON estruturados
  2. Desabilitar registro em arquivo: passe --no-log-to-file para desabilitar a gravação de logs em arquivo

Exemplo:

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

# OR 

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

O diretório de log é criado automaticamente se não existir, portanto nenhuma configuração manual é necessária.

Documentação Adicional

  1. Arquitetura: Visão geral detalhada da arquitetura do servidor Dremio MCP, incluindo interações de componentes e fluxos de dados.

  2. Ferramentas: Guia abrangente das ferramentas disponíveis, incluindo:

    • Categorias e tipos de ferramentas
    • Exemplos de uso
    • Diretrizes de desenvolvimento
    • Suporte a integração
  3. Configurações: Referência completa de configuração cobrindo:

    • Configurações de conexão do Dremio
    • Configurações de ferramentas
    • Integrações de framework
    • Variáveis de ambiente
  4. Remote HTTP streaming / Helm Chart

Informações Adicionais

Este repositório é destinado a ser um software de código aberto que incentiva contribuições de qualquer tipo, como adicionar recursos, relatar problemas e contribuir com correções. Isso não faz parte do suporte ao produto Dremio.

Testes

O projeto usa pytest para testes. Para executar os testes:

# Run all tests
$ uv run pytest tests

O GitHub Actions executa automaticamente os testes em pull requests e pushes para o branch principal.

Contribuindo

Consulte nosso Guia de Contribuição para detalhes sobre:

  • Configurando seu ambiente de desenvolvimento
  • Fazendo contribuições
  • Diretrizes de estilo de código
  • Requisitos de documentação
  • Executando testes