Skip to main content
Glama
iunera

NL Analytics MCP Server for Apache Druid

by iunera
DruidSampleClient.java3.21 kB
/* * Copyright (C) 2025 Christian Schmitt, Tim Frey * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.iunera.druidmcpserver.client; import io.modelcontextprotocol.client.McpClient; import io.modelcontextprotocol.spec.McpClientTransport; import io.modelcontextprotocol.spec.McpSchema.CallToolRequest; import io.modelcontextprotocol.spec.McpSchema.CallToolResult; import io.modelcontextprotocol.spec.McpSchema.ListToolsResult; import java.util.Map; /** * Sample client for testing Druid MCP server functionality */ public class DruidSampleClient { private final McpClientTransport transport; public DruidSampleClient(McpClientTransport transport) { this.transport = transport; } public void run() { var client = McpClient.sync(this.transport).build(); client.initialize(); client.ping(); // List and demonstrate tools ListToolsResult toolsList = client.listTools(); System.out.println("Available Druid Tools = " + toolsList); toolsList.tools().stream().forEach(tool -> { System.out.println("Tool: " + tool.name() + ", description: " + tool.description() + ", schema: " + tool.inputSchema()); }); // Test listDatasources tool System.out.println("\n=== Testing listDatasources ==="); CallToolResult datasourcesResult = client.callTool(new CallToolRequest("listDatasources", Map.of())); System.out.println("Datasources Result: " + datasourcesResult); // Test listLookups tool System.out.println("\n=== Testing listLookups ==="); CallToolResult lookupsResult = client.callTool(new CallToolRequest("listLookups", Map.of())); System.out.println("Lookups Result: " + lookupsResult); // Test queryDruidSql tool with a simple query System.out.println("\n=== Testing queryDruidSql ==="); String testQuery = "SELECT * FROM \"INFORMATION_SCHEMA\".\"TABLES\" WHERE \"TABLE_SCHEMA\" = 'druid' LIMIT 5"; CallToolResult queryResult = client.callTool(new CallToolRequest("queryDruidSql", Map.of("sqlQuery", testQuery))); System.out.println("Query Result: " + queryResult); // Test queryDruidSql with a more complex query (if datasources exist) System.out.println("\n=== Testing queryDruidSql with system query ==="); String systemQuery = "SELECT * FROM sys.segments LIMIT 3"; CallToolResult systemQueryResult = client.callTool(new CallToolRequest("queryDruidSql", Map.of("sqlQuery", systemQuery))); System.out.println("System Query Result: " + systemQueryResult); client.closeGracefully(); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/iunera/druid-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server