Skip to main content
Glama
Mavline

PowerBI MCP Server

by Mavline

PowerBI MCP Server

Microsoft Power BI を Azure AD API 経由で統合するためのフル機能の Model Context Protocol (MCP) サーバー。

🎯 機能

📖 READ 操作 (7 ツール):

  • get_workspaces - 利用可能なすべてのワークスペースの一覧の取得

  • get_datasets - データセットの一覧の取得 (ワークスペースによるフィルタリング対応)

  • get_reports - レポートの一覧の取得 (ワークスペースによるフィルタリング対応)

  • get_dataset_tables - データセット内のテーブル構造の取得

  • query_dataset - データセットへの DAX クエリの実行

  • refresh_dataset - データセットの更新の開始

  • get_refresh_history - データセットの更新履歴の取得

🏗️ WORKSPACE 管理 (3 ツール):

  • create_workspace - 新しいワークスペースの作成

  • delete_workspace - ワークスペースの削除

  • add_workspace_user - アクセス権を持つユーザーの追加

📊 DATASET 管理 (3 ツール):

  • create_dataset - テーブルとスキーマを持つデータセットの作成

  • delete_dataset - データセットの削除

  • update_dataset - データセット構成の更新

🗃️ TABLE 管理 (3 ツール):

  • create_table - データセット内のテーブルの作成

  • delete_table - テーブルの削除

  • update_table - テーブル構造の変更

📋 COLUMN 管理 (3 ツール):

  • add_column - データ型を持つ列の追加

  • delete_column - 列の削除

  • update_column - 列プロパティの変更

🧮 MEASURE 管理 (3 ツール):

  • create_measure - 計算メジャー (DAX) の作成

  • delete_measure - メジャーの削除

  • update_measure - DAX 式の更新

📈 REPORT 管理 (3 ツール):

  • create_report - 新しいレポートの作成

  • delete_report - レポートの削除

  • clone_report - レポートの複製

📥 DATA インポート (2 ツール):

  • add_table_rows - テーブルへのデータ追加

  • clear_table_rows - テーブルデータのクリア

🌐 GATEWAY 管理 (2 ツール):

  • get_gateways - ゲートウェイの一覧の取得

  • get_gateway_datasources - ゲートウェイのデータソースの取得

合計: PowerBI を完全に管理するための 28 のフル機能 MCP ツール!

サポートされている機能:

  • PowerBI の完全管理: ワークスペースの作成からビジュアルの追加まで

  • Azure AD による認証 (サービス プリンシパル)

  • トークンの自動更新

  • 包括的なエラーハンドリング とロギング

  • 主要なすべてのエンティティに対する CRUD 操作

  • DAX クエリの実行 と計算メジャー

  • データのインポート とテーブル管理

  • 外部データソースのためのゲートウェイ統合

  • ワークスペースと権限の管理

📋 要件

  • Node.js 18+

  • TypeScript

  • Azure AD に登録されたアプリケーション

  • Power BI API の権限

🚀 インストール

1. クローンと依存関係のインストール

git clone <repository-url>
cd powerbi_mcp_server
npm install

2. Azure AD アプリケーションの設定

  1. Azure Portal → App registrations に移動します

  2. 新しいアプリケーションを作成するか、既存のものを使用します

  3. "API permissions" セクションで以下を追加します:

    • Power BI Service の権限:

      • Dataset.Read.All

      • Dataset.ReadWrite.All

      • Report.Read.All

      • Workspace.Read.All

    • Microsoft Graph (オプション):

      • User.Read

  4. "Certificates & secrets" セクションで新しいクライアント シークレットを作成します

  5. Application (client) ID、Directory (tenant) ID、クライアント シークレットをコピーします

3. 環境変数の設定

.env.example.env にコピーして入力します:

cp .env.example .env

.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. プロジェクトのビルド

npm run build

🎮 使用方法

サーバーの起動

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

Claude Desktop との統合

Claude Desktop の設定ファイルに追加します:

{
  "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"
      }
    }
  }
}

MCP 互換クライアントでの使用

接続後、次のツールが利用可能です:

ワークスペースの取得

get_workspaces()

データセットの取得

get_datasets(workspace_id?: string)

DAX クエリの実行

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

テーブル付きの新しいデータセットの作成

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"
)

テーブルへのデータ追加

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"
)

📊 使用例

例 1: すべてのワークスペースの取得

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

例 2: DAX クエリ

// 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]
        ]
      }
    ]
  }
}

🔧 開発

プロジェクト構造

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

開発コマンド

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

🛡️ セキュリティ

  • ✅ 安全なトークンストレージと自動更新

  • ✅ 認証情報やトークンは決してログに記録されません

  • ✅ すべての入力パラメータの検証

  • ✅ すべての API 呼び出しに HTTPS

  • ✅ すべてのシナリオに対するエラーハンドリング

📝 ロギング

サーバーはロギングに Winston を使用します。ログレベルは LOG_LEVEL 変数で設定します:

  • error - エラーのみ

  • warn - 警告とエラー

  • info - 情報メッセージ (デフォルト)

  • debug - 詳細なデバッグ情報

❗ トラブルシューティング

問題: "Authentication failed"

解決策: Azure AD の資格情報と権限が正しいことを確認してください

問題: "Dataset not found"

解決策: サービス プリンシパルがワークスペース/データセットにアクセスできることを確認してください

問題: "DAX query failed"

解決策: DAX クエリの構文とデータセットへのアクセス権限を確認してください

問題: "MCP connection failed"

解決策: サーバーが正しく起動され、stdio 経由でアクセス可能であることを確認してください

📖 参考リソース

📄 ライセンス

ISC License

🤝 プロジェクトへの貢献

pull request と issue の報告を歓迎します。変更を加える前に:

  1. すべてのテストが通ることを確認してください

  2. プロジェクトのコードスタイルに従ってください

  3. 必要に応じてドキュメントを更新してください


Model Context Protocol エコシステムのために作成されました 🚀

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mavline/powerbi_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server