← Back to directory
D

Druid MCP Server

Community
A comprehensive MCP server for Apache Druid cluster management and analytics
Category
Database #31 of 58
Stars
★ 18 Popular
Transport
stdio (local process) · Streamable HTTP · SSE
Runtime
Docker · Java 25
Credentials
Optional API key
License
Apache-2.0
Last commit
Tools
29
55FMRS · C

This is a well-crafted MCP server by iunera, a veteran in Apache Druid, to bridge AI assistants with Druid clusters. It stands out for its extensive tool set, feature-wise Spring profiles, and enterprise-grade features like the Streamable HTTP transport. Security is a key aspect, with OAuth2 by default. Its operational requirements are relatively demanding (Java 25, sometimes Docker) and require a user familiar with connecting to Druid clusters to manage it reliably. While it is a huge asset for production Druid users, its complexity may deter beginners.

Strongest · Documentation 13/20 Weakest · Security and permissions 8/20

Reliability
10/20
Security and permissions
8/20
Maintenance
12/20
Documentation
13/20
Setup experience
12/20
Why each score
Reliability 10/20
README documents tool tables per Spring profile with mapped Druid API endpoints and clear parameters, and claims comprehensive error handling. However, the repo provides no verifiable CI workflows or committed test evidence covering key paths (static cap of 12 applies; no execution evidence). Version contradictions exist: manifest says 2.0.1 while README jar and Docker examples use 2.0.0, and docker args pull :latest while identifier pins :2.0.1 — declared vs actual behavior may diverge. Deducted for missing tests/CI and version inconsistencies.
Security and permissions 8/20
Strengths: credentials passed via env vars with DRUID_AUTH_PASSWORD correctly marked isSecret in the manifest, OAuth2 enabled by default on HTTP transports, Origin validation, double-gated permissions profile. Deductions: irreversible destructive tools (KILL_DATASOURCE, shutdownTask, supervisor TERMINATE) have no confirmation mechanism by default; DRUID_SSL_SKIP_VERIFICATION allows bypassing cert validation; anonymous metrics on by default requiring manual opt-out; passwords passable in plaintext via system properties. No malware, credential theft, or fabricated identity found — the 0-4 red-line band does not apply — but lacking confirmation for destructive ops and minimal data-flow design, scored 8.
Maintenance 12/20
Apache-2.0 license is clear, packages published to Maven Central and Docker Hub, active version progression into 2.x, corporate maintainer (iunera) with consulting contact, roadmap present, repo not archived, 0 open issues. Missing evidence of a security response policy (SECURITY.md), dependency update mechanisms, and governance docs; low community signal (16 stars). Deducted for absent security-response channel and dependency-management evidence.
Documentation 13/20
README is exceptionally thorough: installation, Maven Central usage, Docker examples, SSL/auth configuration, full environment variable reference, per-profile tool/resource/prompt parameter tables, prompt customization, and metrics opt-out, with layered links to development.md and examples. Deducted for version inconsistencies (2.0.0 vs 2.0.1, :latest tag), thin coverage of tool limitations, query cost, and troubleshooting.
Setup experience 12/20
Complete config examples for three transports (STDIO/HTTP/Ypipe), a ready mcp-servers-config., clean env-var passthrough design, and prerequisites stated; a companion local Druid cluster installer lowers dependency friction. However, no CI/test execution evidence (cap of 15 per static rules), Java 25 prerequisite is unusually new for some users, and the example config defaults DRUID_SSL_SKIP_VERIFICATION=true, contradicting the security guidance.

Static review · not runListed 2026-09-08

Read the FMRS scoring method →

Fit and risk

What it can accessUses the networkConnects to a database

Best for

  • Data analysts and engineers who want to query and explore Apache Druid data via AI assistants like Claude, ChatGPT, or Gemini using natural language.
  • Teams looking to automate or streamline Druid cluster management tasks such as monitoring tasks, compaction, retention rules, and ingestion.
  • Developers integrating MCP clients via supported transports (STDIO, Streamable HTTP) looking for a standard 'out-of-the-box' server to interact with Druid.
  • Users who want a conversational data interface in a local desktop application such as Ypipe.

Not for

  • Not for latency-sensitive real-time data operations when MCP session overhead is unacceptable.
  • Not for headless, non-interactive scenarios where MCP protocol abstraction is unnecessary.
  • Not for users who require deep, custom Druid API capabilities or complex workflows that are not exposed through the MCP.
  • Not for those looking for a server to interoperate with cloud-hosted services such as Imply Polaris.

Required permissions

  • Must be provided with URLs for Druid Router (required) and Coordinator (recommended) via environment variables.
  • Optionally provide Druid username and password for authentication via HTTP Basic.
  • For HTTP transports, OAuth2 is enabled by default and requires clients to present a valid Bearer token.
  • Varying permissions are required for admin operations depending on which Spring profiles are active (`ops`, `permissions`, `health`).
  • Read access to Druid system tables/catalog and data access depending on the scope of queries.

