关于 Apache Druid MCP Server For Enterprises
Apache Druid MCP Server For Enterprises 为 Apache Druid 集群提供 MCP 接口,供数据分析和集群管理场景使用。它通过配置档案启用查询或运维工具,并支持多种传输方式及 OAuth 2.0。
主要功能
- 01查询 SQL 并浏览数据源
- 02查看段、查找表和加载队列
- 03管理摄取任务与集群运维
- 04提供资源和可定制提示词
- 05支持 STDIO、SSE 和 Streamable HTTP
适用场景
- 01用自然语言探索时间序列数据
- 02检查 Druid 数据源和段状态
- 03通过 MCP 客户端管理摄取任务
MCP 相关
该 MCP 服务向客户端提供 Druid 查询与管理工具、数据资源和提示词。支持 STDIO、SSE、Streamable HTTP;HTTP 与 SSE 默认启用 OAuth 2.0。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -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 docker.io/iunera/druid-mcp-server:2.0.1DRUID_ROUTER_URLDruid router URL for connecting to the Druid clusterDRUID_COORDINATOR_URLDruid coordinator URL for querying metadata endpoints (optional)DRUID_AUTH_USERNAME密钥Username for Druid authentication (optional)DRUID_AUTH_PASSWORD密钥Password for Druid authentication (optional)DRUID_SSL_ENABLEDEnable SSL/TLS support for Druid connectionsDRUID_SSL_SKIP_VERIFICATIONSkip SSL certificate verification (for development/testing only)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Druid MCP 服务
面向 Apache Druid 的综合性模型上下文协议(MCP)服务,提供丰富的工具、资源和提示词,用于管理和分析 Druid 集群。
由 iunera 开发——提供先进的 AI 和数据分析解决方案
概述
该 MCP 服务采用意图导向架构,配置文件会描述其使用意图以及相应的 Druid 使用领域。该服务提供三种主要类型的 MCP 组件:
- 工具——用于执行操作的可执行函数
- 资源——用于访问信息的数据提供方
- 提示词——AI 辅助指导模板
视频演示
了解如何使用 MCP 服务将 AI Agent 与 Apache Druid 集成。本教程演示如何使用自然语言,通过 Claude、ChatGPT 和 Gemini 等 AI 助手探索时间序列数据、进行统计分析和摄取数据。
点击上方缩略图,在 YouTube 上观看视频
🌊 Y̊pipe:面向 Druid 的 AI 驱动 UI
通过 Y̊pipe(前身为 Data-Philter) 以前所未有的方式体验数据。这是一款由 iunera 设计的本地桌面应用,让离线 AI 实用易用。它利用此 Druid MCP 服务,为你的 Druid 集群提供流畅的对话式界面。
- **自然语言查询:**用通俗的英语提问,即可即时获取结果。
- **本地且安全:**完全在本地运行,支持离线模型(CPU/GPU)。
- **即插即用:**开箱即用,适配 Development Druid Installation。
测试 iunera/druid-mcp-server 最简单的方法是使用 ypipe.com / https://github.com/iunera/ypipe
📋 Ypipe 集成蓝图
为实现无缝集成,我们提供了预定义的 Ypipe 集成蓝图文件:
- 蓝图文件:druid.ypipe
- 配置指南:Ypipe 示例文档
通过此蓝图,你可以在 Ypipe 中通过可视化工作区轻松连接并配置 Druid MCP 服务。
| Ypipe 工作区流程 | Druid 节点配置 |
|---|---|
![]() | ![]() |
功能
- 纯 Java
- 集成 Spring AI MCP Server
- 基于工具的架构,符合 MCP 协议规范
- 基于工具的架构:完全符合 MCP 协议规范,并支持自动生成 JSON 架构
- 多种传输模式:支持 STDIO、SSE 和 Streamable HTTP,包括 Oauth
- 实时通信:支持流式传输的服务器发送事件
- 全面的错误处理
- 可自定义的提示词模板:提供 AI 辅助指导,并支持自定义模板
- 全面的错误处理:以优雅的方式处理错误并返回有意义的响应
- 企业就绪:提供生产级配置和安全功能
MCP Inspector 界面
连接到 MCP 客户端后,你可以通过 MCP Inspector 界面检查可用的工具、资源和提示词:
可用工具

