Skip to main content
Glama
yeshsurya

Kusto MCP Server

by yeshsurya
README.md
# Kusto MCP Server

An MCP (Model Context Protocol) server that provides tools for interacting with Azure Data Explorer (Kusto) clusters. Query, manage connections, and explore schemas using AI assistants like Claude and GitHub Copilot.

## Features

- Execute KQL queries and scripts
- Manage multiple cluster connections
- Explore database schemas
- Full Azure authentication support
- Works with Claude Desktop, Claude Code CLI, and VS Code with GitHub Copilot

## Prerequisites

- Node.js 18+
- .NET 8 Runtime
- Kusto CLI (`microsoft.azure.kusto.tools` NuGet package)
- Azure CLI (for authentication)

### Install Kusto CLI

```bash
dotnet tool install -g Microsoft.Azure.Kusto.Tools
```

Or via NuGet:
```bash
nuget install microsoft.azure.kusto.tools -Version 14.0.3
```

## Installation

### Via npm (recommended)

```bash
npm install -g kusto-mcp-server
```

### Via npx (no installation required)

```bash
npx kusto-mcp-server
```

## Usage with AI Assistants

### Claude Desktop

Add to your Claude Desktop configuration:
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Linux**: `~/.config/claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "kusto": {
      "command": "npx",
      "args": ["-y", "kusto-mcp-server"],
      "env": {
        "KUSTO_CLI_PATH": "~/.nuget/packages/microsoft.azure.kusto.tools/14.0.3/tools/net8.0/Kusto.Cli.dll"
      }
    }
  }
}
```

### Claude Code (CLI)

```bash
claude mcp add kusto -- npx -y kusto-mcp-server
```

Verify it's connected:
```bash
claude mcp list
```

### VS Code with GitHub Copilot

Add to your VS Code `settings.json` (or `.vscode/mcp.json` in your workspace):

```json
{
  "mcp": {
    "servers": {
      "kusto": {
        "command": "npx",
        "args": ["-y", "kusto-mcp-server"],
        "env": {
          "KUSTO_CLI_PATH": "~/.nuget/packages/microsoft.azure.kusto.tools/14.0.3/tools/net8.0/Kusto.Cli.dll"
        }
      }
    }
  }
}
```

Or use the VS Code command palette:
1. Open Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`)
2. Run **"MCP: Add Server"**
3. Select **"Command (stdio)"**
4. Enter command: `npx -y kusto-mcp-server`
5. Enter server ID: `kusto`

## Authentication

Before using the server, authenticate with Azure:

```bash
az login
```

## Available Tools

### Query Tools

| Tool | Description |
|------|-------------|
| `kusto_query` | Execute KQL queries (primary tool) |
| `kusto_execute` | Advanced execution with full CLI options |
| `kusto_script` | Execute script files |

### Connection Management

| Tool | Description |
|------|-------------|
| `kusto_connection_add` | Add/update a named connection |
| `kusto_connection_list` | List all configured connections |
| `kusto_connection_test` | Test connectivity |
| `kusto_connection_remove` | Remove a connection |
| `kusto_connection_set_default` | Set the default connection |

### Schema & Help

| Tool | Description |
|------|-------------|
| `kusto_schema` | Get database schema information |
| `kusto_help` | Get help and CLI options |

## Usage Examples

### Add a Connection

```
kusto_connection_add({
  name: "my-cluster",
  cluster: "https://mycluster.kusto.windows.net",
  database: "MyDatabase",
  authMethod: "azcli",
  isDefault: true
})
```

### Execute a Query

```
kusto_query({
  query: "StormEvents | summarize count() by State | top 10 by count_",
  connectionName: "my-cluster"
})
```

### Get Schema

```
kusto_schema({
  scope: "tables",
  connectionName: "my-cluster"
})
```

### Execute Multiple Commands

```
kusto_execute({
  commands: [
    ".show tables",
    "StormEvents | count"
  ],
  connectionName: "my-cluster"
})
```

## Configuration

Environment variables:

| Variable | Description | Default |
|----------|-------------|---------|
| `KUSTO_CLI_PATH` | Path to Kusto.Cli.dll | Auto-detected |
| `KUSTO_DEFAULT_TIMEOUT` | Default query timeout (ms) | 60000 |
| `KUSTO_MAX_ROWS` | Default max rows | 10000 |

## Development

```bash
# Clone the repository
git clone https://github.com/yeshsurya/kusto-mcp-server.git
cd kusto-mcp-server

# Install dependencies
npm install

# Build
npm run build

# Watch mode
npm run dev

# Run tests
npm test
```

## License

MIT

TDQS

A3.6/5.0

Scored across 10 tools

Disambiguation5/5

All tools are clearly distinct: connection management (add, list, remove, set_default, test), query execution (query, execute, script), schema retrieval, and help. No overlapping purposes.

Naming Consistency5/5

All tools follow a consistent 'kusto_verb_noun' pattern using snake_case, making it easy to predict tool names and understand their roles.

Tool Count5/5

10 tools is appropriate for a database query server, covering connection management, query execution, scripting, schema, and help without being excessive or insufficient.

Completeness4/5

Core workflows are covered (connection CRUD, query, script, schema, help). Missing explicit update for connections (though add serves upsert) and possibly a dedicated list-databases tool, but schema provides that info.

Maintenance

ActivityInactive
ResponsivenessNo issues