MCP server for Imply Cloud/Druid - query and manage data through AI assistants
Project description
imply-druid-mcp
A read-only MCP (Model Context Protocol) server for Imply Cloud/Druid databases. Query and explore your Druid data through Claude and other AI assistants.
Features
Supported ✅
- SQL Query Execution
- Synchronous query execution
- Asynchronous query execution (for large datasets)
- Query Management
- Check query status
- Retrieve query results
- Cancel running queries
- Table Operations
- List all tables in project
- Get table schema details
- Dashboard Operations
- List all dashboards
- Get dashboard details
- Data Cube Operations
- List all data cubes
- Get data cube details
- Execute Pivot SQL queries
Not Supported ❌
- Data Ingestion
- Table/Schema Creation or Modification
- User/Permission Management
- Supervisor Management
Tools
Query Tools
| Tool | Description |
|---|---|
execute_sql_query |
Execute a SQL query synchronously and return results immediately |
execute_async_query |
Execute a SQL query asynchronously for large datasets. Returns a query ID |
get_query_results |
Retrieve results from an async query using query ID |
get_query_status |
Check the execution status of an async query |
cancel_query |
Cancel a running async query |
Table Tools
| Tool | Description |
|---|---|
list_tables |
List all tables (datasources) in the Druid project |
get_table_schema |
Get detailed schema information for a specific table |
Dashboard Tools
| Tool | Description |
|---|---|
list_dashboards |
List all dashboards in the Imply project |
get_dashboard |
Get detailed information about a specific dashboard |
Data Cube Tools
| Tool | Description |
|---|---|
list_data_cubes |
List all data cubes in the Imply project |
get_data_cube |
Get detailed data cube information including dimensions and measures |
query_data_cube |
Execute Pivot SQL query against a data cube |
API Mapping
This MCP server maps to the Imply Polaris API:
| MCP Tool | Imply API Endpoint |
|---|---|
execute_sql_query |
POST /v1/projects/{projectId}/query/sql |
execute_async_query |
POST /v1/projects/{projectId}/query/sql/statements |
get_query_results |
GET /v1/projects/{projectId}/query/sql/statements/{queryId}/results |
get_query_status |
GET /v1/projects/{projectId}/query/sql/statements/{queryId} |
cancel_query |
DELETE /v1/projects/{projectId}/query/sql/statements/{queryId} |
list_tables |
GET /v1/projects/{projectId}/tables |
get_table_schema |
GET /v1/projects/{projectId}/tables/{tableName} |
list_dashboards |
GET /v1/projects/{projectId}/dashboards |
get_dashboard |
GET /v1/projects/{projectId}/dashboards/{dashboardId} |
list_data_cubes |
GET /v1/projects/{projectId}/data-cubes |
get_data_cube |
GET /v1/projects/{projectId}/data-cubes/{cubeName} |
query_data_cube |
POST /v0/projects/{projectId}/pivot/data-cube-sql/query |
Installation
Using uvx (Recommended)
uvx imply-druid-mcp
Using pip
pip install imply-druid-mcp
imply-druid-mcp
Using pipx
pipx install imply-druid-mcp
imply-druid-mcp
Configuration
| Environment Variable | Required | Default | Description |
|---|---|---|---|
IMPLY_ORGANIZATION |
Yes | - | Imply Cloud organization name |
IMPLY_REGION |
Yes | - | Region (e.g., us-east-1) |
IMPLY_CLOUD_PROVIDER |
Yes | - | Cloud provider: aws, gcp, or azure |
IMPLY_PROJECT_ID |
Yes | - | Imply project ID |
IMPLY_API_KEY |
Yes* | - | Imply API key |
IMPLY_ACCESS_TOKEN |
Yes* | - | OAuth access token (alternative) |
LOG_LEVEL |
No | INFO |
Logging level |
DEFAULT_QUERY_TIMEOUT_MS |
No | 30000 |
Default query timeout (ms) |
MAX_QUERY_LENGTH |
No | 10000 |
Maximum SQL query length |
*Either IMPLY_API_KEY or IMPLY_ACCESS_TOKEN is required.
Claude Desktop Setup
Add to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"imply-druid": {
"command": "uvx",
"args": ["imply-druid-mcp"],
"env": {
"IMPLY_ORGANIZATION": "your-org",
"IMPLY_REGION": "us-east-1",
"IMPLY_CLOUD_PROVIDER": "aws",
"IMPLY_PROJECT_ID": "your-project-id",
"IMPLY_API_KEY": "your-api-key"
}
}
}
}
Usage Examples
User: Show me all tables in my Druid project
Claude: [Uses list_tables]
- wikipedia (datasource)
- events (datasource)
- metrics (datasource)
User: Query the top 10 records from wikipedia table
Claude: [Uses execute_sql_query with "SELECT * FROM wikipedia LIMIT 10"]
[Results displayed]
User: Show me all data cubes
Claude: [Uses list_data_cubes]
- sales_cube: Sales Analytics (source: sales_table)
- events_cube: Events Tracking (source: events)
User: Query the sales data cube for top cities
Claude: [Uses query_data_cube with Pivot SQL syntax]
SELECT "DIM:city" AS "City", MEASURE_BY_ID('total_sales') AS "Sales"
FROM "datacube"."sales_cube"
ORDER BY 2 DESC
LIMIT 10
Development
git clone https://github.com/yeongbin-hwang/imply-druid-mcp.git
cd imply-druid-mcp
pip install -e ".[dev]"
License
MIT License - see LICENSE for details.
Resources
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file imply_druid_mcp-0.2.0.tar.gz.
File metadata
- Download URL: imply_druid_mcp-0.2.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea211c8cab15c80f63132ea6fc6e08885fd4686a8a3d928fbe20703a2a4483be
|
|
| MD5 |
f0a98e5929e2fe9b0409c787dbfc83af
|
|
| BLAKE2b-256 |
ba42a24725e54ea47ae4084d0a69cc9b52796a2978b2be86585ba69923ec33e1
|
File details
Details for the file imply_druid_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: imply_druid_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 17.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea46c3f2bb7c431c2b0b575715123b564cd6deeb17e6d18b2c3c6b68793ba041
|
|
| MD5 |
98530342a32d1b2301ba3a0d0dca2c46
|
|
| BLAKE2b-256 |
80d8acb60a76f186f8985de72f1d7b77af2339862f8c8e8cf12fed7966b2eec9
|