
Dremio
STDIOMCP server for LLM integration with Dremio data management platform
MCP server for LLM integration with Dremio data management platform
Table of Contents
This repo provides an Model Context Protocol (MCP) server for easing LLM integration with Dremio. If you are new to MCP and MCP Servers take our Dremio MCP Server course on Dremio University (DremioU). If you are familiar with these concepts already please proceed below.
%%{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
The MCP server runs locally on the machine that runs the LLM frontend (eg Claude). The installation steps are simple
# 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 │ ╰──────────────────────────────────────────────────────────────────────────────────╯
There are two configurations necessary before the MCP server can be invoked.
The quickest way to do this setup is -
$ 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>
Note: the uri is api endpoint associated with your environment:
https://api.dremio.cloud
or use the short hand prod
https://api.eu.dremio.cloud
or use the short hand prodemea
Note: For security purposes, if you don't want the PAT to leak into your shell history file, create a file with your PAT in it and give it as an argument to the dremio config.
Example:
$ uv run dremio-mcp-server config create dremioai \ --uri <dremio uri> \ --pat @/path/to/tokenfile \
Note: Claude has system requirements, such as node.js, please validate your system requirements with Claude official documentation.
$ uv run dremio-mcp-server config create claude
$ 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_experimental: false pat: .... uri: .... tools: server_mode: FOR_DATA_PATTERNS
You are done!. You can start Claude and start using the MCP server
The rest of the documentation below provides details of the config files
This file is located by default at $HOME/.config/dremioai/config.yaml
but can be overriden using the --config-file
option at runtime for dremio-mcp-server
# 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_experimental: <bool> # Optional: Enable experimental features 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: ...
There are 3 modes
FOR_DATA_PATTERNS
- the normal mode where MCP server will allow LLM to look at tables and data to allow pattern discovery and other use casesFOR_SELF
- a mode which allows the MCP server to introspect Dremio system, including workload analysis and so on.FOR_PROMETHEUS
- a mode that allow MCP server to connect to your prometheus setup, if one exists, to enhance insights with Dremio related metricsMultiple modes can be specified with separated by ,
To setup the Claude config file (refer to this as an example) edit the Claude desktop config file
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
And then add this section
{ "globalShortcut": "", "mcpServers": { "Dremio": { "command": "uv", "args": [ "run", "--directory", "<toplevel git directory>" "dremio-mcp-server", "run" ] } } }
This will pickup the default location of MCP server config file. It can also be passed in the args
section above as "--config-file", "<custom config file>"
after run
Architecture: Detailed overview of the Dremio MCP server architecture, including component interactions and data flows.
Tools: Comprehensive guide to available tools, including:
Settings: Complete configuration reference covering:
Other frameworks: (Experimental) Integrate the same MCP tools with other agentic frameworks like LangChain or BeeAI without modifying the code base.
This repository is intended to be open source software that encourages contributions of any kind, like adding features, reporting issues and contributing fixes. This is not a part of Dremio product support.
The project uses pytest for testing. To run the tests:
# Run all tests $ uv run pytest tests
GitHub Actions automatically runs tests on pull requests and pushes to the main branch.
Please see our Contributing Guide for details on: