Skip to main content
Glama
PBIP Builder MCP Server

PBIP Builder MCP Server

by haiprobmt

PBIP Builder MCP Server

PBIP Builder MCP Server is a local TypeScript MCP server that helps AI coding agents create, inspect, validate, and modify Power BI Project (.pbip) folders. It generates PBIR-style report folders, TMDL semantic model files, report pages, and templated visuals from structured inputs instead of asking an agent to free-write report JSON.

What It Builds

Generated projects follow the Power BI Desktop developer mode layout:

SalesDashboard/
├── SalesDashboard.pbip
├── SalesDashboard.Report/
│   ├── .platform
│   ├── definition.pbir
│   └── definition/
│       ├── version.json
│       ├── report.json
│       └── pages/
│           ├── pages.json
│           └── <PageId>/
│               ├── page.json
│               └── visuals/<VisualId>/
│                   ├── visual.json
│                   └── mobile.json
└── SalesDashboard.SemanticModel/
    ├── .platform
    ├── definition.pbism
    └── definition/
        ├── database.tmdl
        ├── model.tmdl
        ├── relationships.tmdl
        ├── roles/
        └── tables/<TableName>.tmdl

Related MCP server: pbi-mcp

Install

npm install
npm run build

Run The MCP Server

npm run dev

The server uses stdio transport. A VS Code MCP configuration is included in .vscode/mcp.json.

To restrict writes, set PBIP_ALLOWED_WORKSPACES to one or more workspace roots separated by the OS path delimiter. If unset, writes are limited to process.cwd().

Microsoft JSON Schemas

The schema registry looks for Microsoft schemas under schemas/microsoft-json-schemas. Add a local copy of the Microsoft json-schemas repository there:

git clone https://github.com/microsoft/json-schemas schemas/microsoft-json-schemas

When schemas are unavailable, validation still checks project structure, JSON parsing, page/visual references, and semantic field bindings, and returns schema warnings rather than failing the project.

Tools

Project tools: pbip_create_project, pbip_open_project, pbip_describe_project, pbip_validate_project, pbip_delete_project, pbip_export_summary.

Semantic model tools: model_add_table, model_update_table, model_delete_table, model_add_column, model_add_measure, model_update_measure, model_delete_measure, model_add_relationship, model_delete_relationship, model_add_role, model_generate_from_schema, model_describe, model_validate.

Report/page/visual tools: report_create, report_update_settings, report_set_theme, report_validate, page_add, page_update, page_delete, page_rename, page_set_size, page_list, visual_add, visual_update, visual_delete, visual_set_position, visual_bind_fields, visual_set_format, visual_set_filter, visual_list, visual_describe.

Blueprint and schema tools: blueprint_generate_project, blueprint_apply, blueprint_validate, blueprint_preview, schema_list, schema_get, schema_validate_json, schema_sync, schema_explain_error.

Example

npm run generate:example

This creates examples/generated/SalesDashboard from examples/sales-dashboard-blueprint.json, including one semantic model table, one report page, and five visual types: card, clustered column chart, table, slicer, and line chart.

Testing

npm test

Tests cover project creation, dry runs, path safety, semantic model generation, page generation, visual generation, blueprint generation, and validation.

Limitations

This is the MVP local generator. Fabric publishing, refresh, live data source setup, custom visuals, advanced formatting, page duplication, visual duplication, and automatic Power BI Desktop repair workflows are intentionally left for later phases. Final compatibility should still be confirmed by opening generated .pbip files in Power BI Desktop.

Available Tools

52 tools
blueprint_applyC

Apply a high-level dashboard blueprint to an existing PBIP project.

Inputs: projectPath (required), blueprint (required), dryRun.

blueprint_generate_projectC

Create a PBIP project from a high-level dashboard blueprint.

Inputs: workspacePath (required), blueprint (required), overwrite, dryRun.

blueprint_previewB

Return a dry-run preview of files changed by a blueprint.

Inputs: projectPath (required), blueprint (required).

blueprint_validateC

Validate the high-level dashboard blueprint shape.

Inputs: blueprint (required).

model_add_columnC

Add a column to an existing TMDL table.

Inputs: projectPath (required), tableName (required), column (required), dryRun.

model_add_measureC

Add a measure to an existing TMDL table.

Inputs: projectPath (required), tableName (required), measureName (required), expression (required), +2 more.

model_add_relationshipC

Add a relationship to relationships.tmdl.

Inputs: projectPath (required), relationship (required), dryRun.

model_add_roleC

