Power BI Report MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_TOOLS | No | Tool loading mode: 'all' (default) or 'minimal' to load only 12 core tools at startup | all |
| PBIR_REPORT_PATH | No | Path to a .Report folder to auto-bind at startup (instead of calling pbir_set_report) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pbir_set_reportA | Connect to a different Power BI report (.Report folder or parent .pbip project folder). Use this to switch reports mid-session without restarting the server. |
| pbir_get_reportA | Show the currently connected report path. Includes |
| pbir_list_pagesA | List pages (paginated). Slim default returns id/displayName/width/height/visualCount/isActive/hidden; slim:false adds displayOption. includeVisuals:true (or pageId) embeds per-visual summaries. Top-level |
| pbir_create_pageB | Create a new page in the report. Supports standard, tooltip, and drillthrough page types. |
| pbir_rename_pageC | Rename an existing page |
| pbir_delete_pageA | Delete a page and all its visuals |
| pbir_reorder_pagesC | Set the page order |
| pbir_set_active_pageA | Set which page is active (shown on open) |
| pbir_set_page_visibilityA | Show or hide a page in the navigation pane. Hidden pages still work for drillthrough. |
| pbir_get_report_settingsA | Get the report-level settings and theme configuration |
| pbir_update_report_settingsB | Merge report-level settings. Keys: useStylableVisualContainerHeader, useEnhancedTooltips, exportDataMode (0|1), persistentFilters, keyboardNavigationEnabled, defaultDrillFilterOtherVisuals, allowChangeFilterTypes, useDefaultAggregateDisplayName. |
| pbir_update_page_sizeC | Update the page dimensions |
| pbir_auto_layoutC | Auto-arrange all visuals on a page in a grid. |
| pbir_duplicate_pageA | Duplicate an entire page with all its visuals to a new page |
| pbir_reload_reportA | Reload the report in Power BI Desktop by closing and reopening the .pbip file. SAFETY: closes PBIDesktop.exe, so any unsaved work in Desktop (including modeling-MCP measures/relationships not yet flushed by Desktop autosave) is LOST. Requires confirm:true to proceed — otherwise returns a save-first warning for the agent to relay to the user. |
| pbir_set_filter_paneB | Show or hide the filter pane. |
| pbir_manage_extension_measuresA | Manage extension measures (report-level DAX in reportExtensions.json). Empty file crashes PBI Desktop — tool auto-deletes when empty. |
| pbir_set_page_backgroundB | Set the page canvas background and/or wallpaper. Hex color (#0D1117). Transparency 0-100. |
| pbir_set_visual_interactionA | Set cross-filter interaction (Filter/Highlight/NoFilter) from source visual to target visual. |
| pbir_get_visual_typesA | List available visual types. Default returns slim type list (~150 tokens). Pass verbose:true for per-type data-role bucket metadata (~1,200 tokens). |
| pbir_list_visualsA | List visuals on a page (paginated). Default slim returns id/type/x/y/w/h/title. slim:false includes filterCount. Use limit/offset to page through large pages. Use |
| pbir_get_visualA | Get visual details. Default returns id/type/position/title/bindings summary. verbose:true returns full PBIR JSON. |
| pbir_add_visualA | Add visuals to a page via |
| pbir_delete_visualA | Delete a visual from a page |
| pbir_move_visualB | Move and/or resize a visual on a page |
| pbir_duplicate_visualB | Duplicate an existing visual, optionally to a different page or position |
| pbir_change_visual_typeA | Change the visual type of an existing visual (e.g. barChart to columnChart) while keeping data bindings |
| pbir_set_visual_titleB | Set or update the title of a visual. Can set text, visibility, font, size, alignment. |
| pbir_format_visualA | Format visual properties. Auto-routes title/background/border/padding/dropShadow/visualHeader to container, others to visual; override with target='visual'|'container'. Call |
| pbir_set_datapoint_colorsA | Set data point colors. Series-based charts use metadata mode. Category-based (no Series) requires categoryEntity+categoryProperty. |
| pbir_set_conditional_formatB | Apply conditional formatting to a visual container background or title font. formatType: rules / gradient / clear. ComparisonKind: 0=Eq,1=GT,2=GTE,3=LT,4=LTE,5=NEq. |
| pbir_apply_themeB | Apply a named theme preset to all visuals on a page. Themes: dark, light, corporate, blue-purple. |
| pbir_set_visual_sortA | Set the sort order of a visual. Overrides the auto-sort. Use Table[Column] for field refs. |
| pbir_update_visual_bindingsA | Update the data bindings of an existing visual. Replaces the query state entirely. Supports Table[Column] shorthand: use { "field": "Sales[Net Price]", "type": "measure" } as an alternative to separate entity/property fields. |
| pbir_set_report_themeC | Apply a custom JSON theme. Hex colors. dataColors 6-12 values. visualStyles keyed by visualType or '*'. |
| pbir_get_report_themeA | Get the currently applied theme. Returns base theme name + custom theme JSON if any. |
| pbir_remove_report_themeA | Remove the custom theme from the report, reverting to the default base theme. The theme file is kept in StaticResources but unlinked from report.json. |
| pbir_diff_report_themeA | Compare a proposed theme JSON against the currently applied theme and return what would be added, removed, or changed. Useful for previewing theme changes before applying. |
| pbir_list_report_themesA | List all theme files stored in the report's StaticResources/RegisteredResources/ folder. |
| pbir_audit_theme_complianceA | Audit visuals on a page for theme overrides. Returns summary header + topN findings (default 20). topN:0 = all. |
| pbir_list_filtersA | List filters on a page or visual. Slim mode (default) returns Table[Column] strings. |
| pbir_add_page_filterA | Add a filter to a page or visual. Omit visualId for page-level. topN requires visualId. Types: categorical / topN / relativeDate / advanced (Equals, GreaterThan, Contains, IsBlank, etc; supports And/Or compounds). |
| pbir_remove_filterA | Remove a specific filter by name from a page or visual. |
| pbir_clear_filtersA | Remove ALL filters from a page or a specific visual. |
| pbir_bulk_delete_visualsB | Delete multiple visuals from a page. Set confirmBulk:true when >5. |
| pbir_bulk_update_formatA | Apply the same formatting to multiple visuals. target='container' (title/background/border) or 'visual' (axes/legend/labels). Set confirmBulk:true when >5. |
| pbir_bulk_bindA | Rebind multiple visuals in one call. Replaces existing bindings. Set confirmBulk:true when >5. continueOnError:true validates per-entry — bad bindings don't abort the batch. |
| pbir_list_bookmarksA | List all bookmarks defined in the report. |
| pbir_add_bookmarkA | Create a new bookmark. The bookmark is created with an empty exploration state — open Power BI Desktop to capture the current view state into it. |
| pbir_delete_bookmarkA | Delete a bookmark by ID. |
| pbir_rename_bookmarkB | Rename an existing bookmark. |
| pbir_guideA | Domain knowledge for Power BI report development. Topics discovered live from skills/*.md — call with topic:'list' to enumerate. |
| pbir_layout_gridA | Compute a deterministic rows×cols grid; server owns margin/gap/remainder math. Use this INSTEAD of N pbir_add_visual calls when building a page from scratch. planOnly:true (default) returns the plan; planOnly:false validates bindings+layout then writes in one call. See guide('wireframes') for grid-shape selection. |
| pbir_validate_wireframeA | Validate a page's (or the whole report's) layout against the wireframe rules — margins, gaps, overlap, off-canvas, banner geometry. Returns errors + warnings per visual plus stats (visual count, coverage, bottom edge). Read-only. Pair with pbir_audit_theme_compliance for full project verification. |
| pbir_lookup_theme_propertyA | Query the bundled Power BI theme schema for valid visualStyles property names. No args = list visual types; +visualType = list categories; +category = list properties with types/enums. |
| pbir_model_usageA | Cross-reference the semantic model with the report — shows where every measure and column is used, DAX dependencies, unused fields, and per-page coverage. Also generates an HTML dashboard for visual inspection. Requires a sibling |
| pbir_load_toolsA | List on-demand tools (no args) or activate by name (pass |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| pbir-instructions | |
| pbir-skill-calculations | |
| pbir-skill-elicitation | |
| pbir-skill-errors | |
| pbir-skill-filters | |
| pbir-skill-formatting | |
| pbir-skill-pages | |
| pbir-skill-post-edit-checklist | |
| pbir-skill-report-design | |
| pbir-skill-report | |
| pbir-skill-shapes | |
| pbir-skill-slicers | |
| pbir-skill-svg-visuals | |
| pbir-skill-themes-per-visual | |
| pbir-skill-themes | |
| pbir-skill-token-usage | |
| pbir-skill-visuals | |
| pbir-skill-wireframes |
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/jonathan-pap/powerbi-report-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server