Kusto MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Kusto MCP Serverlist all internal tables in the cluster"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Kusto MCP Server
A mcp server that provides access to Azure Data Explorer (ADX) clusters.
Tools
The following tools are provided by the server:
list tables:
list_internal_tables:list all internal tables in the cluster
list_external_tables:list all external tables in the cluster
list_materialized_views:list all materialized views in the cluster
execute query:
execute_query_internal_table:execute a query on an internal table or materialized view
execute_query_external_table:execute a query on an external table
get table schema:
get_internal_table_schema:get the schema of an internal table or materialized view
get_external_table_schema:get the schema of an external table
Claude Desktop configuration
Edit claude_desktop_config.json to add the following configuration:
{
"mcpServers": {
"kusto": {
"command": "uv",
"args": [
"--directory",
"{{PATH_TO_PROJECT}}\\mcp-server-kusto\\src\\mcp_server_kusto",
"run",
"mcp-server-kusto",
"--cluster",
"{{ADX_CLUSTER_URL}}",
"--authority_id",
"{{TENANT_ID}}",
"--client_id",
"{{CLIENT_ID}}",
"--client_secret",
"{{CLIENT_SECRET}}"
]
}
}
}When using azure data explorer emulator locally, provide the cluster url like https://localhost:8082 and not need to
provide --authority_id, --client_id, --client_secret.
{
"mcpServers": {
"kusto": {
"command": "uv",
"args": [
"--directory",
"{{PATH_TO_PROJECT}}\\mcp-server-kusto\\src\\mcp_server_kusto",
"run",
"mcp-server-kusto",
"--cluster",
"{{ADX_CLUSTER_URL}}"
]
}
}
}Available Tools
7 toolsexecute_query_external_tableC
Execute a kql query to external table
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose whether the tool is read-only or modifies data, nor does it mention required permissions, error handling, or any side effects. With no annotations, the description carries the full burden, but it provides almost no behavioral context beyond 'execute'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only 5 words, which is extremely concise, but it sacrifices essential information. It fails to earn its place as a helpful guide; instead it is under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, annotations, and any additional context, the description is wholly inadequate. It does not explain what 'external table' means, what the query returns, or how this tool differs from siblings, making it nearly useless for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain the parameters. It only lists 'database' and 'query' by name, adding no meaning about allowed values, formats, or constraints. The schema provides no descriptions either, so the AI has no guidance on how to properly fill these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Execute a kql query to external table', which identifies the action (execute) and the target (external table), but is vague about the nature of the query and lacks detail that would distinguish it from similar tools like execute_query_internal_table. The term 'kql' is likely a typo for 'KQL' but assumes domain knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings (e.g., execute_query_internal_table). There is no mention of prerequisites, restrictions, or context in which this tool is appropriate, leaving the AI agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_query_internal_tableC
Execute a kql query to internal table or materialized view
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose behavioral traits such as read/write nature, idempotency, permission requirements, rate limits, or side effects. It simply restates the purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the description is short, it is under-informative. Conciseness should not come at the expense of clarity and completeness. The single sentence omits critical details, making it insufficiently helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 required parameters, no output schema, and no annotations, the description should explain return values, error handling, or usage constraints. It provides none of this, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description adds no meaning beyond the parameter names. It does not explain what 'database' refers to or the expected format of the 'query' string. For a tool with zero coverage, the description must compensate, but it fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'execute', the query language 'kql', and the target 'internal table or materialized view'. This distinguishes it from sibling 'execute_query_external_table' which targets external tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'execute_query_internal_table' vs 'execute_query_external_table'. Does not mention any prerequisites or context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_external_tablesC
List all external tables in the database
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description does not disclose whether the operation is read-only, requires authentication, or any other behavioral traits. For a listing tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, but it is excessively terse without structure. While concise, it sacrifices informational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and only one parameter, the description lacks essential context such as what the output contains, potential limitations, or usage examples. It is inadequate for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description only mentions 'database' without explaining its meaning (e.g., database name or ID). No format, examples, or additional context is provided to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists external tables in a database, which directly contrasts with siblings like list_internal_tables and list_materialized_views. The verb 'list' and resource 'external tables' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., list_internal_tables, list_materialized_views). The description implies usage for listing external tables but does not specify exclusions or provide context on database scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_internal_tablesC
List all internal tables in the database
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states a list operation but lacks details on sorting, pagination, or what fields are returned. Behavioral traits are nearly absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but underextended. It meets the minimum structural expectation but could include more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and missing guidelines, the description is incomplete. It does not specify output format or differentiate from siblings, leaving significant gaps for an agent to interpret.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, and the description does not elaborate on the 'database' parameter beyond its name. It provides minimal added value, leaving agents to infer its meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists internal tables, distinguishing it from list_external_tables. However, it does not mention that it operates per database (as implied by the required parameter), missing an opportunity to specify scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus siblings like list_external_tables or list_materialized_views. The context is only implicitly derived from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialized_viewsC
List all materialized views in the database
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose any behavioral traits such as authentication requirements, rate limits, or performance implications. It only states the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It is front-loaded and efficient, though slightly under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and minimal description, the tool definition lacks context about return format, pagination, or error conditions. For a listing tool, more details would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not add meaning to the single parameter 'database'. The phrase 'in the database' implies its use but does not clarify format, possible values, or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (list), resource (materialized views), and scope (in the database). It is specific and distinct from sibling tools which deal with tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_external_tables or list_internal_tables. There is no mention of prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_external_table_schemaC
Get the schema of an external table
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | ||
| table | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like read-only nature, permissions, or output format. It only states the action, lacking transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence, front-loading the purpose. However, it could include more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (few params, no output schema, no annotations), the description is minimal. It covers basic purpose but lacks context on return values, edge cases, and differentiation from siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning beyond parameter names. While names are self-explanatory, no details on allowed values or formats are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'schema of an external table', distinguishing it from internal table schema retrieval. However, it does not elaborate on what 'schema' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like retrieve_internal_table_schema or list_external_tables. The description does not mention context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_internal_table_schemaC
Get the schema of a table or materialized view
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | ||
| table | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose any behavioral traits such as whether the operation is read-only, auth requirements, or side effects. For a tool with no annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but lacks structure. It is front-loaded but omits necessary details, making it minimally adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple parameters, the description should explain what the returned schema looks like or provide usage examples. It does not, leaving the agent with incomplete context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds no additional meaning to the parameters 'database' and 'table'. The agent gets no hints about valid formats, constraints, or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'schema of a table or materialized view'. It distinguishes from siblings like 'retrieve_external_table_schema' and list tools by specifying 'internal' and 'schema'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Sibling tools are listed but no explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools are mostly distinct with separate verbs for listing, querying, and schema retrieval. However, execute_query_internal_table includes materialized views, slightly overlapping with the listing tools.
All tool names follow a consistent verb_noun pattern in snake_case, such as execute_query, list_, retrieve_. No mixing of styles.
With 7 tools, the set is well-scoped for a focused Kusto query server, covering essential operations without unnecessary bloat.
The set covers querying, listing, and schema retrieval for tables and views. Minor gaps include no tools for database-level listing or management operations, but the read-only focus seems intentional.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
An MCP server giving access to Grafana dashboards, data and more.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables listing and querying Trino tables using Python, providing access to data resources through the Model-Control-Protocol.18MIT
- FlicenseAqualityDmaintenanceAn MCP server for Microsoft SQL Server that enables executing read-only queries, listing tables, and describing database schemas. It offers specialized support for custom ports and multiple authentication methods including SQL credentials, NTLM, and Windows Integrated Auth.3
- AlicenseAqualityDmaintenanceAn MCP (Model Context Protocol) server that provides tools for interacting with Azure Data Explorer (Kusto) clusters.1013MIT
- AlicenseAqualityDmaintenanceAn MCP server for Azure development and operations, enabling Cosmos DB queries, Service Bus messaging, and PIM role activation.31MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ZZZHDW/mcp-server-kusto'
If you have feedback or need assistance with the MCP directory API, please join our Discord server