工具界面展示了所有可用的 Druid 管理功能,并按功能领域分类,包括数据管理、摄取管理以及监控与健康状况。
可用资源

资源界面显示通过 MCP 协议可检索的所有 Druid 数据源和元数据。
可用提示词

提示词界面显示适用于各种 Druid 管理任务和数据分析工作流的所有 AI 辅助指导模板。
快速开始
面向大模型的 MCP 配置
我们提供了可直接使用的 MCP 配置文件 mcp-servers-config.json,可与大模型客户端配合使用,以连接此 Druid MCP 服务。
示例
此配置包含多种集成和传输选项:
- STDIO(默认):参见 examples/stdio/README.md — MCP 客户端通过 STDIO 启动服务。
- Streamable HTTP(配置:http):参见 examples/streamable-http/README.md — 根据 MCP 2025-06-18 规范使用单一 /mcp 端点。
- Ypipe Blueprint:参见 examples/ypipe/README.md — 使用 Ypipe 桌面客户端中的 druid.ypipe Blueprint 配置并运行 Druid MCP Server。
使用环境变量的 Docker 示例:
# STDIO mode (default)
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
# HTTP mode (enable profile 'http' and expose /mcp)
docker run -p 8080:8080 \
-e SPRING_PROFILES_ACTIVE=http,query \
-e DRUID_ROUTER_URL=http://your-druid-router:8888 \
-e DRUID_COORDINATOR_URL=http://your-druid-coordinator:8081 \
iunera/druid-mcp-server:latest
关于 Spring 配置文件的说明:
- 默认配置文件:stdio,query
- HTTP 配置文件:设置 SPRING_PROFILES_ACTIVE=http,query,以在 /mcp 启用 Streamable HTTP
先决条件
- Java 25
- Maven 3.6+
- Apache Druid 集群正在运行,且 Router 使用端口 8888
构建和运行
# Build the application
mvn clean package -DskipTests
# Run the application
java -jar target/druid-mcp-server-2.0.1.jar
服务默认将在端口 8080 上启动。
有关详细的构建说明、测试、Docker 设置和开发指南,请参阅 development.md。
安全与身份验证
- Streamable HTTP 和 SSE 传输默认使用 OAuth 2.0 进行保护。
- 客户端连接时必须在 Authorization 标头中发送有效的 Bearer 令牌。
- 示例:Authorization: Bearer YOUR_JWT_TOKEN
环境变量
DRUID_MCP_SECURITY_OAUTH2_ENABLED:- **说明:**启用或禁用用于客户端身份验证的 OAuth2 安全机制。
- **类型:**布尔值
- 默认值:
true(如上文所述,默认启用 OAuth2) - **用法:**设置为
false可禁用 OAuth2 身份验证。禁用后,客户端无需提供 OAuth2 令牌即可访问服务。
- 如需集成企业 SSO(OpenID Connect、Azure AD、Keycloak 等),请发送咨询邮件至 [email protected],并参阅 联系与支持。
从 Maven Central 安装
如果希望使用预构建的 JAR,而不从源代码构建,可直接从 Maven Central 下载并运行。
先决条件
- 仅需 Java 25 JRE
下载并运行
从 Maven Central 下载 JAR:https://repo.maven.apache.org/maven2/com/iunera/druid-mcp-server/
# STDIO mode (default)
java -jar target/druid-mcp-server-2.0.1.jar
# HTTP mode (profile: http) - exposes /mcp on port 8080
java -Dspring.profiles.active=http \
-jar target/druid-mcp-server-2.0.1.jar
面向开发者
有关详细的开发信息,包括构建说明、测试指南、架构详情和贡献指南,请参阅 development.md。
按功能分类的可用工具
MCP 服务会根据当前启用的 Spring 配置文件(SPRING_PROFILES_ACTIVE)动态激活工具。默认配置以 STDIO 模式运行服务,并启用 query 配置文件。
配置文件:query(默认启用的配置文件)
提供安全、只读的数据查询和浏览功能。
| 工具 | 描述 | 参数 | Druid API 端点 / 功能 |
|---|---|---|---|
getDatasources | 列出所有可用的 Apache Druid 数据源,或获取特定数据源的详细架构。 | datasourceName(String,可选),detailed(Boolean,可选) | /druid/v2/sql(查询 INFORMATION_SCHEMA.TABLES 和 COLUMNS 等系统目录) |
getLookups | 获取所有层级或特定层级中查找表的配置或状态。 | tier(String,可选),lookupName(String,可选),includeStatus(Boolean,可选) | /druid/coordinator/v1/lookups/config 和 /status 端点 |
getSegments | 获取段元数据,或获取特定段的详细信息。 | datasource(String,可选),segmentId(String,可选),detailed(Boolean,可选),metadataOnly(Boolean,可选) | /druid/coordinator/v1/datasources/{ds}/segments 和系统表(通过 /druid/v2/sql 访问 sys.segments) |
getSegmentLoadQueue | 获取显示当前正在加载的段的加载队列状态。 | serverName(String,可选) | /druid/coordinator/v1/loadqueue |
queryDruidSql | 对 Druid 数据源执行 SQL 查询。 | sqlQuery(String,必填) | /druid/v2/sql(Router / Broker SQL 端点) |
配置文件:ops
提供对摄取规范、任务、流式监督器、保留规则和压实操作的管理控制。
| 工具 | 描述 | 参数 | Druid API 端点 / 功能 |
|---|---|---|---|
getCompactionConfig | 查看数据源的压缩配置或配置变更历史。 | datasource(String,可选),includeHistory(Boolean,可选) | /druid/coordinator/v1/config/compaction 端点 |
getCompactionStatus | 获取当前压缩任务的状态和进度。 | datasource(String,可选) | /druid/coordinator/v1/compaction/status |
manageCompaction | 添加、更新或删除压缩配置。 | action(Enum:UPSERT、DELETE,必需),datasource(String,必需),configJson(String,可选) | /druid/coordinator/v1/config/compaction(POST/DELETE) |
manageDatasourceOrSegment | 修改分段状态或永久删除数据源。 | action(Enum:ENABLE_SEGMENT、DISABLE_SEGMENT、KILL_DATASOURCE,必需),datasource(String,必需),segmentId(String,可选),interval(String,可选) | /druid/coordinator/v1/datasources 和分段 POST/DELETE |
manageLookup | 创建、更新或删除 Lookup 配置。 | action(Enum:UPSERT、DELETE,必需),tier(String,必需),lookupName(String,必需),configJson(String,可选) | /druid/coordinator/v1/lookups/config(POST/DELETE) |
queryDruidMultiStage | 对 Druid 数据源执行多阶段 SQL 查询(MSQ),并将其作为任务运行。 | sqlQuery(String,必需) | /druid/v2/sql/task(MSQ 执行端点) |
queryDruidMultiStageWithContext | 使用自定义上下文参数执行多阶段 SQL 查询。 | sqlQuery(String,必需),contextJson(String,可选) | /druid/v2/sql/task,支持上下文配置 |
getMultiStageQueryTaskStatus | 获取多阶段查询任务的状态。 | taskId(String,必需) | /druid/indexer/v1/task/{taskId}/status |
cancelMultiStageQueryTask | 取消正在运行的多阶段查询任务。 | taskId(String,必需) | /druid/indexer/v1/task/{taskId}/shutdown(POST) |
getRetentionRules | 获取指定数据源或所有数据源的保留规则或审计历史。 | datasource(String,可选),includeHistory(Boolean,可选) | /druid/coordinator/v1/rules |
manageRetentionRules | 更新指定数据源的保留规则配置。 | datasource(String,必需),rulesJson(String,必需) | /druid/coordinator/v1/rules |
submitIngestion | 提交 Druid 摄取规范,或生成简单的批处理模板。 | action(Enum:SUBMIT_SPEC、GENERATE_TEMPLATE,必需),payloadJson(String,可选),datasourceName(String,可选),inputSourceType(String,可选),inputSourcePath(String,可选) | /druid/indexer/v1/task(POST) |
getSupervisors | 列出所有 Supervisor,或查询指定 Supervisor 的详细信息。 | supervisorId(String,可选) | /druid/indexer/v1/supervisor |
manageSupervisor | 暂停、恢复或终止 Supervisor 的执行。 | supervisorId(String,必需),action(Enum:SUSPEND、RESUME、TERMINATE,必需) | /druid/indexer/v1/supervisor/{id}/(suspend/resume/terminate) |
getTasks | 列出符合指定状态的摄取任务。 | state(Enum:RUNNING、PENDING、WAITING、COMPLETED,可选) | /druid/indexer/v1/runningTasks、pendingTasks、waitingTasks、completeTasks |
getTaskDetails | 获取任务的详细信息、规范、执行报告或执行日志。 | taskId(String,必需),aspect(Enum:STATUS、RAW_DETAILS、SPEC、REPORTS、LOG,必需),logOffset(Long,可选) | /druid/indexer/v1/task/{id} 的规范、状态、报告和日志端点 |
shutdownTask | 终止/关闭 Druid 任务。 | taskId(String,必需) | /druid/indexer/v1/task/{id}/shutdown(POST) |
getClusterStatus | 检查整体运行状况,或从协调器或路由器获取特定元数据/属性。 | aspect(Enum:OVERALL、COORDINATOR、ROUTER、LEADER、METADATA、PROPERTIES、SELF_DISCOVERY_COORDINATOR、SELF_DISCOVERY_ROUTER,可选) | /status/health、/status/selfDiscovered、/druid/coordinator/v1/leader、/druid/coordinator/v1/config |
getNodesStatus | 列出已注册服务器、服务器的详细状态或单个节点的状态。 | serverName(String,可选),detailed(Boolean,可选) | /druid/coordinator/v1/servers 和 /status |
diagnoseCluster | 执行自动化诊断,包括运行状况检查、配置审计或查询性能分析。 | mode(Enum:COMPREHENSIVE、QUICK、PERFORMANCE、CONFIGURATION,必需) | 协调对活动任务、服务器状态、分段数量和 API 进行诊断检查 |
checkFunctionalityHealth | 验证摄取系统运行情况、Supervisor 状态转换和历史查询延迟。 | component(Enum:ALL、SUPERVISORS、HISTORICALS、INGESTION,可选),quick(Boolean,可选) | 协调检查任务执行日志和 Supervisor 状态 |
配置:permissions
提供基本安全身份验证和授权管理。
重要
仅在同时满足以下两个条件时,才会激活基本安全工具:
- 已激活
permissions配置(spring.profiles.active=permissions)。- 已设置 Coordinator URL(
druid.coordinator.url),且该值非空。
| 工具 | 描述 | 参数 | Druid API 端点 / 功能 |
|---|---|---|---|
manageAuthentication | 管理基本安全用户和凭据。 | authenticator(String,必填)、action(枚举:LIST、GET、CREATE、DELETE、SET_PASSWORD,必填)、username(String,可选)、password(String,可选) | /druid-ext/basic-security/authentication/db/... |
manageAuthorization | 管理安全授权属性、角色和资源访问策略。 | authorizer(String,必填)、action(枚举:LIST_USERS、GET_USER、CREATE_USER、DELETE_USER、LIST_ROLES、GET_ROLE、CREATE_ROLE、DELETE_ROLE、SET_PERMISSIONS,必填)、name(String,可选)、permissionsJson(String,可选) | /druid-ext/basic-security/authorization/db/... |
manageSecurityAssignments | 配置将角色分配给用户的映射规则,或获取已配置的身份验证器链。 | authorizer(String,必填)、action(枚举:ASSIGN_ROLE、UNASSIGN_ROLE、GET_CHAIN,必填)、username(String,可选)、roleName(String,可选) | /druid-ext/basic-security/authorization/db/... 和 /status/properties |
配置:health
提供主动健康检查、集群状态、诊断以及 doctor 建议扫描。
| 工具 | 描述 | 参数 | Druid API 端点 / 功能 |
|---|---|---|---|
getClusterStatus | 检查整体健康状况,或从 Coordinator、Router 获取特定元数据/属性。 | aspect(枚举:OVERALL、COORDINATOR、ROUTER、LEADER、METADATA、PROPERTIES、SELF_DISCOVERY_COORDINATOR、SELF_DISCOVERY_ROUTER,可选) | /status/health、/status/selfDiscovered、/druid/coordinator/v1/leader、/druid/coordinator/v1/config |
getNodesStatus | 列出已注册的服务端、其详细状态或单个节点状态。 | serverName(String,可选)、detailed(Boolean,可选) | /druid/coordinator/v1/servers 和 /status |
diagnoseCluster | 执行自动诊断健康检查、配置审计或查询性能分析。 | mode(枚举:COMPREHENSIVE、QUICK、PERFORMANCE、CONFIGURATION,必填) | 对活动任务、服务端状态、分段数量和 API 执行诊断扫描 |
checkFunctionalityHealth | 验证摄取系统的运行、Supervisor 状态转换以及 Historical 查询延迟。 | component(枚举:ALL、SUPERVISORS、HISTORICALS、INGESTION,可选)、quick(Boolean,可选) | 检查任务执行日志和 Supervisor 状态 |
按功能分类的可用资源
| 功能 | 资源 URI 模式 | 描述 | 参数 |
|---|---|---|---|
| 数据源 | druid://datasource/{datasourceName} | 访问数据源信息和元数据 | datasourceName(String) |
| 数据源 | druid://datasource/{datasourceName}/details | 访问包含架构在内的数据源详细信息 | datasourceName(String) |
| Lookup | druid://lookup/{tier}/{lookupName} | 访问 Lookup 配置和数据 | tier(String)、lookupName(String) |
| Segments | druid://segment/{segmentId} | 访问分段元数据和信息 | segmentId(String) |
按功能分类的可用提示词
| 功能 | 提示词名称 | 描述 | 参数 |
|---|---|---|---|
| 数据分析 | data-exploration | 探索 Druid 数据源的指南 | datasource(String,可选) |
| 数据分析 | query-optimization | 帮助优化 Druid SQL 查询,提升性能 | query(String) |
| 集群管理 | health-check | 全面的集群健康状况评估指南 | 无 |
| 集群管理 | cluster-overview | 集群状态概览与分析 | 无 |
| 摄取管理 | ingestion-troubleshooting | 排查数据摄取问题 | issue(String,可选) |
| 摄取管理 | ingestion-setup | 设置新数据摄取管道的指南 | dataSource(String,可选) |
| 保留管理 | retention-management | 管理数据保留策略 | datasource(String,可选) |
| 压缩 | compaction-suggestions | 优化分段压缩配置 | datasource(String,可选),currentConfig(String,可选),performanceMetrics(String,可选) |
| 压缩 | compaction-troubleshooting | 排查压缩问题 | issue(String),datasource(String,可选) |
| 运维 | emergency-response | 紧急响应流程与指南 | 无 |
| 运维 | maintenance-mode | 集群维护流程 | 无 |
环境变量配置
应用可通过环境变量进行配置,这是生产环境中推荐的方式。以下列出了从 application.yaml 配置文件中提取的所有受支持环境变量。
Druid 连接
DRUID_ROUTER_URL:Druid 路由器的 URL。DRUID_AUTH_USERNAME:Druid 身份验证的用户名。DRUID_AUTH_PASSWORD:Druid 身份验证的密码。DRUID_SSL_ENABLED:启用或禁用 Druid 连接的 SSL(true/false)。DRUID_SSL_SKIP_VERIFICATION:跳过 SSL 证书验证(true/false)。DRUID_MCP_SQL_SYNTAX_CORRECTION_ENABLED:启用或禁用 SQL 语法自动修正(默认值:true)。启用后,将自动格式化查询、修正大小写,并为 Druid 标识符添加引号。DRUID_MCP_SQL_SYNTAX_CORRECTION_CACHE_TTL_MS:从 Druid 加载并缓存的表和列元数据的生存时间(TTL),单位为毫秒(默认值:300000/ 5 分钟)。
MCP 服务配置
DRUID_MCP_SECURITY_OAUTH2_ENABLED:启用或禁用用于 HTTP 客户端身份验证的 OAuth2 安全机制(true/false)。SPRING_PROFILES_ACTIVE:要激活的配置文件列表,以逗号分隔(例如,启用工具功能时使用query、ops、permissions、health,或使用http启用 HTTP 服务传输,而非默认的 STDIO)。SPRING_AI_MCP_SERVER_NAME:MCP 服务的名称。SPRING_AI_MCP_SERVER_PROTOCOL:MCP 服务使用的协议(例如,streamable)。
通用服务配置
SERVER_PORT:服务监听的端口。SERVER_SERVLET_SESSION_COOKIE_NAME:会话 Cookie 的名称。SPRING_APPLICATION_NAME:应用的名称。SPRING_CONFIG_IMPORT:导入其他配置文件。SPRING_MAIN_BANNER_MODE:启动横幅的显示模式(例如,off)。
日志记录
LOGGING_FILE_NAME:日志文件的名称。LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_SECURITY:Spring Security 的日志级别(例如,DEBUG)。
使用身份验证连接 SSL 加密的集群
本节全面介绍如何使用用户名和密码身份验证连接 SSL 加密的 Druid 集群。
前提条件
- 启用了 SSL 并提供 HTTPS 端点的 Druid 集群
- 用于 Druid 身份验证的有效用户名和密码凭据
- 已正确配置 SSL 证书(或可在测试时跳过验证)
配置方式
方法 1:环境变量(生产环境推荐)
启动 MCP 服务前,设置以下环境变量:
# Druid cluster URL with HTTPS
export DRUID_ROUTER_URL="https://your-druid-cluster.example.com:8888"
# Authentication credentials
export DRUID_AUTH_USERNAME="your-username"
export DRUID_AUTH_PASSWORD="your-password"
# SSL configuration
export DRUID_SSL_ENABLED="true"
export DRUID_SSL_SKIP_VERIFICATION="false" # Use "true" only for testing
# Start the MCP server
java -jar target/druid-mcp-server-2.0.1.jar
方法 2:运行时系统属性
将配置作为 JVM 系统属性传入:
java -Ddruid.router.url="http://localhost:8888" \
-Ddruid.auth.username="admin" \
-Ddruid.auth.password="password" \
-jar target/druid-mcp-server-2.0.1.jar
SSL 配置选项
生产环境 SSL 设置
对于使用有效 SSL 证书的生产环境:
export DRUID_ROUTER_URL="https://druid-prod.company.com:8888"
export DRUID_SSL_ENABLED="true"
export DRUID_SSL_SKIP_VERIFICATION="false"
服务器将使用系统的默认信任库来验证 SSL 证书。
身份验证方法
MCP 服务支持使用用户名和密码进行 HTTP Basic 身份验证:
- 用户名:通过
DRUID_AUTH_USERNAME或druid.auth.username设置 - 密码:通过
DRUID_AUTH_PASSWORD或druid.auth.password设置
凭据会自动使用 Base64 编码,并通过 Authorization: Basic 标头随每个请求发送。
使用 SSL 配置 MCP 客户端
更新 mcp-servers-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:2.0.1"
],
"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"
}
}
}
}
MCP 提示词自定义
服务器通过位于 src/main/resources/ 的 prompts.properties 文件提供丰富的提示词自定义功能。
提示词配置结构
prompts.properties 文件包含:
- 全局设置:启用或禁用提示词并设置水印
- 功能开关:控制哪些提示词可用
- 自定义变量:组织特定信息
- 模板定义:各项功能的完整提示词模板
覆盖提示词
你可以使用 -D 标志通过 Java 系统属性覆盖任何提示词模板:
方法 1:系统属性(运行时覆盖)
java -Dprompts.druid-data-exploration.template="Your custom template here" \
-jar target/druid-mcp-server-2.0.1.jar
方法 2:自定义属性文件
- 创建自定义属性文件(例如,
custom-prompts.properties):
# Custom prompt template
prompts.druid-data-exploration.template=My custom data exploration prompt:\n\
1. Custom step one\n\
2. Custom step two\n\
{datasource_section}\n\
Environment: {environment}
- 在运行时加载:
java -Dspring.config.additional-location=classpath:custom-prompts.properties \
-jar target/druid-mcp-server-2.0.1.jar
可用的提示词变量
所有提示词模板都支持以下变量:
| 变量 | 描述 | 示例 |
|---|---|---|
{environment} | 当前环境名称 | production、staging、dev |
{organizationName} | 组织名称 | Your Organization |
{contactInfo} | 联系信息 | [email protected] |
{watermark} | 生成的水印 | Generated by Druid MCP Server v1.0.0 |
{datasource} | 数据源名称(取决于上下文) | sales_data |
{query} | SQL 查询(取决于上下文) | SELECT * FROM sales_data |
提示词模板示例
自定义数据探索提示词
prompts.druid-data-exploration.template=Welcome to {organizationName} Druid Analysis!\n\n\
Please help me explore our data:\n\
{datasource_section}\n\
Environment: {environment}\n\
Contact: {contactInfo}\n\n\
{watermark}
自定义查询优化提示词
prompts.druid-query-optimization.template=Query Performance Analysis for {organizationName}\n\n\
Query to optimize: {query}\n\n\
Please provide:\n\
1. Performance bottleneck analysis\n\
2. Optimization recommendations\n\
3. Best practices for our {environment} environment\n\n\
{watermark}
禁用特定提示词
你可以将各个提示词的启用标志设为 false 来禁用它们:
mcp.prompts.data-exploration.enabled=false
mcp.prompts.query-optimization.enabled=false
或者全局禁用所有提示词:
mcp.prompts.enabled=false
MCP 集成
此服务器使用 Spring AI 的 MCP Server 框架,同时支持 STDIO 和 SSE 传输。工具、资源和提示词会自动注册,并通过 MCP 协议公开。
传输模式
Druid MCP Server 支持多种符合 MCP 2025-06-18 规范的传输模式:
Streamable HTTP 传输(推荐)
全新的 Streamable HTTP 传输支持多个客户端并发连接,性能和可扩展性更出色:
# Default configuration with Streamable HTTP
java -Dspring.profiles.active=http \
-jar target/druid-mcp-server-2.0.1.jar
# Server available at http://localhost:8080/mcp (configurable endpoint)
功能:
- 单一端点:一个 HTTP 端点同时处理 POST 和 GET 请求
- 多个客户端:支持客户端并发连接
- 可选的 SSE 流式传输:通过 Server-Sent Events 实时推送更新
- 增强的安全性:验证 Origin 标头并进行身份验证
- 向后兼容:自动回退以兼容较旧的 MCP 客户端
- 保持连接:可配置的连接健康监控
安全性
- Streamable HTTP 和 SSE 模式默认使用 OAuth 保护。连接时,MCP 客户端必须获取并发送有效的 bearer token。
- 如需集成企业级 SSO(OpenID Connect、Azure AD、Keycloak 等),请发送咨询邮件至 [email protected],并参阅联系与支持。
STDIO 传输(命令行集成)
非常适合大模型客户端和桌面应用:
java -jar target/druid-mcp-server-2.0.1.jar
旧版 SSE 传输(已弃用)
仍受支持,以保持向后兼容。它不再是默认选项,并可能在未来版本中移除。
注意:SSE 端点默认使用 OAuth 保护。客户端连接时必须携带有效的 bearer token。如需 SSO 集成支持,请参阅联系与支持。
指标收集
为了改进产品并了解使用模式,此服务会收集匿名使用指标。这些数据有助于确定新功能和改进的优先级。将 druid.mcp.metrics.enabled 设置为 false,即可选择退出匿名指标收集。
🐳 开发用 Druid 安装
对于本地开发、测试和学习,可通过 iunera/druid-local-cluster-installer 获取完整的 Docker Compose 配置,用于运行完整的 Apache Druid 集群。
这是推荐的方式,可快速启动 Druid 集群并将其用于此 MCP 服务。
主要功能:
- **完整的 Druid 集群:**包含所有核心 Druid 服务(Coordinator、Broker、Historical、MiddleManager、Router)。
- **一键安装:**为 macOS、Linux 和 Windows 提供自动化脚本。
- **跨平台:**可在任何支持 Docker 的环境中运行。
- **预配置:**为本地开发设置了合理的默认值。
- **启用基本安全功能:**预配置管理员用户(
admin/password)。 - **支持 Ypipe:**专为开箱即用地配合
iunera/ypipe使用而设计。
相关项目
此 Druid MCP 服务是 iunera 开发的综合 Apache Druid 工具和扩展生态系统的一部分。这些互补项目可增强 Druid 集群管理和数据摄取的不同方面:
🔧 Druid 集群配置
用于 Apache Druid 集群的高级配置管理和部署工具。此项目提供:
- **自动化集群设置:**针对不同部署场景提供精简的配置模板
- **配置管理:**为生产环境中的 Druid 集群提供最佳实践和模板
- **部署自动化:**用于一致部署集群的工具和脚本
- **环境专用配置:**针对开发、预发布和生产环境优化的配置
**与 Druid MCP 服务集成:**此项目提供的集群配置可与 Druid MCP 服务的监控和管理功能无缝配合,实现全面的集群生命周期管理。
📊 代码摄取 Druid 扩展
一个专门用于摄取和分析代码相关数据与指标的 Apache Druid 扩展。此扩展支持:
- 代码指标摄取:用于代码分析数据和软件指标的专用解析器
- 开发者分析:用于分析代码质量、复杂度和开发模式的工具
- CI/CD 集成:与持续集成和部署流水线无缝集成
- 自定义数据格式:支持各种代码分析工具和格式
与 Druid MCP 服务集成:此扩展扩展了可通过 MCP 服务的摄取管理工具管理的摄取功能,为代码分析用例提供专门支持。
为什么要将它们搭配使用?
- 完整生态系统:涵盖从集群设置到专用数据摄取和管理的各个环节
- 一致的架构:所有项目都遵循相似的设计原则和集成模式
- 增强的功能:每个项目都扩展了 Druid 生态系统的不同方面
- 可用于生产环境:经过实战验证的配置和扩展,适用于企业部署
路线图
- Druid 自动压缩:智能自动压缩配置
- MCP 自动补全:通过 McpComplete 使用采样增强自动补全功能
- MCP 通知:针对 MCP 操作的实时通知
- 完善的可观测性:全面的指标和追踪
- 增强的监控:先进的集群监控和告警功能
- 高级分析:由机器学习驱动的洞察和建议
- Kubernetes 支持:在 Kubernetes 上正确部署
关于 iunera
此 Druid MCP 服务由 iunera 开发和维护。iunera 是先进 AI 和数据分析解决方案的领先提供商。
iunera 专注于:
- AI 驱动的分析:用于数据分析的尖端人工智能解决方案
- 企业数据平台:可扩展的数据基础设施和分析平台(Druid、Flink、Kubernetes、Kafka、Spring)
- 模型上下文协议(MCP)解决方案:面向各种数据系统的高级 MCP 服务实现
- 定制 AI 开发:满足企业需求的定制 AI 解决方案
作为 Apache Druid 领域的资深团队,iunera 已在生产级企业场景中部署和维护了大量基于 Apache Druid 的解决方案。
需要 Apache Druid 专家咨询服务?
通过专业的 Druid 实施和优化服务,最大化您的数据回报。从架构设计到性能调优和 AI 集成,我们的专家将助您应对 Druid 的复杂性,充分释放其潜力。
需要企业级 MCP 服务开发咨询?
企业级 AI 集成与定制 MCP(模型上下文协议)服务开发
Iunera 专注于开发可用于生产环境的 AI Agent 和企业级大模型解决方案,帮助企业摆脱通用 AI 聊天机器人的局限。他们以模型上下文协议(MCP)为基础,构建安全、可扩展且面向未来的 AI 基础设施,将专有数据、遗留系统和外部 API 连接到先进的 AI 模型。
如需了解有关我们服务和解决方案的更多信息,请访问 www.iunera.com。
联系与支持
需要帮助?请联系
- 网站:https://www.iunera.com
- 专业服务:通过电子邮件联系我们,获取 Apache Druid 企业级咨询、支持和定制开发
- 开源:此项目为开源项目,欢迎社区贡献
© 2026 iunera。根据 Apache License 2.0 获得许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。