Risks and side effects

  • Risk of unintentional data deletion or modification when the `ops` profile is active and tokens are compromised, as `manageDatasourceOrSegment` allows permanently dropping datasources.
  • Using SSL with disabled certificate verification (`DRUID_SSL_SKIP_VERIFICATION=true`) can expose connections to man-in-the-middle attacks.
  • Exposing sensitive cluster metadata and query results to AI assistants may lead to data leakage.
  • The `permissions` tools can modify users, roles, and authorization policies when proper permissions are held.
  • Because tools are activated on-demand based on Spring profiles, there is a risk of misconfiguration if the required profiles are not activated correctly.

Setup

Before you start

Runtime:Docker · Java 25

DRUID_ROUTER_URL required URL of the Druid router node (e.g. http://host.docker.internal:8888); required.
DRUID_AUTH_PASSWORD optionalsecret Password for Druid HTTP Basic authentication; secret, optional.
Other optional settings (8)
DRUID_COORDINATOR_URL optional URL of the Druid coordinator node for metadata endpoints; optional.
DRUID_AUTH_USERNAME optional Username for Druid HTTP Basic authentication; optional.
DRUID_SSL_ENABLED optional Enable or disable SSL/TLS for the Druid connection (true/false).
DRUID_SSL_SKIP_VERIFICATION optional Skip SSL certificate verification; development/testing only.
SPRING_PROFILES_ACTIVE optional Comma-separated Spring profiles (query, ops, permissions, health, or http) controlling which tools and transport are active.
DRUID_MCP_SECURITY_OAUTH2_ENABLED optional Enable OAuth2 authentication for HTTP transports; defaults to true.
DRUID_MCP_SQL_SYNTAX_CORRECTION_ENABLED optional Enable automatic SQL syntax correction; defaults to true.
DRUID_MCP_SQL_SYNTAX_CORRECTION_CACHE_TTL_MS optional TTL in milliseconds for cached table/column metadata; defaults to 300000.
  1. Ensure you have Java 25 runtime or Docker available.
  2. Have a reachable Apache Druid cluster, with its Router URL (default port 8888) and optionally Coordinator URL (port 8081).
  3. If using Docker, run docker run --rm -i -e DRUID_ROUTER_URL=http://your-druid-router:8888 -e DRUID_COORDINATOR_URL=http://your-druid-coordinator:8081 iunera/druid-mcp-server:latest.
  4. For Streamable HTTP mode, run with the http profile active, e.g., set SPRING_PROFILES_ACTIVE=http,query to expose an endpoint at http://localhost:8080/mcp.
  5. Configure your MCP client with the JSON config example above, setting the necessary environment variables.
claude_desktop_config.json
{
  "mcpServers": {
    "druid-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "DRUID_ROUTER_URL",
        "-e",
        "DRUID_COORDINATOR_URL",
        "-e",
        "DRUID_AUTH_USERNAME",
        "-e",
        "DRUID_AUTH_PASSWORD",
        "-e",
        "DRUID_SSL_ENABLED",
        "-e",
        "DRUID_SSL_SKIP_VERIFICATION",
        "iunera/druid-mcp-server:latest"
      ],
      "env": {
        "DRUID_ROUTER_URL": "http://host.docker.internal:8888",
        "DRUID_COORDINATOR_URL": "http://host.docker.internal:8081",
        "DRUID_AUTH_USERNAME": "",
        "DRUID_AUTH_PASSWORD": "",
        "DRUID_SSL_ENABLED": "false",
        "DRUID_SSL_SKIP_VERIFICATION": "true"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "druid-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "DRUID_ROUTER_URL",
        "-e",
        "DRUID_COORDINATOR_URL",
        "-e",
        "DRUID_AUTH_USERNAME",
        "-e",
        "DRUID_AUTH_PASSWORD",
        "-e",
        "DRUID_SSL_ENABLED",
        "-e",
        "DRUID_SSL_SKIP_VERIFICATION",
        "iunera/druid-mcp-server:latest"
      ],
      "env": {
        "DRUID_ROUTER_URL": "http://host.docker.internal:8888",
        "DRUID_COORDINATOR_URL": "http://host.docker.internal:8081",
        "DRUID_AUTH_USERNAME": "",
        "DRUID_AUTH_PASSWORD": "",
        "DRUID_SSL_ENABLED": "false",
        "DRUID_SSL_SKIP_VERIFICATION": "true"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add druid-mcp-server -e DRUID_ROUTER_URL=http://host.docker.internal:8888 -e DRUID_COORDINATOR_URL=http://host.docker.internal:8081 -e DRUID_AUTH_USERNAME= -e DRUID_AUTH_PASSWORD= -e DRUID_SSL_ENABLED=false -e DRUID_SSL_SKIP_VERIFICATION=true -- docker run --rm -i -e DRUID_ROUTER_URL -e DRUID_COORDINATOR_URL -e DRUID_AUTH_USERNAME -e DRUID_AUTH_PASSWORD -e DRUID_SSL_ENABLED -e DRUID_SSL_SKIP_VERIFICATION iunera/druid-mcp-server:latest

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After starting the Docker container, confirm tools like getDatasources and queryDruidSql appear in your MCP client's tool list, then call getDatasources — a returned datasource list proves the connection works.

Troubleshooting

  1. Check environment variables: confirm `DRUID_ROUTER_URL` is set with the correct protocol (http/https) and port.
  2. Verify the Druid cluster is running and the router endpoint is reachable from the MCP server's environment.
  3. For HTTP mode, ensure the `http` Spring profile is active (`SPRING_PROFILES_ACTIVE=http,...`), otherwise the server might be in STDIO mode and not listening on any port.
  4. For HTTP mode with authentication, ensure your MCP client is configured with a valid OAuth2 token or disable via `DRUID_MCP_SECURITY_OAUTH2_ENABLED=false` (for testing).
  5. If you don't see the expected tools, check the enabled Spring profiles; for example, `getTasks` is available under `ops`, while only safe read-only tools are provided under `query`.

Things to try

Once connected, you can ask your AI assistant things like:

  • List all available Druid datasources and show the detailed schema for each one.
  • Run this SQL query against my Druid cluster: SELECT * FROM sales_data LIMIT 10.
  • Check the overall cluster health and run a performance diagnostic.
  • Set up a compaction configuration for my datasource.

Tools 29

getDatasources read-only
List all available Apache Druid datasources or get detailed schema for a specific datasource.
getLookups read-only
Get configuration or status of lookups for all or a specific tier.
getSegments read-only
Fetch segment metadata or details for a specific segment.
getSegmentLoadQueue read-only
Get the load queue status showing segments currently being loaded.
queryDruidSql read-only
Execute a SQL query against Druid datasources.
getCompactionConfig read-only
View compaction configuration or configuration change history for datasources.
getCompactionStatus read-only
Retrieve the current status of compaction runs and progress.
manageCompaction writes
Add, update, or remove a compaction configuration.
Show 21 more tools
manageDatasourceOrSegment destructive
Modify segment states or permanently drop a datasource.
manageLookup writes
Create, update, or delete a lookup configuration.
queryDruidMultiStage writes
Execute a multi-stage SQL (MSQ) query against Druid datasources as a task.
queryDruidMultiStageWithContext writes
Execute a multi-stage SQL query with custom context parameters.
getMultiStageQueryTaskStatus read-only
Get the status of a multi-stage query task.
cancelMultiStageQueryTask destructive
Cancel a running multi-stage query task.
getRetentionRules read-only
Retrieve retention rules or audit history for a specific datasource or all datasources.
manageRetentionRules writes
Update retention rules configuration for a specific datasource.
submitIngestion writes
Submit a Druid ingestion specification or generate a simple batch template.
getSupervisors read-only
List all supervisors or query details of a specific supervisor.
manageSupervisor destructive
Suspend, resume, or terminate a supervisor's execution.
getTasks read-only
List ingestion tasks matching specific states.
getTaskDetails read-only
Fetch detailed information, specifications, execution reports, or execution logs for a task.
shutdownTask destructive
Kill/shutdown a Druid task.
getClusterStatus read-only
Check overall health or fetch specific metadata/properties from coordinators or routers.
getNodesStatus read-only
List registered servers, their detailed status, or single node status.
diagnoseCluster read-only
Perform automated diagnostic health checks, configuration audits, or query performance analysis.
checkFunctionalityHealth read-only
Validate the operation of ingestion systems, supervisor state transitions, and historical query latency.
manageAuthentication writes
Administer basic security users and credentials.
manageAuthorization writes
Manage security authorization properties, roles, and resource access policies.
manageSecurityAssignments writes
Configure mapping rules assigning roles to users, or retrieve the configured authenticator chains.

Use cases

Time series data exploration in Apache Druid using natural language
Managing and monitoring Druid cluster tasks, supervisors, and compaction via AI assistants
SQL query optimization and performance analysis with AI assistants
Controlled data ingestion management through AI assistants
Seamless conversational data interfaces in local desktop apps like Ypipe

Supported clients

Claude Desktop
Generic MCP Client

Listed from the project's documentation, not tested by this site.

Overview

Druid MCP Server is iunera's comprehensive Model Context Protocol (MCP) server for Apache Druid. It is built with Spring Boot and Spring AI and integrates AI assistants with Druid clusters seamlessly. The server provides tools, resources, and prompts to support both the management and analysis of Druid clusters. Its capabilities range from basic data querying and browsing (e.g., listing datasources, segments, executing SQL) to more advanced operations such as ingestion management, supervisor monitoring, retention rules, compaction, multi-stage queries, and security/authorization administration. It supports multiple transport modes (STDIO, SSE, and streamable HTTP) and is tunable via Spring profiles, enabling controlled production use.

Similar servers

Source revision 08cbd4deb172 Data synced 2026-10-19 Read the FMRS scoring method