Microsoft Fabric MCP Server
# Microsoft Fabric MCP Server
A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with Microsoft Fabric and Power BI services.
## Features
- 📊 **Power BI Integration**
- List and query datasets
- Execute DAX queries
- Refresh datasets
- Manage workspaces
- 🏭 **Microsoft Fabric Support**
- Create and manage notebooks
- Upload data to warehouses
- Access Fabric workspaces
## Installation
### Via NPM (Recommended)
```bash
npm install -g @strainprint/microsoft-fabric-mcp
```
### From Source
```bash
git clone https://github.com/strainprint/microsoft-fabric-mcp.git
cd microsoft-fabric-mcp
npm install
npm run build
```
## Configuration
### 1. Azure App Registration
Create an Azure App Registration with the following permissions:
- Power BI Service (Delegated or Application):
- Dataset.Read.All
- Workspace.Read.All
- Dataset.Execute.All (for DAX queries)
### 2. Power BI Tenant Settings
Enable in Power BI Admin Portal → Tenant settings:
- "Allow service principals to use Power BI APIs"
- "Service principals can access read-only admin APIs"
### 3. Environment Variables
Create a `.env` file or set environment variables:
```env
# Required
AZURE_TENANT_ID=your-tenant-id
AZURE_CLIENT_ID=your-client-id
AZURE_CLIENT_SECRET=your-client-secret
# Optional
POWERBI_WORKSPACE_ID=workspace-id # If not set, uses workspace-agnostic endpoints
```
### 4. Claude Desktop Configuration
Add to your Claude Desktop config (`%APPDATA%\Claude\claude_desktop_config.json`):
```json
{
"mcpServers": {
"MicrosoftFabric": {
"command": "npx",
"args": [
"-y",
"@strainprint/microsoft-fabric-mcp"
],
"env": {
"AZURE_TENANT_ID": "your-tenant-id",
"AZURE_CLIENT_ID": "your-client-id",
"AZURE_CLIENT_SECRET": "your-client-secret",
"POWERBI_WORKSPACE_ID": "optional-workspace-id"
}
}
}
}
```
## Usage
Once configured, Claude can use commands like:
- "List my Power BI datasets"
- "Execute this DAX query on dataset X"
- "Refresh the sales dataset"
- "Show me all workspaces"
## Available Tools
### `get_workspaces`
Get all accessible Power BI/Fabric workspaces
### `get_powerbi_datasets`
List all datasets in the configured workspace
### `execute_dax_query`
Execute DAX queries against a dataset
```javascript
{
"datasetId": "dataset-guid",
"query": "EVALUATE TOPN(10, 'Sales')"
}
```
### `refresh_dataset`
Trigger a dataset refresh
```javascript
{
"datasetId": "dataset-guid"
}
```
### `create_notebook`
Create a new Fabric notebook
### `upload_to_datawarehouse`
Upload data to a Fabric data warehouse
## Troubleshooting
### 403 Forbidden Errors
1. **Check Service Principal Permissions**
- Ensure the service principal is added to the Power BI workspace
- Verify API permissions in Azure Portal
2. **Power BI Tenant Settings**
- Confirm service principals are allowed to use Power BI APIs
- Check if the service principal is in the allowed security group
3. **Token Issues**
- Verify client secret hasn't expired
- Ensure correct tenant ID
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
MIT © Strainprint Technologies
## Credits
Developed by [Steve Adams](https://github.com/strainprint) for the MCP community.
Special thanks to Anthropic for the Model Context Protocol specification.
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose targeting different resources and actions in the Microsoft Fabric ecosystem. For example, create_notebook handles notebook creation, execute_dax_query runs queries, get_powerbi_datasets retrieves datasets, get_workspaces lists workspaces, refresh_dataset updates datasets, and upload_to_datawarehouse uploads data, with no overlap or ambiguity between them.
The tool names follow a mostly consistent verb_noun pattern, such as create_notebook, execute_dax_query, and refresh_dataset. However, there is a minor deviation with get_powerbi_datasets and get_workspaces using 'get' instead of 'list', which is slightly inconsistent but still readable and predictable.
With 6 tools, the server is well-scoped for its purpose of managing Microsoft Fabric resources. Each tool earns its place by covering essential operations like data querying, workspace management, dataset handling, and data uploads, without being overly sparse or bloated.
The tool surface provides good coverage for core workflows in Microsoft Fabric, including workspace listing, dataset retrieval and refresh, query execution, notebook creation, and data upload. A minor gap exists in operations like updating or deleting resources, but agents can likely work around this for most tasks.