PowerBI Analyst MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| POWERBI_CLIENT_ID | Yes | The application (client) ID from your Azure AD app registration. | |
| POWERBI_TENANT_ID | Yes | The directory (tenant) ID from your Azure AD app registration. Required for most organizations to ensure authentication targets the correct tenant. | |
| POWERBI_OUTPUT_DIR | No | Override the default output directory (~/powerbi_output) where large DAX query results are saved as CSV files. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| authenticateA | Authenticate with Power BI using the OAuth 2.0 device code flow. Call this tool first if you have never logged in, or if a previous call returned "Not authenticated". The tool uses a two-step flow:
Your credentials are cached locally so you will not need to repeat this step until the refresh token expires (~90 days). |
| logoutA | Sign out of Power BI by clearing the cached credentials. After logging out, call |
| list_workspacesA | List all Power BI workspaces (groups) the authenticated user is a member of. Returns workspace id, name, type, and capacity information.
Use the |
| list_appsA | List all Power BI apps installed for the authenticated user. Returns each app's id, name, description, publisher, last update time,
and — most importantly — the Use the If no apps are installed, try |
| list_datasetsA | List all datasets (semantic models) in a Power BI workspace. Returns dataset id, name, configured-by, web URL, is-refreshable flag,
and the target storage mode (Import / DirectQuery / etc.).
Use the |
| get_dataset_infoA | Return detailed metadata for a single Power BI dataset. Includes name, owner, refresh schedule, storage mode, web URL, and more. Also returns the last 5 refresh history entries so you can see data freshness. |
| list_tablesA | List all visible tables in a Power BI dataset. Hidden tables and internal Power BI system tables (names starting with '$')
are excluded. Use the returned table names in |
| list_measuresB | List measures defined in a Power BI dataset. Returns each measure's name, parent table, description, and format string. Optionally filter by table name. |
| list_columnsA | List columns (dimensions) in a Power BI dataset. Returns each column's name, parent table, description, data type, and whether it is a key column. Optionally filter by table name. |
| execute_daxA | Execute a DAX query against a Power BI dataset and return the result rows. The query must start with EVALUATE (standard DAX query syntax). Results are returned as a JSON array of objects, with column names as keys. Small results (<= 50 rows) are returned inline as JSON.
Large results (> 50 rows) are automatically saved to a CSV file and a
compact summary is returned with the file path, column names, row count,
and a preview of the first 5 rows. Use Every successful execution is logged to a local history file for
auditability and cross-session reuse. Use Limitations imposed by the Power BI API:
Tips:
|
| read_query_resultA | Read a page of rows from a CSV file saved by Use this tool when Returns rows for the requested slice together with pagination metadata:
Example workflow:
|
| search_query_historyA | Search the local query history log for prior DAX executions. Every successful
Results are returned newest-first. Use |
| delete_query_log_entryA | Remove a single entry from the query history log. Use this when a query produced incorrect or misleading results and should not appear in future history searches. The associated CSV file (if any) is NOT deleted — only the log entry is removed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Every tool has a distinct, well-defined purpose with no overlap. For example, list_datasets enumerates datasets, get_dataset_info provides metadata for a specific dataset, execute_dax runs queries, and read_query_result handles pagination of saved results. The tools are clearly differentiated by their specific functions within the Power BI domain.
All tool names follow a consistent verb_noun pattern using snake_case. Examples include authenticate, delete_query_log_entry, execute_dax, get_dataset_info, list_apps, list_columns, list_datasets, list_measures, list_tables, list_workspaces, logout, read_query_result, and search_query_history. This uniformity makes the tool set predictable and easy to navigate.
With 13 tools, the count is well-scoped for a Power BI analytics server. It covers authentication, dataset exploration, query execution, result handling, and history management without being overwhelming. Each tool serves a clear purpose, such as listing resources, executing DAX, or managing logs, making the set comprehensive yet manageable.
The tool set provides strong coverage for core Power BI workflows, including authentication, dataset listing and inspection, DAX query execution, and result pagination. Minor gaps exist, such as the lack of tools for creating or modifying datasets, reports, or dashboards, but these are not essential for the stated analyst focus. The tools support a complete query and exploration lifecycle without dead ends.