Build, audit and repair Power BI Desktop models and PBIP reports with DAX, TMDL and PBIR.
Build and fix Power BI reports by describing what you want. Ask in plain language; the server runs the DAX, edits the model, writes the report pages — and checks its own work afterwards.
It runs as a local process on your own Windows machine, so the free apps are enough: install it in ChatGPT Desktop or Claude Desktop on their free tiers and start asking. No OpenAI or Anthropic API key, no subscription, no server of ours in the middle — and Power BI Desktop is free as well. One click installs it and it prepares its own runtime: no Python, no JSON to edit.

v2.1.2 · 139 tools · Windows · ChatGPT Desktop Free · Claude Desktop Free · Claude Code · Codex
New to the project? Start with what this Power BI MCP is, when to use it, and what it deliberately does not do.
No repository clone, manual DLL download or .mcp.json editing is required.
Pick the line that matches you.
Run the verified one-paste installer from docs/INSTALL.md,
restart ChatGPT Desktop, then open Plugins → Personal and install
Horizun PBI MCP. No OpenAI API key is required.
Download the .mcpb from the
latest release
and double-click it. Claude Desktop supplies the bootstrap runtime; no Claude
Code install or JSON editing is required. It will say the extension is not
verified by Anthropic — what it says about anything installed outside its own
directory — and let you continue.
claude plugin marketplace add HorizunGroup/horizun-pbi-mcp
claude plugin install horizun-pbi-mcp@horizun
codex plugin marketplace add HorizunGroup/horizun-pbi-mcp
Then open /plugins, pick the Horizun marketplace and install
horizun-pbi-mcp.
Same server, same 139 tools, same local runtime — install both and they share it. Pick by what you are doing: Claude Desktop to use Power BI, in chat, one click, free tier. Claude Code to build — it adds the terminal, git and your repo, and loads tool schemas on demand instead of all at once.
On a new PC, the verified one-paste installer prepares the
prerequisites without administrator rights. First setup takes a few minutes:
run pbi_install_status until ready, restart once, and confirm the 139 pbi_* tools appear.
If step 2 answers, everything works.
Audit this PBIP project and explain the highest-risk issues before changing anything.
This measure returns blank for December. Find out why.
Create a report page from this specification, validate it, and show me the layout.
Document every measure in the model and export it to Excel.
| Area | Capabilities |
|---|---|
| Live model | Discover Desktop sessions, run DAX, inspect metadata, refresh, and manage measures through TOM |
| Semantic model | Read and edit TMDL tables, columns, measures, relationships, roles and calculation groups |
| Report authoring | Create pages and visuals, clone templates, arrange layouts, apply themes, bookmarks and interactions |
| Conversion | Convert .pbix to .pbip, migrate supported structures and validate the result |
| Quality | Audit models and reports, document schemas, detect broken references and normalize report structures |
| Delivery | Export verified PDF, Word, Excel and PowerPoint artifacts; ingest SharePoint data read-only |
See the tool catalog for all 139 tools and their risk classifications.
localhost.confirm=true.Full guarantees and failure behavior: security model and recovery guide. Report vulnerabilities privately as described in SECURITY.md.
.pbip project with PBIR enabled, for report-file authoring.Claude Code, Codex and Power BI Desktop are external programs; this project does
not install them. Without Desktop the .pbip tools still work — the live tools
do not.
mode="both" is disabled for dual live/disk writes: Desktop being open and a
PBIP project being safe to edit are mutually exclusive states.| Document | Purpose |
|---|---|
| Installation | Setup, repair, offline installation and MCP client registration |
| Tutorial | First connection through report authoring |
| Power BI MCP overview | Use cases, boundaries, safety and first workflow |
| Tool catalog | All tools, grouped by capability and risk |
| Architecture | Components, boundaries and invariants |
| Security | Threat model and operational guarantees |
| Validation | TMDL/PBIR validation layers and known limits |
| Migration guide | Breaking changes from 1.x to 2.0 |
| Contributing | Development workflow and pull-request requirements |
git clone https://github.com/HorizunGroup/horizun-pbi-mcp.git
cd horizun-pbi-mcp
python -m pip install -e .
python scripts/fetch_libs.py
python scripts/fetch_pbir_schemas.py
python scripts/doctor.py
Before opening a pull request:
python -m pytest -q
python scripts/doctor.py
python -m tests.contract_utils
The MCP contract is frozen and checked against tests/golden/tools_v1.json.
Real .pbix, .pbip, credentials, DLLs, outputs and backups are never
committed. See AGENTS.md for the repository invariants.
Apache License 2.0. See LICENSE and NOTICE.
This package is the one published under the server name below. The registry
reads this line from the README of the PyPI package to confirm that whoever
publishes the metadata also owns the package, so it has to live here rather
than in .mcp/server.json alone.
mcp-name: io.github.HorizunGroup/horizun-pbi-mcp
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx horizun-pbi-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-horizungroup-horizun-pbi-mcp": {
"command": "uvx",
"args": [
"horizun-pbi-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencehorizun-pbi-mcppypiHorizun PBI MCP works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.