Labsco
MCP SERVER

Tabular MCP Server

by jonaolden

Query the Power BI model open on your desktop with DAX, read its real metadata, and check a query before running it.

Data Platform: Pipelines, Warehousing, BI & Governance
Summary
The model as it actually is, not as the documentation claims.

Because metadata comes from DMV queries against the live instance, relationships and dependencies match what the report is really using. Two things make this safer than handing an assistant a query prompt: syntax can be checked without touching the model, and the obfuscation strategies let you keep sales figures visible while masking customer and product names. Output is capped at 500 rows by default, and the response says so rather than silently trimming.

What it is

MCPBI connects to a locally running tabular model — a PBIX open in Power BI Desktop — through ADOMD.NET. Metadata comes from DMV queries against the live instance, and it runs the DAX you give it, so an assistant can debug and compose measures against the model as it actually is.

What you get
  • list_objects — every table, column, measure, and relationship in the model
  • get_object_details — properties, data types, relationships, and dependencies for one object
  • run_query — a custom DAX query, answered with the results plus totalRows, displayedRows, truncated, and hasMore
  • validate_query — DAX syntax checked without executing anything
  • analyze_query_performance — execution time, resource usage, and optimization suggestions
  • list_functions and get_function_details — DAX functions filtered by category or origin, with signatures, parameter requirements, return type, and DirectQuery compatibility
  • Obfuscation strategies for sensitive data: mask everything, mask only text and date fields, or mask only numeric fields
  • A row limit that defaults to 500 and is raised with --max-rows
Requirements

Windows, Power BI Desktop with the PBIX file open, and the .NET 8.0 Runtime. Download the prebuilt release and run mcpbi.exe over stdio, or build from source with dotnet build. The server needs the port of the Power BI Desktop instance, passed as --port; the bundled discovery executable finds the running instance and writes PBI_PORT and PBI_DB_ID into a .env file your client can load instead. No account and no key — it connects to a process already running on your machine.

Setup effort

Build from source — clone the repository and build it, then point your client at the binary