power-bi-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| pbi_authA | Authenticate to Power BI service. Checks for cached token first, attempts refresh if expired, falls back to device code flow if needed. Returns: JSON with authentication status and instructions if user action needed. |
| pbi_dataset_infoA | Aggregate dataset metadata + datasources + bound gateways + refresh schedule + impacted reports. Single call that returns everything needed to understand dataset configuration without making multiple round-trips. Useful for diagnostics and context-gathering. Args: workspace_id: The workspace (group) ID. dataset_id: The dataset ID. Returns: JSON object: {dataset, datasources, gateways, schedule, impacted_reports, pbip_locate} |
| pbi_refresh_datasetA | Trigger an Enhanced refresh for a Power BI dataset. Uses the Enhanced Refresh API (refreshType=ViaEnhancedApi), which enables GET refresh execution details with structured messages[] and objects[] (partition-level failures, error codes, SourceObject pointing to Table/Column/etc). Args: workspace_id: The workspace (group) ID. dataset_id: The dataset ID. refresh_type: Full / ClearValues / Calculate / DataOnly / Automatic / Defragment (default Full). commit_mode: Transactional / PartialBatch (default Transactional). retry_count: Number of automatic retries (default 0). timeout: HH:MM:SS string, max 24:00:00 (default 01:00:00). tables: Optional list of table names to refresh, e.g. ["fact_sales", "dim_date"]. When omitted the entire dataset is refreshed. poll: If True, poll refresh details until terminal (default False). poll_interval: Seconds between polls (default 30). poll_timeout: Max seconds to wait when polling (default 1800). Returns: JSON with {status, requestId, location, ...}. If poll=True also includes terminal details. |
| pbi_refresh_manageA | Manage refresh lifecycle: view history, get execution details, or cancel. Actions:
Args: workspace_id: The workspace (group) ID. dataset_id: The dataset ID. action: Operation to perform - "status", "details", or "cancel". refresh_id: Required for "details" and "cancel" actions. top: Number of recent refreshes for "status" action (default 5). format: Output format - "json" (default) or "table" (Markdown table with local times). Returns: JSON or Markdown table with action-specific results. |
| pbi_diagnoseA | One-shot diagnostic report for a Power BI dataset refresh failure. Pipeline:
Args: workspace_id: The workspace (group) ID. dataset_id: The dataset ID. refresh_id: Optional specific refresh requestId. If omitted, auto-picks latest failed Enhanced refresh. Returns: Structured JSON diagnostic report. |
| pbi_locate_pbipA | Locate PBIP source code for a dataset (and optionally read a specific table's TMDL + M source). Requires 'pbip_root' configured in config.json (path to local PBIP repo root, e.g. 'C:/repos/my-project/data/power-bi-report'). Args: dataset_name: Dataset name as it appears in Power BI Service (e.g. 'QC Compliance Report'). Folder match is fuzzy: case-insensitive + non-alphanumeric stripped. table_name: Optional table name. If provided and dataset found, reads that table's .tmdl and extracts its partition M source. Returns: JSON with {status, matches[], optional table content + partition_source_m}. |
| pbi_local_modelA | Read local PBIP semantic model structure (TMDL files, no Desktop connection needed). Requires 'pbip_root' configured in config.json. Actions:
Args: dataset_name: Dataset name as it appears in Power BI Service. action: overview | table | measure | expressions | relationships name: Table or measure name (required for action=table/measure). Returns: Structured JSON with model information. |
| pbi_execute_queryA | Execute a DAX query against a Power BI dataset and return the result rows. Uses the Execute Queries REST API (POST executeQueries). Only DAX queries are supported; MDX and DMV are not. Limitations (enforced by the Power BI service):
Args:
workspace_id: The workspace (group) ID.
dataset_id: The dataset ID.
query: A DAX query string, e.g. Returns: JSON with {rows, row_count} on success, or {error, ...} on failure. |
| pbi_scheduled_refresh_reportA | List scheduled refresh status for every dataset that had scheduled refreshes recently. Scans all refreshable datasets in a workspace, identifies those with any Scheduled refresh in the past 7 days, and reports refresh records for the target date (local display timezone). If a qualified dataset has no refresh on the target date, its most recent Scheduled refresh is shown instead (e.g. when Power BI auto-disabled the schedule after repeated failures). Each record includes a Note: Scheduled refreshes do NOT support the Enhanced Refresh Details API, so error info comes from serviceExceptionJson only. Args: workspace_id: The workspace (group) ID. date: Optional date string (YYYY-MM-DD) in display timezone. Defaults to today. format: Output format - "json" (default) or "table" (Markdown table). Returns: JSON report or Markdown table with flat refresh records and workspace-level summary. |
| pbi_list_workspacesA | List Power BI workspaces accessible to the authenticated user. Args: filter: Optional name filter (case-insensitive substring match). Returns: JSON array of workspaces: [{id, name, type, state, isOnDedicatedCapacity, capacityId}] |
| pbi_list_datasetsA | List datasets in a Power BI workspace. Args: workspace_id: The workspace (group) ID. Returns: JSON array: [{id, name, configuredBy, isRefreshable, isOnPremGatewayRequired}] |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/FreelexHo/power-bi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server