Skip to main content
Glama
Mavline

PowerBI MCP Server

by Mavline

PowerBI MCP Server

Voll funktionsfähiger Model Context Protocol (MCP) Server für die Integration mit Microsoft Power BI über die Azure AD API.

🎯 Funktionen

📖 READ-Operationen (7 Tools):

  • get_workspaces – Abrufen der Liste aller verfügbaren Workspaces

  • get_datasets – Abrufen der Liste der Datasets (mit Filtermöglichkeit nach Workspace)

  • get_reports – Abrufen der Liste der Berichte (mit Filtermöglichkeit nach Workspace)

  • get_dataset_tables – Abrufen der Tabellenstruktur des Datasets

  • query_dataset – Ausführen von DAX-Abfragen auf das Dataset

  • refresh_dataset – Starten der Dataset-Aktualisierung

  • get_refresh_history – Abrufen des Aktualisierungsverlaufs des Datasets

🏗️ WORKSPACE-Verwaltung (3 Tools):

  • create_workspace – Erstellen neuer Workspaces

  • delete_workspace – Löschen von Workspaces

  • add_workspace_user – Hinzufügen von Benutzern mit Zugriffsrechten

📊 DATASET-Verwaltung (3 Tools):

  • create_dataset – Erstellen von Datasets mit Tabellen und Schema

  • delete_dataset – Löschen von Datasets

  • update_dataset – Aktualisieren der Dataset-Konfiguration

🗃️ TABLE-Verwaltung (3 Tools):

  • create_table – Erstellen von Tabellen in Datasets

  • delete_table – Löschen von Tabellen

  • update_table – Ändern der Tabellenstruktur

📋 COLUMN-Verwaltung (3 Tools):

  • add_column – Hinzufügen von Spalten mit Datentypen

  • delete_column – Löschen von Spalten

  • update_column – Ändern von Spalteneigenschaften

🧮 MEASURE-Verwaltung (3 Tools):

  • create_measure – Erstellen berechneter Measures (DAX)

  • delete_measure – Löschen von Measures

  • update_measure – Aktualisieren von DAX-Ausdrücken

📈 REPORT-Verwaltung (3 Tools):

  • create_report – Erstellen neuer Berichte

  • delete_report – Löschen von Berichten

  • clone_report – Klonen von Berichten

📥 DATA-Import (2 Tools):

  • add_table_rows – Hinzufügen von Daten zu Tabellen

  • clear_table_rows – Leeren von Tabellendaten

🌐 GATEWAY-Verwaltung (2 Tools):

  • get_gateways – Abrufen der Liste der Gateways

  • get_gateway_datasources – Abrufen der Datenquellen des Gateways

GESAMT: 28 voll funktionsfähige MCP-Tools für die vollständige PowerBI-Verwaltung!

Unterstützte Funktionen:

  • ✅ Vollständige PowerBI-Verwaltung: von der Workspace-Erstellung bis zum Hinzufügen von Visualisierungen

  • ✅ Authentifizierung über Azure AD (Service Principal)

  • ✅ Automatische Token-Aktualisierung

  • ✅ Comprehensive error handling und Protokollierung

  • ✅ CRUD-Operationen für alle wichtigen Entitäten

  • ✅ DAX query execution und berechnete Measures

  • ✅ Datenimport und Tabellenverwaltung

  • ✅ Gateway integration für externe Datenquellen

  • ✅ Workspace- und Berechtigungsverwaltung

Related MCP server: PowerBI MCP Server

📋 Anforderungen

  • Node.js 18+

  • TypeScript

  • Registrierte Anwendung in Azure AD

  • Berechtigungen für die Power BI API

🚀 Installation

1. Klonen und Installieren von Abhängigkeiten

git clone <repository-url>
cd powerbi_mcp_server
npm install

2. Konfiguration der Azure AD-Anwendung

  1. Gehen Sie zum Azure-Portal → App-Registrierungen

  2. Erstellen Sie eine neue Anwendung oder verwenden Sie eine vorhandene

  3. Fügen Sie im Abschnitt „API-Berechtigungen“ hinzu:

    • Power BI Service-Berechtigungen:

      • Dataset.Read.All

      • Dataset.ReadWrite.All

      • Report.Read.All

      • Workspace.Read.All

    • Microsoft Graph (optional):

      • User.Read

  4. Erstellen Sie im Abschnitt „Zertifikate & Geheimnisse“ ein neues Client-Geheimnis

  5. Kopieren Sie die Anwendungs- (Client-) ID, die Verzeichnis- (Mandanten-) ID und das Client-Geheimnis

3. Konfiguration der Umgebungsvariablen

Kopieren Sie .env.example in .env und füllen Sie es aus:

cp .env.example .env

Bearbeiten Sie .env:

# Azure AD Configuration
AZURE_CLIENT_ID=your_application_client_id
AZURE_CLIENT_SECRET=your_client_secret
AZURE_TENANT_ID=your_tenant_id

# PowerBI API Configuration  
POWERBI_API_URL=https://api.powerbi.com/v1.0/myorg

# Logging
LOG_LEVEL=info

4. Projekt erstellen

npm run build

🎮 Verwendung

Server starten

npm start
# или для development:
npm run dev

