Tabular Mcp
About
An MCP server for local Tabular Models like PowerBI. It allows LLM clients to debug, analyze, and compose DAX queries by connecting to a local Tabular model instance.
Details
- Author
- jonaolden
- Downloads
- 329
- Categories
- Database, Developer Tools, AI, Other
Jump to
- Execute DAX queries to retrieve model metadata
- Pre-defined, well-documented tools for high accuracy
- Custom DAX queries for debugging and development
- Open source alternative to PowerBI Copilot
- Full model context for LLM-driven analysis
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Tabular McpCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Clone the repository and run dotnet run --project pbi-local-mcp/pbi-local-mcp.csproj discover-pbi to detect Power BI Desktop and populate the .env file with PBI_PORT and PBI_DB_ID. Then configure an MCP server in Visual Studio Code by adding a .vscode/mcp.json file that points to the project with the dotnet run command and references the .env file.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"tabular mcp": {
"tabular-mcp": {
"type": "stdio",
"command": "dotnet",
"envFile": "${workspaceFolder}/.env",
"args": [
"run",
"--project",
"${workspaceFolder}/pbi-local-mcp/pbi-local-mcp.csproj"
]
}
}
}
}
McpServers
{
"tabular-mcp": {
"type": "stdio",
"command": "dotnet",
"envFile": "${workspaceFolder}/.env",
"args": [
"run",
"--project",
"${workspaceFolder}/pbi-local-mcp/pbi-local-mcp.csproj"
]
}
}
An MCP server for local Tabular Models like PowerBI. It allows LLM clients to debug, analyze, and compose DAX queries by connecting to a local Tabular model instance.
This is a Model Context Protocol (MCP) server for locally running Tabular Models, i.e. PowerBI models running on PowerBI Desktop.
This server allows MCP-enabled LLM clients to communicate with your tabular models and help you debug, analyse and compose DAX queries.
Example: Copilot querying Tabular Model via MCP
It connects to a local running instance of Tabular models using theAdomdConnection in ADOMD.NET.
Using this connection, the server then allows clients to executeDAX-queriesand retrieve model metadata (using DMV queries) through pre-defined tools for high accuracy, as well as custom DAX queries for debugging and development.
Specify the Power BI Desktop instance port to connect to (required).
# Example: Connect to Power BI Desktop instance on port 56751 dotnet run -- --port 56751
Protect sensitive data with configurable encryption strategies:
- None(default): No obfuscation
- All: Mask all values
- Dimensions: Mask only text/date fields (keep numeric data visible)
- Facts: Mask only numeric fields (keep dimensional context)
# Example: Protect customer/product names while keeping sales figures visible dotnet run -- --port 56751 --obfuscation-strategy dimensions --encryption-key "YourSecureKey123!"
Automatic row limiting with comprehensive metadata:
- Default 500-row limit (configurable)
- Response includes:totalRows,displayedRows,truncated,hasMore
# Example: Increase row limit for analysis dotnet run -- --port 56751 --max-rows 2000
- Lists all objects in the model (tables, columns, measures, relationships)
- Returns object type, name, and basic metadata
- Retrieves detailed metadata for a specific object (table, column, measure)
- Returns properties, data types, relationships, and dependencies
- Lists available DAX functions with optional filtering by category or origin
- Returns function name, description, interface classification, and origin
- Retrieves comprehensive details for a specific DAX function including full parameter information
- Returns function signature, parameter requirements, return type, and DirectQuery compatibility
- Executes a custom DAX query against the model
- Returns query results with metadata (total rows, truncated status)
Use [ListTables], [GetTableColumns], and [GetTableRelationships] to quickly understand an unfamiliar model's structure without manually clicking through Power BI Desktop.
LLM clients can use [ListMeasures] and [GetMeasureDetails] to learn your existing DAX patterns and suggest consistent new measures that follow your naming conventions and calculation styles.
Combine [RunQuery] with [ValidateDaxSyntax] to iteratively test and refine DAX expressions with immediate feedback on syntax and results.
- Validates DAX query syntax without execution
- Returns syntax correctness and error messages if applicable
- Analyzes DAX query performance and provides optimization suggestions
- Returns execution time, resource usage, and improvement recommendations
- Power BI Desktop (with a PBIX file open for discovery)
- Windows OS
- Visual Studio Code (for MCP server integration)
- .NET 8.0 Runtime
-
Download the releasefrom theReleasesdirectory or GitHub releases page and extract to your preferred location.
Open Power BI Desktopwith a PBIX file you want to work with.
There are several ways to detect Power BI Desktop instances. The easiest is to open Tabular Editor and check the port in the connection string.
Simply add the port (63717 in example above) to your MCP server configuration in the next step (you can ignore the database ID, as this server connects to the default model).
If you don't have Tabular Editor, you can use the included discovery tool to find the running instance and database.
Open PowerShell, navigate to the release directory, and run:
cd path\to\release .\pbi-local-mcp.DiscoverCli.exe
Note: In PowerShell, you must use.\prefix to run executables from the current directory.
- Select the Power BI Desktop instance (identified by port)
- Choose the database/model to connect to
This creates a.envfile withPBI_PORTandPBI_DB_IDin the release directory, which you can reference in your MCP configuration or ignore if you specify the port directly.
- Configure MCP serverin your editor. For VS Code with Roo, create/edit.roo/mcp.json:
{ "mcpServers": { "MCPBI": { "type": "stdio", "command": "path\\to\\release\\mcpbi.exe", "cwd": "path\\to\\release", "args": ["--port", "YOUR_PBI_PORT"], "disabled": false, "alwaysAllow": [ "ListTables", "GetTableDetails", "GetTableColumns", "GetTableRelationships", "ListMeasures", "GetMeasureDetails", "PreviewTableData", "RunQuery", "ValidateDaxSyntax", "AnalyzeQueryPerformance", "ListFunctions", "GetFunctionDetails" ] } } }
git clone <repository-url> cd MCPBI
dotnet run --project pbi-local-mcp/pbi-local-mcp.csproj discover-pbi
Follow prompts to select instance and database.
{ "mcpServers": { "mcpbi-dev": { "type": "stdio", "command": "dotnet", "cwd": "path\\to\\MCPBI", "envFile": "path\\to\\MCPBI\\.env", "args": [ "exec", "path\\to\\MCPBI\\pbi-local-mcp\\bin\\Debug\\net8.0\\pbi-local-mcp.dll" ], "disabled": false, "alwaysAllow": [ "ListTables", "GetTableDetails", "GetTableColumns", "GetTableRelationships", "ListMeasures", "GetMeasureDetails", "PreviewTableData", "RunQuery", "ValidateDaxSyntax", "AnalyzeQueryPerformance", "ListFunctions", "GetFunctionDetails" ] } } }
Replacepath\\to\\MCPBIwith your actual repository path.
- Use either port or envFile: You can specify the Power BI port directly inargsor useenvFileto load from.env.
- Port argument: The--portargument in the release configuration connects to the specific Power BI Desktop instance on that port
- envFile: The development setup usesenvFileto automatically loadPBI_PORTandPBI_DB_IDfrom.env
- alwaysAllow: Lists all tools that can be used without requiring user approval for each invocation
- Working directory: Thecwdparameter sets the working directory where the.envfile is located
An MCP server that enables LLM clients to interact with GDB for debugging and binary analysis.
Connect any MCP-compatible IDE (Cursor, VS Code, Claude Code, Windsurf, JetBrains) to a running Isaac Sim instance and control it with plain-English prompts -- create robots, build scenes, run simulations, and debug physics all from your editor.
Security-first MCP bridge between Claude Code and your Chrome, with HMAC pairing, a per-domain allowlist, and opt-in JS evaluation for driving and debugging live browser sessions.
Hydrolix time-series datalake integration providing schema exploration and query capabilities to LLM-based workflows.
614 million contacts, live SMTP-verified. Invalid emails cost you $0. Connect Argorant with any Agent through CLI, MCP or API and build verified lists in Claude, GPT or Hermes.
Chinese writing toolbox for Claude Code: text analysis, outline generation, GB/T 7714 references,character frequency
A lightweight MCP server for connecting to Apache Doris and other MySQL-compatible databases, providing tools and prompts for LLM applications.
C# SQL Agent MCP server featuring raw SQL input, strict AST validation, and an embedded Admin UI. Eliminates LLM hallucinations and security risks across 6 major databases.
Build and access a personal LLM knowledge base from your editor or client without any infrastructure setup.
Mantora is a local-first MCP observer: a lightweight UI + proxy for inspecting LLM data access (sessions, tool calls, results) with protective defaults.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