Add or replace a simple row-level-security role in definition/roles/*.tmdl.

Inputs: projectPath (required), name (required), table (required), filterExpression (required), +1 more.

model_add_tableD

Add a TMDL table file with columns and measures.

Inputs: projectPath (required), tableName (required), columns, dryRun.

model_delete_measureC

Delete a measure from a TMDL table.

Inputs: projectPath (required), tableName (required), measureName (required), dryRun.

model_delete_relationshipC

Delete a relationship by name.

Inputs: projectPath (required), relationshipName (required), dryRun.

model_delete_tableC

Delete a table TMDL file.

Inputs: projectPath (required), tableName (required), dryRun.

model_describeC

Describe semantic model tables, relationships, and roles.

Inputs: projectPath (required).

model_generate_from_schemaC

Generate model tables from a simple schema object.

Inputs: projectPath (required), tables (required), dryRun.

model_update_measureC

Replace or create a measure on an existing TMDL table.

Inputs: projectPath (required), tableName (required), measureName (required), expression (required), +2 more.

model_update_tableC

Replace an existing TMDL table definition.

Inputs: projectPath (required), table (required), dryRun.

model_validateC

Validate the semantic model in the context of the PBIP project.

Inputs: projectPath (required).

page_addC

Add a report page and register it in pages.json.

Inputs: projectPath (required), displayName (required), name, width, +2 more.

page_deleteC

Delete a page folder and unregister it from pages.json.

Inputs: projectPath (required), pageName (required), dryRun.

page_duplicateC

Duplicate a page. Planned for Phase 2.

Inputs: projectPath (required), pageName (required), dryRun.

page_listC

List report pages.

Inputs: projectPath (required).

page_renameC

Rename a page display name.

Inputs: projectPath (required), pageName (required), displayName (required), dryRun.

page_set_sizeC

Set page canvas width and height.

Inputs: projectPath (required), pageName (required), width (required), height (required), +1 more.

page_updateB

Update page display name, size, or filters.

Inputs: projectPath (required), pageName (required), displayName, width, +3 more.

pbip_create_projectC

Create a new PBIP project with PBIR report and TMDL semantic model folders.

Inputs: workspacePath (required), projectName (required), semanticModelMode, reportFormat, +2 more.

pbip_delete_projectB

Delete a PBIP project folder. Requires confirmDelete=true.

Inputs: projectPath (required), confirmDelete (required), dryRun.

pbip_describe_projectC

Describe report pages, visuals, tables, columns, and measures in a PBIP project.

Inputs: projectPath (required).

pbip_export_summaryC

Export a structured JSON summary of a PBIP project.

Inputs: projectPath (required).

pbip_open_projectB

Open an existing PBIP project path and return a structured summary.

Inputs: projectPath (required).

pbip_validate_projectC

Validate PBIP project structure, JSON files, schemas where available, and semantic references.

Inputs: projectPath (required).

report_add_bookmarkD

report_add_bookmark is reserved for structured report filter/bookmark support after the MVP generator is stable.

Inputs: projectPath (required), dryRun.

report_add_filterD

report_add_filter is reserved for structured report filter/bookmark support after the MVP generator is stable.

Inputs: projectPath (required), dryRun.

report_createC

Create or repair the report PBIR skeleton files.

Inputs: projectPath (required), dryRun.

report_remove_filterD

report_remove_filter is reserved for structured report filter/bookmark support after the MVP generator is stable.

Inputs: projectPath (required), dryRun.

report_set_themeC

Set a theme reference in report.json.

Inputs: projectPath (required), theme (required), dryRun.

report_update_settingsC

Merge settings into report.json.

Inputs: projectPath (required), settings (required), dryRun.

report_validateC

Validate the report files in a PBIP project.

Inputs: projectPath (required).

schema_explain_errorB

Explain a schema validation error in agent-readable terms.

Inputs: error.

schema_getC

Return one locally available Microsoft JSON schema.

Inputs: schemaType (required).

schema_listA

List locally available Microsoft JSON schemas.

Inputs: no named parameters.

schema_syncC

Explain how to sync Microsoft JSON schemas into the local schemas folder.

Inputs: no named parameters.

schema_validate_jsonC

Validate JSON against a locally available Microsoft schema type.

Inputs: schemaType (required), json.

visual_addC

Add a visual from a reusable template and bind fields or measures.

Inputs: projectPath (required), pageName (required), visualType (required), position (required), +6 more.

visual_bind_fieldsC

Replace a visual's semantic model bindings.

Inputs: projectPath (required), pageName (required), visualName (required), bindings (required), +1 more.

visual_deleteD

Delete a visual folder.

Inputs: projectPath (required), pageName (required), visualName (required), dryRun.

visual_describeC

Describe one visual.

Inputs: projectPath (required), pageName (required), visualName (required).

visual_duplicateC

Duplicate a visual. Planned for Phase 2.

Inputs: projectPath (required), pageName (required), visualName (required), dryRun.

visual_listC

List visuals on a page.

Inputs: projectPath (required), pageName (required).

visual_set_filterC

Set visual-level filters.

Inputs: projectPath (required), pageName (required), visualName (required), filters (required), +1 more.

visual_set_formatC

Set formatting objects on a visual.

Inputs: projectPath (required), pageName (required), visualName (required), format (required), +1 more.

visual_set_positionC

Set a visual position and size.

Inputs: projectPath (required), pageName (required), visualName (required), position (required), +1 more.

visual_updateC

Merge raw structured updates into a visual.json file.

Inputs: projectPath (required), pageName (required), visualName (required), updates (required), +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.6/5.0

    Scored across 52 tools

    Disambiguation5/5

    Tools are grouped by clear prefixes (blueprint_, model_, page_, etc.) with distinct verb-noun actions. Even similar tools like blueprint_apply and blueprint_generate_project have descriptions clarifying their different targets (existing vs. new projects). No significant overlap.

    Naming Consistency5/5

    All tools use a consistent prefix_verb_noun pattern in snake_case. Verbs are standard (add, delete, update, list, etc.) and uniformly applied across groups. No mixing of styles or irregular naming.

    Tool Count3/5

    52 tools is high for an MCP server. There is some redundancy (e.g., separate page_rename, page_set_size, and page_update) and several reserved, non-functional tools (e.g., report_add_bookmark, visual_duplicate). This bloat reduces appropriateness despite serving a complex domain.

    Completeness4/5

    The tool set covers core CRUD for models, pages, visuals, and report settings, plus blueprint and schema utilities. Missing features like bookmark management are noted as reserved, and there is no deployment or export tool, but the primary editing lifecycle is well-represented.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers