Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Power BI MCP Serverrun a DAX query to get total sales by region from the Finance dataset"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Power BI MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to interact with Power BI workspaces, datasets, reports, and dashboards programmatically.
🚀 Features
Workspace Management: List and manage Power BI workspaces
Report Operations: Access, clone, export, and rebind reports
Dataset Management: Execute DAX queries, refresh datasets, manage schedules
Dashboard Access: List and interact with dashboards
Push Datasets: Create and manage push datasets with real-time data
Authentication: Secure OAuth2 authentication with Microsoft Entra ID
📋 Prerequisites
Node.js (v18 or higher)
npm or yarn
Power BI Pro or Premium license
Microsoft Entra ID app registration
MCP-compatible AI assistant (Claude Desktop, etc.)
🔧 Installation
Clone the repository:
Install dependencies:
Build the project:
⚙️ Configuration
1. Microsoft Entra ID Setup
Register an application in Azure Portal
Configure API permissions for Power BI Service
Note your:
Client ID
Tenant ID
Client Secret (if using app-only auth)
2. Environment Variables
Create a .env file in the root directory (see .env.example for template):
Note: This server uses Authorization Code flow with PKCE (no client secret required). Configure your Azure app with redirect URIs:
http://localhosthttp://127.0.0.1
3. MCP Configuration
Add to your MCP client configuration:
Claude Desktop
VS Code MCP Extension
📖 Usage
Basic Operations
Once configured, your AI assistant can:
List workspaces: "Show me all my Power BI workspaces"
Execute DAX: "Run a DAX query to get sales by region"
Export reports: "Export the quarterly report to PDF"
Refresh datasets: "Refresh the sales dataset"
Manage access: "Add user@example.com to the Analytics workspace"
Example Prompts
🔐 Authentication
The server supports two authentication methods:
Interactive (Recommended): User signs in via browser
App-Only: Uses client credentials (requires admin consent)
On first run, the server will prompt for authentication via your default browser.
📁 Project Structure
🛠️ Development
Running in Development Mode
Running Tests
Building for Production
📊 Supported Power BI Operations
Workspaces (Groups)
List workspaces
Get workspace users
Add/remove users
Reports
List reports
Get report metadata
Clone reports
Export to various formats (PDF, PPTX, PNG)
Rebind to different datasets
Datasets
List datasets
Execute DAX queries
Trigger refreshes
Manage refresh schedules
Get refresh history
Dashboards
List dashboards
Get dashboard tiles
Push Datasets
Create push datasets
Add rows to tables
Clear table data
🔧 Troubleshooting
Common Issues
Authentication fails: Ensure your Azure app registration has proper Power BI permissions
No workspaces found: Verify your account has access to Power BI workspaces
DAX queries fail: Check dataset permissions and query syntax
Export timeouts: Large reports may take time; the server handles async polling
Debug Mode
Enable verbose logging:
📄 License
This project is source-available under a Modified MIT License with Commons Clause - see the LICENSE file for details.
Non-Commercial Use: Free for personal, educational, and internal company use.
Commercial Use: Requires a separate commercial license. Contact [michael@mckinley.consulting] for commercial licensing.
This is not OSI-approved "open source" due to the commercial restrictions, but allows full community use for non-commercial purposes.
🤝 Contributing
We welcome contributions! Please note:
By contributing, you agree that your contributions will be licensed under the same license
For substantial changes, please open an issue first to discuss
Ensure all tests pass and add tests for new features
💬 Support
Issues: GitHub Issues
Commercial Support: [michael@mckinley.consulting]
Documentation: Wiki
🙏 Acknowledgments
Built on the Model Context Protocol specification
Uses Microsoft Power BI REST APIs
Inspired by the MCP community
Note: This is not an official Microsoft product. Power BI is a trademark of Microsoft Corporation.