Integration mit Claude Desktop

Fügen Sie zur Konfigurationsdatei von Claude Desktop hinzu:

{
  "mcpServers": {
    "powerbi": {
      "command": "node",
      "args": ["/path/to/powerbi_mcp_server/build/index.js"],
      "env": {
        "AZURE_CLIENT_ID": "your_client_id",
        "AZURE_CLIENT_SECRET": "your_client_secret", 
        "AZURE_TENANT_ID": "your_tenant_id"
      }
    }
  }
}

Verwendung in MCP-kompatiblen Clients

Nach der Verbindung sind die folgenden Tools verfügbar:

Workspaces abrufen

get_workspaces()

Datasets abrufen

get_datasets(workspace_id?: string)

DAX-Abfrage ausführen

query_dataset(
  dataset_id: "your-dataset-id",
  dax_query: "EVALUATE VALUES('Table'[Column])",
  workspace_id?: "workspace-id"
)

Neues Dataset mit Tabelle erstellen

create_dataset(
  name: "Sales Dataset",
  tables: [{
    name: "Sales",
    columns: [
      { name: "Date", dataType: "Datetime" },
      { name: "Amount", dataType: "Double" },
      { name: "Product", dataType: "String" }
    ],
    measures: [{
      name: "Total Sales",
      expression: "SUM(Sales[Amount])",
      formatString: "Currency"
    }]
  }],
  workspace_id?: "workspace-id"
)

Daten zu einer Tabelle hinzufügen

add_table_rows(
  dataset_id: "dataset-id",
  table_name: "Sales",
  rows: [
    ["2024-01-01", 1000, "Product A"],
    ["2024-01-02", 1500, "Product B"]
  ],
  workspace_id?: "workspace-id"
)

📊 Anwendungsbeispiele

Beispiel 1: Alle Workspaces abrufen

// Tool call: get_workspaces
// Response:
{
  "success": true,
  "data": [
    {
      "id": "workspace-guid",
      "name": "My Workspace", 
      "isReadOnly": false,
      "isOnDedicatedCapacity": true
    }
  ],
  "count": 1
}

Beispiel 2: DAX-Abfrage

// Tool call: query_dataset
{
  "dataset_id": "dataset-guid",
  "dax_query": "EVALUATE TOPN(10, 'Sales', 'Sales'[Amount], DESC)",
  "workspace_id": "workspace-guid"
}

// Response:
{
  "success": true,
  "data": {
    "tables": [
      {
        "rows": [
          ["Product A", 1000],
          ["Product B", 800]
        ]
      }
    ]
  }
}

🔧 Entwicklung

Projektstruktur

src/
├── auth.ts          # Azure AD authentication
├── powerbi-client.ts # PowerBI REST API client  
├── server.ts        # MCP server implementation
├── types.ts         # TypeScript interfaces
├── logger.ts        # Logging configuration
└── index.ts         # Entry point

Entwicklungsbefehle

npm run build    # Сборка TypeScript
npm run dev      # Development режим
npm start        # Production запуск

🛡️ Sicherheit

  • ✅ Secure token storage und automatische Aktualisierung

  • ✅ Credentials oder Token werden niemals protokolliert

  • ✅ Validierung aller eingehenden Parameter

  • ✅ HTTPS für alle API-Aufrufe

  • ✅ Fehlerbehandlung für alle Szenarien

📝 Protokollierung

Der Server verwendet Winston für die Protokollierung. Die Protokollierungsebene wird über die Variable LOG_LEVEL konfiguriert:

  • error – nur Fehler

  • warn – Warnungen und Fehler

  • info – Informationsmeldungen (Standard)

  • debug – detaillierte Debug-Informationen

❗ Troubleshooting

Problem: „Authentication failed“

Lösung: Überprüfen Sie die Azure AD-Anmeldeinformationen und -Berechtigungen

Problem: „Dataset not found“

Lösung: Stellen Sie sicher, dass der Dienstprinzipal Zugriff auf Workspace/Dataset hat

Problem: „DAX query failed“

Lösung: Überprüfen Sie die DAX-Abfragesyntax und die Zugriffsrechte auf das Dataset

Problem: „MCP connection failed“

Lösung: Stellen Sie sicher, dass der Server ordnungsgemäß gestartet und über stdio erreichbar ist

📖 Zusätzliche Ressourcen

📄 Lizenz

ISC License

🤝 Beitrag zum Projekt

Pull Requests und Issue-Meldungen sind willkommen. Bevor Sie Änderungen vornehmen:

  1. Stellen Sie sicher, dass alle Tests bestanden werden

  2. Befolgen Sie den Code-Stil des Projekts

  3. Aktualisieren Sie die Dokumentation bei Bedarf


Erstellt für das Model Context Protocol-Ökosystem 🚀

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to programmatically manage Power BI workspaces, reports, and dashboards while executing DAX queries and triggering dataset refreshes. It supports secure OAuth2 authentication for operations like report exporting, workspace management, and real-time push dataset updates.
    14 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables discovery of Power BI workspaces and datasets, retrieval of semantic model definitions (TMDL), and execution of DAX queries through the Power BI and Microsoft Fabric REST APIs, using MSAL/WAM authentication for secure token caching.
    MIT