Skip to main content
Glama
jonathan-pap

Power BI Report MCP Server

by jonathan-pap

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_TOOLSNoTool loading mode: 'all' (default) or 'minimal' to load only 12 core tools at startupall
PBIR_REPORT_PATHNoPath to a .Report folder to auto-bind at startup (instead of calling pbir_set_report)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 hasSemanticModel: boolean — true when a sibling .SemanticModel/ folder exists. Check this before calling pbir_model_usage.

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 totalVisualCount sums the FULL set, not just the visible slice. For cross-page sweeps prefer one includeVisuals:true call over fanning out per-page pbir_list_visuals.

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 visualType to filter for cross-page sweeps in combination with pbir_list_pages per-page iteration.

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 visuals: [...] batch. Inline containerFormat/visualFormat/dataColors per entry avoids extra pbir_format_visual calls. Stacked charts need a Series binding; 'KPI card' = card with one measure; scatter uses Category bucket. Use pbir_lookup_theme_property for valid category/property names.

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_lookup_theme_property for valid category/property names per visualType. Gotchas: slicer uses textSize, not fontSize (items/header); waterfall uses sentimentColors, not dataPoint.

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 .SemanticModel/ folder alongside the .Report/ — call pbir_get_report first to check hasSemanticModel before invoking this tool.

pbir_load_toolsA

List on-demand tools (no args) or activate by name (pass tools array).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
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

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